Index: talk/app/webrtc/webrtcsession_unittest.cc |
diff --git a/talk/app/webrtc/webrtcsession_unittest.cc b/talk/app/webrtc/webrtcsession_unittest.cc |
index a26954658045ff13753a5c6276c6fc6306277f5f..6d9ae414797b6f2ba988bf301504c3c937707ea8 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" |
@@ -359,6 +360,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( |
@@ -372,42 +374,47 @@ class WebRtcSessionTest : public testing::Test { |
EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew, |
observer_.ice_gathering_state_); |
- EXPECT_TRUE(session_->Initialize(options_, constraints_.get(), |
- identity_service, rtc_configuration)); |
+ if (!certificate) { |
+ EXPECT_TRUE(session_->Initialize(options_, constraints_.get(), |
+ identity_service, rtc_configuration)); |
+ } else { |
+ EXPECT_TRUE(session_->Initialize(options_, constraints_.get(), |
+ certificate, rtc_configuration)); |
+ } |
session_->set_metrics_observer(metrics_observer_); |
} |
void Init() { |
PeerConnectionInterface::RTCConfiguration configuration; |
- Init(NULL, configuration); |
+ Init(nullptr, nullptr, configuration); |
} |
void InitWithIceTransport( |
PeerConnectionInterface::IceTransportsType ice_transport_type) { |
PeerConnectionInterface::RTCConfiguration configuration; |
configuration.type = ice_transport_type; |
- Init(NULL, configuration); |
+ Init(nullptr, nullptr, configuration); |
} |
void InitWithBundlePolicy( |
PeerConnectionInterface::BundlePolicy bundle_policy) { |
PeerConnectionInterface::RTCConfiguration configuration; |
configuration.bundle_policy = bundle_policy; |
- Init(NULL, configuration); |
+ Init(nullptr, nullptr, configuration); |
} |
void InitWithRtcpMuxPolicy( |
PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy) { |
PeerConnectionInterface::RTCConfiguration configuration; |
configuration.rtcp_mux_policy = rtcp_mux_policy; |
- Init(NULL, configuration); |
+ Init(nullptr, nullptr, configuration); |
} |
void InitWithDtls(bool identity_request_should_fail = false) { |
FakeIdentityService* identity_service = new FakeIdentityService(); |
identity_service->set_should_fail(identity_request_should_fail); |
PeerConnectionInterface::RTCConfiguration configuration; |
- Init(identity_service, configuration); |
+ Init(identity_service, nullptr, configuration); |
} |
void InitWithDtmfCodec() { |
@@ -538,8 +545,10 @@ class WebRtcSessionTest : public testing::Test { |
desc_factory_->set_secure(cricket::SEC_DISABLED); |
std::string identity_name = "WebRTC" + |
rtc::ToString(rtc::CreateRandomId()); |
- identity_.reset(rtc::SSLIdentity::Generate(identity_name)); |
- tdesc_factory_->set_identity(identity_.get()); |
+ certificate_ = webrtc::DtlsCertificate::Create( |
+ rtc::scoped_ptr<rtc::SSLIdentity>( |
+ rtc::SSLIdentity::Generate(identity_name)).Pass()); |
+ tdesc_factory_->set_certificate(certificate_); |
tdesc_factory_->set_secure(cricket::SEC_REQUIRED); |
} |
@@ -1237,7 +1246,7 @@ class WebRtcSessionTest : public testing::Test { |
cricket::FakeDeviceManager* device_manager_; |
rtc::scoped_ptr<cricket::ChannelManager> channel_manager_; |
rtc::scoped_ptr<cricket::TransportDescriptionFactory> tdesc_factory_; |
- rtc::scoped_ptr<rtc::SSLIdentity> identity_; |
+ rtc::scoped_refptr<webrtc::DtlsCertificate> certificate_; |
rtc::scoped_ptr<cricket::MediaSessionDescriptionFactory> desc_factory_; |
rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; |
rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; |
@@ -3592,13 +3601,25 @@ TEST_F(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) { |
EXPECT_EQ(new_recv_port, portnum); |
} |
+// Verifies that if a certificate is provided it is the one that will be used. |
+TEST_F(WebRtcSessionTest, TestUsesProvidedCertificate) { |
+ rtc::scoped_refptr<webrtc::DtlsCertificate> certificate = |
+ FakeIdentityService::GenerateCertificate(); |
+ |
+ PeerConnectionInterface::RTCConfiguration configuration; |
+ Init(nullptr, certificate, configuration); |
+ EXPECT_TRUE_WAIT(!session_->waiting_for_certificate(), 1000); |
+ |
+ EXPECT_EQ(session_->get_certificate(), certificate); |
+} |
+ |
// Verifies that CreateOffer succeeds when CreateOffer is called before async |
// identity generation is finished. |
TEST_F(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) { |
MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
InitWithDtls(); |
- EXPECT_TRUE(session_->waiting_for_identity()); |
+ EXPECT_TRUE(session_->waiting_for_certificate()); |
mediastream_signaling_.SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
@@ -3633,7 +3654,7 @@ TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) { |
MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
InitWithDtls(); |
- 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); |
@@ -3645,7 +3666,7 @@ TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnFailure) { |
MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
InitWithDtls(true); |
- 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); |