webrtc_m130/sdk/android/tests/src/org/webrtc/CryptoOptionsTest.java
Benjamin Wright 8c27ccac75 Promotoing webrtc::CryptoOptions to RTCConfiguration.
With the expanding use cases for webrtc::CryptoOptions it makes more sense for
it to be be available per peer connection instead of only as a factory option.

To support backwards compatability for now this code will support the factory
method of setting crypto options by default. However it will completely
overwrite these settings if an RTCConfiguration.crypto_options is provided.

Got LGTM offline from Sami, adding him to TBR if he has any further comments.

TBR=sakal@webrtc.org

Bug: webrtc:9891
Change-Id: I86914cab69284ad82afd7285fd84ec5f4f2c4986
Reviewed-on: https://webrtc-review.googlesource.com/c/107029
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25375}
2018-10-25 17:59:48 +00:00

75 lines
3.5 KiB
Java

/*
* Copyright 2018 The WebRTC Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
package org.webrtc;
import static com.google.common.truth.Truth.assertThat;
import org.chromium.testing.local.LocalRobolectricTestRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;
import org.webrtc.CryptoOptions;
@RunWith(LocalRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class CryptoOptionsTest {
// Validates the builder builds by default all false options.
@Test
public void testBuilderDefaultsAreFalse() {
CryptoOptions cryptoOptions = CryptoOptions.builder().createCryptoOptions();
assertThat(cryptoOptions.getSrtp().getEnableGcmCryptoSuites()).isFalse();
assertThat(cryptoOptions.getSrtp().getEnableAes128Sha1_32CryptoCipher()).isFalse();
assertThat(cryptoOptions.getSrtp().getEnableEncryptedRtpHeaderExtensions()).isFalse();
assertThat(cryptoOptions.getSFrame().getRequireFrameEncryption()).isFalse();
}
// Validates the builder sets the correct parameters.
@Test
public void testBuilderCorrectlyInitializingGcmCrypto() {
CryptoOptions cryptoOptions =
CryptoOptions.builder().setEnableGcmCryptoSuites(true).createCryptoOptions();
assertThat(cryptoOptions.getSrtp().getEnableGcmCryptoSuites()).isTrue();
assertThat(cryptoOptions.getSrtp().getEnableAes128Sha1_32CryptoCipher()).isFalse();
assertThat(cryptoOptions.getSrtp().getEnableEncryptedRtpHeaderExtensions()).isFalse();
assertThat(cryptoOptions.getSFrame().getRequireFrameEncryption()).isFalse();
}
@Test
public void testBuilderCorrectlyInitializingAes128Sha1_32CryptoCipher() {
CryptoOptions cryptoOptions =
CryptoOptions.builder().setEnableAes128Sha1_32CryptoCipher(true).createCryptoOptions();
assertThat(cryptoOptions.getSrtp().getEnableGcmCryptoSuites()).isFalse();
assertThat(cryptoOptions.getSrtp().getEnableAes128Sha1_32CryptoCipher()).isTrue();
assertThat(cryptoOptions.getSrtp().getEnableEncryptedRtpHeaderExtensions()).isFalse();
assertThat(cryptoOptions.getSFrame().getRequireFrameEncryption()).isFalse();
}
@Test
public void testBuilderCorrectlyInitializingEncryptedRtpHeaderExtensions() {
CryptoOptions cryptoOptions =
CryptoOptions.builder().setEnableEncryptedRtpHeaderExtensions(true).createCryptoOptions();
assertThat(cryptoOptions.getSrtp().getEnableGcmCryptoSuites()).isFalse();
assertThat(cryptoOptions.getSrtp().getEnableAes128Sha1_32CryptoCipher()).isFalse();
assertThat(cryptoOptions.getSrtp().getEnableEncryptedRtpHeaderExtensions()).isTrue();
assertThat(cryptoOptions.getSFrame().getRequireFrameEncryption()).isFalse();
}
@Test
public void testBuilderCorrectlyInitializingRequireFrameEncryption() {
CryptoOptions cryptoOptions =
CryptoOptions.builder().setRequireFrameEncryption(true).createCryptoOptions();
assertThat(cryptoOptions.getSrtp().getEnableGcmCryptoSuites()).isFalse();
assertThat(cryptoOptions.getSrtp().getEnableAes128Sha1_32CryptoCipher()).isFalse();
assertThat(cryptoOptions.getSrtp().getEnableEncryptedRtpHeaderExtensions()).isFalse();
assertThat(cryptoOptions.getSFrame().getRequireFrameEncryption()).isTrue();
}
}