Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: webrtc/pc/dtlssrtptransport_unittest.cc

Issue 3012953002: Created the DtlsSrtpTransport.
Patch Set: Initial review. Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/pc/dtlssrtptransport_unittest.cc
diff --git a/webrtc/pc/dtlssrtptransport_unittest.cc b/webrtc/pc/dtlssrtptransport_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ccd4ffd02d90b12fe911c0545fea0ee3e82b63d8
--- /dev/null
+++ b/webrtc/pc/dtlssrtptransport_unittest.cc
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2017 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.
+ */
+
+#include "webrtc/pc/dtlssrtptransport.h"
+
+#include <memory>
+#include <utility>
+
+#include "webrtc/p2p/base/dtlstransportinternal.h"
+#include "webrtc/p2p/base/fakedtlstransport.h"
+#include "webrtc/p2p/base/fakepackettransport.h"
+#include "webrtc/pc/rtptransport.h"
+#include "webrtc/pc/rtptransporttestutil.h"
+#include "webrtc/rtc_base/asyncpacketsocket.h"
+#include "webrtc/rtc_base/gunit.h"
+#include "webrtc/rtc_base/ptr_util.h"
+#include "webrtc/rtc_base/sslstreamadapter.h"
+
+using cricket::FakeDtlsTransport;
+using cricket::FakeIceTransport;
+using webrtc::DtlsSrtpTransport;
+using webrtc::SrtpTransport;
+using webrtc::RtpTransport;
+
+class DtlsSrtpTransportTest : public testing::Test,
+ public sigslot::has_slots<> {
+ protected:
+ DtlsSrtpTransportTest() {
+ bool rtcp_mux_enabled = true;
+ bool rtcp = true;
+ // Setup RtpTransport.
+ auto rtp_transport1 = rtc::MakeUnique<RtpTransport>(rtcp_mux_enabled);
+ auto rtp_transport2 = rtc::MakeUnique<RtpTransport>(rtcp_mux_enabled);
+ fake_ice_transport1_ =
+ rtc::MakeUnique<FakeIceTransport>("fake_ice_transport1", 1);
+ fake_ice_transport2_ =
+ rtc::MakeUnique<FakeIceTransport>("fake_ice_transport2", 1);
+
+ fake_dtls_transport1_ =
+ rtc::MakeUnique<FakeDtlsTransport>(fake_ice_transport1_.get());
+ fake_dtls_transport2_ =
+ rtc::MakeUnique<FakeDtlsTransport>(fake_ice_transport2_.get());
+ rtp_transport1->SetRtpPacketTransport(fake_dtls_transport1_.get());
+ rtp_transport2->SetRtpPacketTransport(fake_dtls_transport2_.get());
+ // Add payload type for RTP packet and RTCP packet.
+ rtp_transport1->AddHandledPayloadType(0x00);
+ rtp_transport2->AddHandledPayloadType(0x00);
+ rtp_transport1->AddHandledPayloadType(0xc9);
+ rtp_transport2->AddHandledPayloadType(0xc9);
+
+ // Setup the SrtpTransport wrapping an RtpTransport.
+ auto srtp_transport1 =
+ rtc::MakeUnique<SrtpTransport>(std::move(rtp_transport1), "content");
+ auto srtp_transport2 =
+ rtc::MakeUnique<SrtpTransport>(std::move(rtp_transport2), "content");
+
+ // Setup the DtlsSrtpTransport wrapping an SrtpTransport.
+ dtls_srtp_transport1_ = rtc::MakeUnique<DtlsSrtpTransport>(
+ std::move(srtp_transport1), "content");
+ dtls_srtp_transport2_ = rtc::MakeUnique<DtlsSrtpTransport>(
+ std::move(srtp_transport2), "content");
+ // Using RtcpMux.
+ dtls_srtp_transport1_->SetDtlsTransport(rtcp, fake_dtls_transport1_.get());
+ dtls_srtp_transport1_->SetDtlsTransport(!rtcp, fake_dtls_transport1_.get());
+ dtls_srtp_transport2_->SetDtlsTransport(rtcp, fake_dtls_transport2_.get());
+ dtls_srtp_transport2_->SetDtlsTransport(!rtcp, fake_dtls_transport2_.get());
+ }
+
+ std::unique_ptr<DtlsSrtpTransport> dtls_srtp_transport1_;
+ std::unique_ptr<DtlsSrtpTransport> dtls_srtp_transport2_;
+ std::unique_ptr<FakeDtlsTransport> fake_dtls_transport1_;
+ std::unique_ptr<FakeDtlsTransport> fake_dtls_transport2_;
+ std::unique_ptr<FakeIceTransport> fake_ice_transport1_;
+ std::unique_ptr<FakeIceTransport> fake_ice_transport2_;
+};
+
+TEST_F(DtlsSrtpTransportTest, SetupDtlsSrtp) {
+ // Setting certifications for DtlsTransport.
+ auto cert1 = rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
+ rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT)));
+ fake_dtls_transport1_->SetLocalCertificate(cert1);
+ auto cert2 = rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
+ rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT)));
+ fake_dtls_transport2_->SetLocalCertificate(cert2);
+ fake_dtls_transport1_->SetDestination(fake_dtls_transport2_.get());
+ bool rtcp = true;
+ EXPECT_TRUE(dtls_srtp_transport1_->SetupDtlsSrtp(rtcp));
+ EXPECT_TRUE(dtls_srtp_transport2_->SetupDtlsSrtp(rtcp));
+ EXPECT_TRUE(dtls_srtp_transport1_->SetupDtlsSrtp(!rtcp));
+ EXPECT_TRUE(dtls_srtp_transport2_->SetupDtlsSrtp(!rtcp));
+ EXPECT_TRUE(dtls_srtp_transport1_->IsActive());
+ EXPECT_TRUE(dtls_srtp_transport2_->IsActive());
+}

Powered by Google App Engine
This is Rietveld 408576698