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

Side by Side 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 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 "webrtc/pc/dtlssrtptransport.h"
12
13 #include <memory>
14 #include <utility>
15
16 #include "webrtc/p2p/base/dtlstransportinternal.h"
17 #include "webrtc/p2p/base/fakedtlstransport.h"
18 #include "webrtc/p2p/base/fakepackettransport.h"
19 #include "webrtc/pc/rtptransport.h"
20 #include "webrtc/pc/rtptransporttestutil.h"
21 #include "webrtc/rtc_base/asyncpacketsocket.h"
22 #include "webrtc/rtc_base/gunit.h"
23 #include "webrtc/rtc_base/ptr_util.h"
24 #include "webrtc/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 bool rtcp = true;
38 // Setup RtpTransport.
39 auto rtp_transport1 = rtc::MakeUnique<RtpTransport>(rtcp_mux_enabled);
40 auto rtp_transport2 = rtc::MakeUnique<RtpTransport>(rtcp_mux_enabled);
41 fake_ice_transport1_ =
42 rtc::MakeUnique<FakeIceTransport>("fake_ice_transport1", 1);
43 fake_ice_transport2_ =
44 rtc::MakeUnique<FakeIceTransport>("fake_ice_transport2", 1);
45
46 fake_dtls_transport1_ =
47 rtc::MakeUnique<FakeDtlsTransport>(fake_ice_transport1_.get());
48 fake_dtls_transport2_ =
49 rtc::MakeUnique<FakeDtlsTransport>(fake_ice_transport2_.get());
50 rtp_transport1->SetRtpPacketTransport(fake_dtls_transport1_.get());
51 rtp_transport2->SetRtpPacketTransport(fake_dtls_transport2_.get());
52 // Add payload type for RTP packet and RTCP packet.
53 rtp_transport1->AddHandledPayloadType(0x00);
54 rtp_transport2->AddHandledPayloadType(0x00);
55 rtp_transport1->AddHandledPayloadType(0xc9);
56 rtp_transport2->AddHandledPayloadType(0xc9);
57
58 // Setup the SrtpTransport wrapping an RtpTransport.
59 auto srtp_transport1 =
60 rtc::MakeUnique<SrtpTransport>(std::move(rtp_transport1), "content");
61 auto srtp_transport2 =
62 rtc::MakeUnique<SrtpTransport>(std::move(rtp_transport2), "content");
63
64 // Setup the DtlsSrtpTransport wrapping an SrtpTransport.
65 dtls_srtp_transport1_ = rtc::MakeUnique<DtlsSrtpTransport>(
66 std::move(srtp_transport1), "content");
67 dtls_srtp_transport2_ = rtc::MakeUnique<DtlsSrtpTransport>(
68 std::move(srtp_transport2), "content");
69 // Using RtcpMux.
70 dtls_srtp_transport1_->SetDtlsTransport(rtcp, fake_dtls_transport1_.get());
71 dtls_srtp_transport1_->SetDtlsTransport(!rtcp, fake_dtls_transport1_.get());
72 dtls_srtp_transport2_->SetDtlsTransport(rtcp, fake_dtls_transport2_.get());
73 dtls_srtp_transport2_->SetDtlsTransport(!rtcp, fake_dtls_transport2_.get());
74 }
75
76 std::unique_ptr<DtlsSrtpTransport> dtls_srtp_transport1_;
77 std::unique_ptr<DtlsSrtpTransport> dtls_srtp_transport2_;
78 std::unique_ptr<FakeDtlsTransport> fake_dtls_transport1_;
79 std::unique_ptr<FakeDtlsTransport> fake_dtls_transport2_;
80 std::unique_ptr<FakeIceTransport> fake_ice_transport1_;
81 std::unique_ptr<FakeIceTransport> fake_ice_transport2_;
82 };
83
84 TEST_F(DtlsSrtpTransportTest, SetupDtlsSrtp) {
85 // Setting certifications for DtlsTransport.
86 auto cert1 = rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
87 rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT)));
88 fake_dtls_transport1_->SetLocalCertificate(cert1);
89 auto cert2 = rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
90 rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT)));
91 fake_dtls_transport2_->SetLocalCertificate(cert2);
92 fake_dtls_transport1_->SetDestination(fake_dtls_transport2_.get());
93 bool rtcp = true;
94 EXPECT_TRUE(dtls_srtp_transport1_->SetupDtlsSrtp(rtcp));
95 EXPECT_TRUE(dtls_srtp_transport2_->SetupDtlsSrtp(rtcp));
96 EXPECT_TRUE(dtls_srtp_transport1_->SetupDtlsSrtp(!rtcp));
97 EXPECT_TRUE(dtls_srtp_transport2_->SetupDtlsSrtp(!rtcp));
98 EXPECT_TRUE(dtls_srtp_transport1_->IsActive());
99 EXPECT_TRUE(dtls_srtp_transport2_->IsActive());
100 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698