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

Unified Diff: pc/dtlssrtptransport_unittest.cc

Issue 3012953002: Created the DtlsSrtpTransport.
Patch Set: Resolved the comments. 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: pc/dtlssrtptransport_unittest.cc
diff --git a/pc/dtlssrtptransport_unittest.cc b/pc/dtlssrtptransport_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b381746cef3b1044b5b183538bb4b3d3320d013b
--- /dev/null
+++ b/pc/dtlssrtptransport_unittest.cc
@@ -0,0 +1,99 @@
+/*
+ * 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 "pc/dtlssrtptransport.h"
+
+#include <memory>
+#include <utility>
+
+#include "p2p/base/dtlstransportinternal.h"
+#include "p2p/base/fakedtlstransport.h"
+#include "p2p/base/fakepackettransport.h"
+#include "pc/rtptransport.h"
+#include "pc/rtptransporttestutil.h"
+#include "rtc_base/asyncpacketsocket.h"
+#include "rtc_base/gunit.h"
+#include "rtc_base/ptr_util.h"
+#include "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;
+ // 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));
+ dtls_srtp_transport2_ =
+ rtc::MakeUnique<DtlsSrtpTransport>(std::move(srtp_transport2));
+ // Using RtcpMux.
+ dtls_srtp_transport1_->SetRtcpDtlsTransport(fake_dtls_transport1_.get());
+ dtls_srtp_transport1_->SetRtpDtlsTransport(fake_dtls_transport1_.get());
+ dtls_srtp_transport2_->SetRtcpDtlsTransport(fake_dtls_transport2_.get());
+ dtls_srtp_transport2_->SetRtpDtlsTransport(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());
+}
Taylor Brandstetter 2017/09/27 23:54:48 Should also test sending some packets; this doesn'
« pc/dtlssrtptransport.cc ('K') | « pc/dtlssrtptransport.cc ('k') | pc/srtptransport.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698