| Index: talk/app/webrtc/webrtcsession_unittest.cc
|
| diff --git a/talk/app/webrtc/webrtcsession_unittest.cc b/talk/app/webrtc/webrtcsession_unittest.cc
|
| index de10bc40a8b432ba79a248d4a55b112f29f0d2e0..acc10f3c08bc2e67657bdc4327a12c23e30a6537 100644
|
| --- a/talk/app/webrtc/webrtcsession_unittest.cc
|
| +++ b/talk/app/webrtc/webrtcsession_unittest.cc
|
| @@ -26,6 +26,7 @@
|
| */
|
|
|
| #include "talk/app/webrtc/audiotrack.h"
|
| +#include "talk/app/webrtc/dtlscertificate.h"
|
| #include "talk/app/webrtc/fakemetricsobserver.h"
|
| #include "talk/app/webrtc/jsepicecandidate.h"
|
| #include "talk/app/webrtc/jsepsessiondescription.h"
|
| @@ -358,7 +359,7 @@ class WebRtcSessionTest : public testing::Test {
|
| }
|
|
|
| void Init(
|
| - DTLSIdentityServiceInterface* identity_service,
|
| + rtc::scoped_refptr<webrtc::DtlsCertificate> certificate,
|
| const PeerConnectionInterface::RTCConfiguration& rtc_configuration) {
|
| ASSERT_TRUE(session_.get() == NULL);
|
| session_.reset(new WebRtcSessionForTest(
|
| @@ -373,7 +374,7 @@ class WebRtcSessionTest : public testing::Test {
|
| observer_.ice_gathering_state_);
|
|
|
| EXPECT_TRUE(session_->Initialize(options_, constraints_.get(),
|
| - identity_service, rtc_configuration));
|
| + certificate, rtc_configuration));
|
| session_->set_metrics_observer(metrics_observer_);
|
| }
|
|
|
| @@ -403,11 +404,9 @@ class WebRtcSessionTest : public testing::Test {
|
| Init(NULL, configuration);
|
| }
|
|
|
| - void InitWithDtls(bool identity_request_should_fail = false) {
|
| - FakeIdentityService* identity_service = new FakeIdentityService();
|
| - identity_service->set_should_fail(identity_request_should_fail);
|
| + void InitWithCertificate() {
|
| PeerConnectionInterface::RTCConfiguration configuration;
|
| - Init(identity_service, configuration);
|
| + Init(FakeIdentityService::GenerateCertificate(), configuration);
|
| }
|
|
|
| void InitWithDtmfCodec() {
|
| @@ -1182,8 +1181,8 @@ class WebRtcSessionTest : public testing::Test {
|
| }
|
|
|
| void VerifyMultipleAsyncCreateDescription(
|
| - bool success, CreateSessionDescriptionRequest::Type type) {
|
| - InitWithDtls(!success);
|
| + CreateSessionDescriptionRequest::Type type) {
|
| + InitWithCertificate();
|
| SetFactoryDtlsSrtp();
|
| if (type == CreateSessionDescriptionRequest::kAnswer) {
|
| cricket::MediaSessionOptions options;
|
| @@ -1206,17 +1205,10 @@ class WebRtcSessionTest : public testing::Test {
|
| }
|
| }
|
|
|
| - WebRtcSessionCreateSDPObserverForTest::State expected_state =
|
| - success ? WebRtcSessionCreateSDPObserverForTest::kSucceeded :
|
| - WebRtcSessionCreateSDPObserverForTest::kFailed;
|
| -
|
| for (int i = 0; i < kNumber; ++i) {
|
| - EXPECT_EQ_WAIT(expected_state, observers[i]->state(), 1000);
|
| - if (success) {
|
| - EXPECT_TRUE(observers[i]->description() != NULL);
|
| - } else {
|
| - EXPECT_TRUE(observers[i]->description() == NULL);
|
| - }
|
| + EXPECT_EQ_WAIT(WebRtcSessionCreateSDPObserverForTest::kSucceeded,
|
| + observers[i]->state(), 1000);
|
| + EXPECT_TRUE(observers[i]->description() != NULL);
|
| }
|
| }
|
|
|
| @@ -1258,8 +1250,8 @@ class WebRtcSessionTest : public testing::Test {
|
| rtc::scoped_refptr<FakeMetricsObserver> metrics_observer_;
|
| };
|
|
|
| -TEST_F(WebRtcSessionTest, TestInitializeWithDtls) {
|
| - InitWithDtls();
|
| +TEST_F(WebRtcSessionTest, TestInitializeWithCertificate) {
|
| + InitWithCertificate();
|
| // SDES is disabled when DTLS is on.
|
| EXPECT_EQ(cricket::SEC_DISABLED, session_->SdesPolicy());
|
| }
|
| @@ -1569,7 +1561,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteNonSdesAnswerWhenSdesOn) {
|
| TEST_F(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| mediastream_signaling_.SendAudioVideoStream1();
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
| SetFactoryDtlsSrtp();
|
| cricket::MediaSessionOptions options;
|
| options.recv_video = true;
|
| @@ -1598,7 +1590,7 @@ TEST_F(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) {
|
| TEST_F(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| mediastream_signaling_.SendAudioVideoStream1();
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
| SetFactoryDtlsSrtp();
|
|
|
| // Verify that we get a crypto fingerprint in the answer.
|
| @@ -1627,7 +1619,7 @@ TEST_F(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) {
|
| // we will fail to set the remote description.
|
| TEST_F(WebRtcSessionTest, TestReceiveNonDtlsOfferWhenDtlsOn) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
| cricket::MediaSessionOptions options;
|
| options.recv_video = true;
|
| options.bundle_enabled = true;
|
| @@ -1651,7 +1643,7 @@ TEST_F(WebRtcSessionTest, TestReceiveNonDtlsOfferWhenDtlsOn) {
|
| // a DTLS fingerprint when DTLS is required.
|
| TEST_F(WebRtcSessionTest, TestSetLocalNonDtlsAnswerWhenDtlsOn) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
| SessionDescriptionInterface* offer = NULL;
|
| SessionDescriptionInterface* answer = NULL;
|
| CreateDtlsOfferAndNonDtlsAnswer(&offer, &answer);
|
| @@ -1669,7 +1661,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| // Enable both SDES and DTLS, so that offer won't be outright rejected as a
|
| // result of using the "UDP/TLS/RTP/SAVPF" profile.
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
| session_->SetSdesPolicy(cricket::SEC_ENABLED);
|
| SessionDescriptionInterface* offer = CreateOffer();
|
| cricket::MediaSessionOptions options;
|
| @@ -1689,7 +1681,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) {
|
| TEST_F(WebRtcSessionTest, TestCreateOfferReceiveAnswerWithoutEncryption) {
|
| mediastream_signaling_.SendAudioVideoStream1();
|
| options_.disable_encryption = true;
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| // Verify that we get a crypto fingerprint in the answer.
|
| SessionDescriptionInterface* offer = CreateOffer();
|
| @@ -1717,7 +1709,7 @@ TEST_F(WebRtcSessionTest, TestCreateOfferReceiveAnswerWithoutEncryption) {
|
| // offer without SDES or DTLS when encryption is disabled.
|
| TEST_F(WebRtcSessionTest, TestCreateAnswerReceiveOfferWithoutEncryption) {
|
| options_.disable_encryption = true;
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| cricket::MediaSessionOptions options;
|
| options.recv_video = true;
|
| @@ -3418,7 +3410,7 @@ TEST_F(WebRtcSessionTest, TestRtpDataChannelConstraintTakesPrecedence) {
|
| webrtc::MediaConstraintsInterface::kEnableRtpDataChannels, true);
|
| options_.disable_sctp_data_channels = false;
|
|
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| SetLocalDescriptionWithDataChannel();
|
| EXPECT_EQ(cricket::DCT_RTP, data_engine_->last_channel_type());
|
| @@ -3427,7 +3419,7 @@ TEST_F(WebRtcSessionTest, TestRtpDataChannelConstraintTakesPrecedence) {
|
| TEST_F(WebRtcSessionTest, TestCreateOfferWithSctpEnabledWithoutStreams) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
|
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer());
|
| EXPECT_TRUE(offer->description()->GetContentByName("data") == NULL);
|
| @@ -3437,7 +3429,7 @@ TEST_F(WebRtcSessionTest, TestCreateOfferWithSctpEnabledWithoutStreams) {
|
| TEST_F(WebRtcSessionTest, TestCreateAnswerWithSctpInOfferAndNoStreams) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| SetFactoryDtlsSrtp();
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| // Create remote offer with SCTP.
|
| cricket::MediaSessionOptions options;
|
| @@ -3457,7 +3449,7 @@ TEST_F(WebRtcSessionTest, TestSctpDataChannelWithoutDtls) {
|
| constraints_.reset(new FakeConstraints());
|
| constraints_->AddOptional(
|
| webrtc::MediaConstraintsInterface::kEnableDtlsSrtp, false);
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| SetLocalDescriptionWithDataChannel();
|
| EXPECT_EQ(cricket::DCT_NONE, data_engine_->last_channel_type());
|
| @@ -3466,7 +3458,7 @@ TEST_F(WebRtcSessionTest, TestSctpDataChannelWithoutDtls) {
|
| TEST_F(WebRtcSessionTest, TestSctpDataChannelWithDtls) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
|
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| SetLocalDescriptionWithDataChannel();
|
| EXPECT_EQ(cricket::DCT_SCTP, data_engine_->last_channel_type());
|
| @@ -3475,7 +3467,7 @@ TEST_F(WebRtcSessionTest, TestSctpDataChannelWithDtls) {
|
| TEST_F(WebRtcSessionTest, TestDisableSctpDataChannels) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| options_.disable_sctp_data_channels = true;
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| SetLocalDescriptionWithDataChannel();
|
| EXPECT_EQ(cricket::DCT_NONE, data_engine_->last_channel_type());
|
| @@ -3486,7 +3478,7 @@ TEST_F(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) {
|
| const int new_send_port = 9998;
|
| const int new_recv_port = 7775;
|
|
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
| SetFactoryDtlsSrtp();
|
|
|
| // By default, don't actually add the codecs to desc_factory_; they don't
|
| @@ -3539,9 +3531,9 @@ TEST_F(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) {
|
| // identity generation is finished.
|
| TEST_F(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| - EXPECT_TRUE(session_->waiting_for_identity());
|
| + EXPECT_TRUE(session_->waiting_for_certificate());
|
| mediastream_signaling_.SendAudioVideoStream1();
|
| rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer());
|
|
|
| @@ -3554,7 +3546,7 @@ TEST_F(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) {
|
| // identity generation is finished.
|
| TEST_F(WebRtcSessionTest, TestCreateAnswerBeforeIdentityRequestReturnSuccess) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
| SetFactoryDtlsSrtp();
|
|
|
| cricket::MediaSessionOptions options;
|
| @@ -3574,42 +3566,21 @@ TEST_F(WebRtcSessionTest, TestCreateAnswerBeforeIdentityRequestReturnSuccess) {
|
| // identity generation is finished.
|
| TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
|
|
| - EXPECT_TRUE_WAIT(!session_->waiting_for_identity(), 1000);
|
| + EXPECT_TRUE_WAIT(!session_->waiting_for_certificate(), 1000);
|
|
|
| rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer());
|
| EXPECT_TRUE(offer != NULL);
|
| }
|
|
|
| -// Verifies that CreateOffer fails when CreateOffer is called after async
|
| -// identity generation fails.
|
| -TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnFailure) {
|
| - MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - InitWithDtls(true);
|
| -
|
| - EXPECT_TRUE_WAIT(!session_->waiting_for_identity(), 1000);
|
| -
|
| - rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer());
|
| - EXPECT_TRUE(offer == NULL);
|
| -}
|
| -
|
| // Verifies that CreateOffer succeeds when Multiple CreateOffer calls are made
|
| // before async identity generation is finished.
|
| TEST_F(WebRtcSessionTest,
|
| TestMultipleCreateOfferBeforeIdentityRequestReturnSuccess) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| VerifyMultipleAsyncCreateDescription(
|
| - true, CreateSessionDescriptionRequest::kOffer);
|
| -}
|
| -
|
| -// Verifies that CreateOffer fails when Multiple CreateOffer calls are made
|
| -// before async identity generation fails.
|
| -TEST_F(WebRtcSessionTest,
|
| - TestMultipleCreateOfferBeforeIdentityRequestReturnFailure) {
|
| - MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - VerifyMultipleAsyncCreateDescription(
|
| - false, CreateSessionDescriptionRequest::kOffer);
|
| + CreateSessionDescriptionRequest::kOffer);
|
| }
|
|
|
| // Verifies that CreateAnswer succeeds when Multiple CreateAnswer calls are made
|
| @@ -3618,16 +3589,7 @@ TEST_F(WebRtcSessionTest,
|
| TestMultipleCreateAnswerBeforeIdentityRequestReturnSuccess) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| VerifyMultipleAsyncCreateDescription(
|
| - true, CreateSessionDescriptionRequest::kAnswer);
|
| -}
|
| -
|
| -// Verifies that CreateAnswer fails when Multiple CreateAnswer calls are made
|
| -// before async identity generation fails.
|
| -TEST_F(WebRtcSessionTest,
|
| - TestMultipleCreateAnswerBeforeIdentityRequestReturnFailure) {
|
| - MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - VerifyMultipleAsyncCreateDescription(
|
| - false, CreateSessionDescriptionRequest::kAnswer);
|
| + CreateSessionDescriptionRequest::kAnswer);
|
| }
|
|
|
| // Verifies that setRemoteDescription fails when DTLS is disabled and the remote
|
| @@ -3730,7 +3692,7 @@ TEST_F(WebRtcSessionTest, TestCombinedAudioVideoBweConstraint) {
|
| // new remote SDP.
|
| TEST_F(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
| SetFactoryDtlsSrtp();
|
|
|
| mediastream_signaling_.UseOptionsAudioOnly();
|
| @@ -3760,7 +3722,7 @@ TEST_F(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) {
|
| // from the remote SDP.
|
| TEST_F(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesSeparated) {
|
| MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
|
| - InitWithDtls();
|
| + InitWithCertificate();
|
| SetFactoryDtlsSrtp();
|
|
|
| mediastream_signaling_.UseOptionsAudioOnly();
|
|
|