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

Side by Side Diff: pc/dtlssrtptransport_unittest.cc

Issue 3012953002: Created the DtlsSrtpTransport.
Patch Set: Resolved the comments. Created 3 years, 2 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 unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright 2017 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "pc/dtlssrtptransport.h"
12
13 #include <memory>
14 #include <utility>
15
16 #include "p2p/base/dtlstransportinternal.h"
17 #include "p2p/base/fakedtlstransport.h"
18 #include "p2p/base/fakepackettransport.h"
19 #include "pc/rtptransport.h"
20 #include "pc/rtptransporttestutil.h"
21 #include "rtc_base/asyncpacketsocket.h"
22 #include "rtc_base/gunit.h"
23 #include "rtc_base/ptr_util.h"
24 #include "rtc_base/sslstreamadapter.h"
25
26 using cricket::FakeDtlsTransport;
27 using cricket::FakeIceTransport;
28 using webrtc::DtlsSrtpTransport;
29 using webrtc::SrtpTransport;
30 using webrtc::RtpTransport;
31
32 class DtlsSrtpTransportTest : public testing::Test,
33 public sigslot::has_slots<> {
34 protected:
35 DtlsSrtpTransportTest() {
36 bool rtcp_mux_enabled = true;
37 // Setup RtpTransport.
38 auto rtp_transport1 = rtc::MakeUnique<RtpTransport>(rtcp_mux_enabled);
39 auto rtp_transport2 = rtc::MakeUnique<RtpTransport>(rtcp_mux_enabled);
40 fake_ice_transport1_ =
41 rtc::MakeUnique<FakeIceTransport>("fake_ice_transport1", 1);
42 fake_ice_transport2_ =
43 rtc::MakeUnique<FakeIceTransport>("fake_ice_transport2", 1);
44
45 fake_dtls_transport1_ =
46 rtc::MakeUnique<FakeDtlsTransport>(fake_ice_transport1_.get());
47 fake_dtls_transport2_ =
48 rtc::MakeUnique<FakeDtlsTransport>(fake_ice_transport2_.get());
49 rtp_transport1->SetRtpPacketTransport(fake_dtls_transport1_.get());
50 rtp_transport2->SetRtpPacketTransport(fake_dtls_transport2_.get());
51 // Add payload type for RTP packet and RTCP packet.
52 rtp_transport1->AddHandledPayloadType(0x00);
53 rtp_transport2->AddHandledPayloadType(0x00);
54 rtp_transport1->AddHandledPayloadType(0xc9);
55 rtp_transport2->AddHandledPayloadType(0xc9);
56
57 // Setup the SrtpTransport wrapping an RtpTransport.
58 auto srtp_transport1 =
59 rtc::MakeUnique<SrtpTransport>(std::move(rtp_transport1), "content");
60 auto srtp_transport2 =
61 rtc::MakeUnique<SrtpTransport>(std::move(rtp_transport2), "content");
62
63 // Setup the DtlsSrtpTransport wrapping an SrtpTransport.
64 dtls_srtp_transport1_ =
65 rtc::MakeUnique<DtlsSrtpTransport>(std::move(srtp_transport1));
66 dtls_srtp_transport2_ =
67 rtc::MakeUnique<DtlsSrtpTransport>(std::move(srtp_transport2));
68 // Using RtcpMux.
69 dtls_srtp_transport1_->SetRtcpDtlsTransport(fake_dtls_transport1_.get());
70 dtls_srtp_transport1_->SetRtpDtlsTransport(fake_dtls_transport1_.get());
71 dtls_srtp_transport2_->SetRtcpDtlsTransport(fake_dtls_transport2_.get());
72 dtls_srtp_transport2_->SetRtpDtlsTransport(fake_dtls_transport2_.get());
73 }
74
75 std::unique_ptr<DtlsSrtpTransport> dtls_srtp_transport1_;
76 std::unique_ptr<DtlsSrtpTransport> dtls_srtp_transport2_;
77 std::unique_ptr<FakeDtlsTransport> fake_dtls_transport1_;
78 std::unique_ptr<FakeDtlsTransport> fake_dtls_transport2_;
79 std::unique_ptr<FakeIceTransport> fake_ice_transport1_;
80 std::unique_ptr<FakeIceTransport> fake_ice_transport2_;
81 };
82
83 TEST_F(DtlsSrtpTransportTest, SetupDtlsSrtp) {
84 // Setting certifications for DtlsTransport.
85 auto cert1 = rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
86 rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT)));
87 fake_dtls_transport1_->SetLocalCertificate(cert1);
88 auto cert2 = rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
89 rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT)));
90 fake_dtls_transport2_->SetLocalCertificate(cert2);
91 fake_dtls_transport1_->SetDestination(fake_dtls_transport2_.get());
92 bool rtcp = true;
93 EXPECT_TRUE(dtls_srtp_transport1_->SetupDtlsSrtp(rtcp));
94 EXPECT_TRUE(dtls_srtp_transport2_->SetupDtlsSrtp(rtcp));
95 EXPECT_TRUE(dtls_srtp_transport1_->SetupDtlsSrtp(!rtcp));
96 EXPECT_TRUE(dtls_srtp_transport2_->SetupDtlsSrtp(!rtcp));
97 EXPECT_TRUE(dtls_srtp_transport1_->IsActive());
98 EXPECT_TRUE(dtls_srtp_transport2_->IsActive());
99 }
Taylor Brandstetter 2017/09/27 23:54:48 Should also test sending some packets; this doesn'
OLDNEW
« 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