OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2012 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 EXPECT_EQ(desc->identity_fingerprint->algorithm, dtls_alg); | 52 EXPECT_EQ(desc->identity_fingerprint->algorithm, dtls_alg); |
53 EXPECT_GT(desc->identity_fingerprint->digest.size(), 0U); | 53 EXPECT_GT(desc->identity_fingerprint->digest.size(), 0U); |
54 } | 54 } |
55 } | 55 } |
56 | 56 |
57 // This test ice restart by doing two offer answer exchanges. On the second | 57 // This test ice restart by doing two offer answer exchanges. On the second |
58 // exchange ice is restarted. The test verifies that the ufrag and password | 58 // exchange ice is restarted. The test verifies that the ufrag and password |
59 // in the offer and answer is changed. | 59 // in the offer and answer is changed. |
60 // If |dtls| is true, the test verifies that the finger print is not changed. | 60 // If |dtls| is true, the test verifies that the finger print is not changed. |
61 void TestIceRestart(bool dtls) { | 61 void TestIceRestart(bool dtls) { |
62 if (dtls) { | 62 SetDtls(dtls); |
63 f1_.set_secure(cricket::SEC_ENABLED); | |
64 f2_.set_secure(cricket::SEC_ENABLED); | |
65 f1_.set_certificate(cert1_); | |
66 f2_.set_certificate(cert2_); | |
67 } else { | |
68 f1_.set_secure(cricket::SEC_DISABLED); | |
69 f2_.set_secure(cricket::SEC_DISABLED); | |
70 } | |
71 | |
72 cricket::TransportOptions options; | 63 cricket::TransportOptions options; |
73 // The initial offer / answer exchange. | 64 // The initial offer / answer exchange. |
74 std::unique_ptr<TransportDescription> offer(f1_.CreateOffer(options, NULL)); | 65 std::unique_ptr<TransportDescription> offer(f1_.CreateOffer(options, NULL)); |
75 std::unique_ptr<TransportDescription> answer( | 66 std::unique_ptr<TransportDescription> answer( |
76 f2_.CreateAnswer(offer.get(), options, NULL)); | 67 f2_.CreateAnswer(offer.get(), options, NULL)); |
77 | 68 |
78 // Create an updated offer where we restart ice. | 69 // Create an updated offer where we restart ice. |
79 options.ice_restart = true; | 70 options.ice_restart = true; |
80 std::unique_ptr<TransportDescription> restart_offer( | 71 std::unique_ptr<TransportDescription> restart_offer( |
81 f1_.CreateOffer(options, offer.get())); | 72 f1_.CreateOffer(options, offer.get())); |
(...skipping 20 matching lines...) Expand all Loading... |
102 restart_desc->ice_pwd.size()); | 93 restart_desc->ice_pwd.size()); |
103 // If DTLS is enabled, make sure the finger print is unchanged. | 94 // If DTLS is enabled, make sure the finger print is unchanged. |
104 if (dtls) { | 95 if (dtls) { |
105 EXPECT_FALSE( | 96 EXPECT_FALSE( |
106 org_desc->identity_fingerprint->GetRfc4572Fingerprint().empty()); | 97 org_desc->identity_fingerprint->GetRfc4572Fingerprint().empty()); |
107 EXPECT_EQ(org_desc->identity_fingerprint->GetRfc4572Fingerprint(), | 98 EXPECT_EQ(org_desc->identity_fingerprint->GetRfc4572Fingerprint(), |
108 restart_desc->identity_fingerprint->GetRfc4572Fingerprint()); | 99 restart_desc->identity_fingerprint->GetRfc4572Fingerprint()); |
109 } | 100 } |
110 } | 101 } |
111 | 102 |
| 103 void TestIceRenomination(bool dtls) { |
| 104 SetDtls(dtls); |
| 105 |
| 106 cricket::TransportOptions options; |
| 107 // The initial offer / answer exchange. |
| 108 std::unique_ptr<TransportDescription> offer( |
| 109 f1_.CreateOffer(options, nullptr)); |
| 110 std::unique_ptr<TransportDescription> answer( |
| 111 f2_.CreateAnswer(offer.get(), options, nullptr)); |
| 112 VerifyRenomination(offer.get(), false); |
| 113 VerifyRenomination(answer.get(), false); |
| 114 |
| 115 options.enable_ice_renomination = true; |
| 116 std::unique_ptr<TransportDescription> renomination_offer( |
| 117 f1_.CreateOffer(options, offer.get())); |
| 118 VerifyRenomination(renomination_offer.get(), true); |
| 119 |
| 120 std::unique_ptr<TransportDescription> renomination_answer( |
| 121 f2_.CreateAnswer(renomination_offer.get(), options, answer.get())); |
| 122 VerifyRenomination(renomination_answer.get(), true); |
| 123 } |
| 124 |
112 protected: | 125 protected: |
| 126 void VerifyRenomination(TransportDescription* desc, |
| 127 bool renomination_expected) { |
| 128 ASSERT_TRUE(desc != nullptr); |
| 129 std::vector<std::string>& options = desc->transport_options; |
| 130 auto iter = std::find(options.begin(), options.end(), |
| 131 cricket::ICE_RENOMINATION_STR); |
| 132 EXPECT_EQ(renomination_expected, iter != options.end()); |
| 133 } |
| 134 |
| 135 void SetDtls(bool dtls) { |
| 136 if (dtls) { |
| 137 f1_.set_secure(cricket::SEC_ENABLED); |
| 138 f2_.set_secure(cricket::SEC_ENABLED); |
| 139 f1_.set_certificate(cert1_); |
| 140 f2_.set_certificate(cert2_); |
| 141 } else { |
| 142 f1_.set_secure(cricket::SEC_DISABLED); |
| 143 f2_.set_secure(cricket::SEC_DISABLED); |
| 144 } |
| 145 } |
| 146 |
113 TransportDescriptionFactory f1_; | 147 TransportDescriptionFactory f1_; |
114 TransportDescriptionFactory f2_; | 148 TransportDescriptionFactory f2_; |
115 | 149 |
116 rtc::scoped_refptr<rtc::RTCCertificate> cert1_; | 150 rtc::scoped_refptr<rtc::RTCCertificate> cert1_; |
117 rtc::scoped_refptr<rtc::RTCCertificate> cert2_; | 151 rtc::scoped_refptr<rtc::RTCCertificate> cert2_; |
118 }; | 152 }; |
119 | 153 |
120 TEST_F(TransportDescriptionFactoryTest, TestOfferDefault) { | 154 TEST_F(TransportDescriptionFactoryTest, TestOfferDefault) { |
121 std::unique_ptr<TransportDescription> desc( | 155 std::unique_ptr<TransportDescription> desc( |
122 f1_.CreateOffer(TransportOptions(), NULL)); | 156 f1_.CreateOffer(TransportOptions(), NULL)); |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 // if |TransportDescriptionOptions::ice_restart| is true. | 283 // if |TransportDescriptionOptions::ice_restart| is true. |
250 TEST_F(TransportDescriptionFactoryTest, TestIceRestart) { | 284 TEST_F(TransportDescriptionFactoryTest, TestIceRestart) { |
251 TestIceRestart(false); | 285 TestIceRestart(false); |
252 } | 286 } |
253 | 287 |
254 // Test that ice ufrag and password is changed in an updated offer and answer | 288 // Test that ice ufrag and password is changed in an updated offer and answer |
255 // if |TransportDescriptionOptions::ice_restart| is true and DTLS is enabled. | 289 // if |TransportDescriptionOptions::ice_restart| is true and DTLS is enabled. |
256 TEST_F(TransportDescriptionFactoryTest, TestIceRestartWithDtls) { | 290 TEST_F(TransportDescriptionFactoryTest, TestIceRestartWithDtls) { |
257 TestIceRestart(true); | 291 TestIceRestart(true); |
258 } | 292 } |
| 293 |
| 294 // Test that ice renomination is set in an updated offer and answer |
| 295 // if |TransportDescriptionOptions::enable_ice_renomination| is true. |
| 296 TEST_F(TransportDescriptionFactoryTest, TestIceRenomination) { |
| 297 TestIceRenomination(false); |
| 298 } |
| 299 |
| 300 // Test that ice renomination is set in an updated offer and answer |
| 301 // if |TransportDescriptionOptions::enable_ice_renomination| is true and DTLS |
| 302 // is enabled. |
| 303 TEST_F(TransportDescriptionFactoryTest, TestIceRenominationWithDtls) { |
| 304 TestIceRenomination(true); |
| 305 } |
OLD | NEW |