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

Side by Side Diff: webrtc/p2p/base/transportdescriptionfactory_unittest.cc

Issue 1453813005: Fixing some issues with ICE restart signaling. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing typo. Created 5 years, 1 month 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
« no previous file with comments | « webrtc/p2p/base/transportdescriptionfactory.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 f2_.set_secure(cricket::SEC_ENABLED); 65 f2_.set_secure(cricket::SEC_ENABLED);
66 f1_.set_certificate(cert1_); 66 f1_.set_certificate(cert1_);
67 f2_.set_certificate(cert2_); 67 f2_.set_certificate(cert2_);
68 } else { 68 } else {
69 f1_.set_secure(cricket::SEC_DISABLED); 69 f1_.set_secure(cricket::SEC_DISABLED);
70 f2_.set_secure(cricket::SEC_DISABLED); 70 f2_.set_secure(cricket::SEC_DISABLED);
71 } 71 }
72 72
73 cricket::TransportOptions options; 73 cricket::TransportOptions options;
74 // The initial offer / answer exchange. 74 // The initial offer / answer exchange.
75 rtc::scoped_ptr<TransportDescription> offer(f1_.CreateOffer( 75 rtc::scoped_ptr<TransportDescription> offer(
76 options, NULL)); 76 f1_.CreateOffer(options, false, NULL));
77 rtc::scoped_ptr<TransportDescription> answer( 77 rtc::scoped_ptr<TransportDescription> answer(
78 f2_.CreateAnswer(offer.get(), 78 f2_.CreateAnswer(offer.get(), options, false, NULL));
79 options, NULL));
80 79
81 // Create an updated offer where we restart ice. 80 // Create an updated offer where we restart ice.
82 options.ice_restart = true; 81 rtc::scoped_ptr<TransportDescription> restart_offer(
83 rtc::scoped_ptr<TransportDescription> restart_offer(f1_.CreateOffer( 82 f1_.CreateOffer(options, true, offer.get()));
84 options, offer.get()));
85 83
86 VerifyUfragAndPasswordChanged(dtls, offer.get(), restart_offer.get()); 84 VerifyUfragAndPasswordChanged(dtls, offer.get(), restart_offer.get());
87 85
88 // Create a new answer. The transport ufrag and password is changed since 86 // Create a new answer. The transport ufrag and password is changed since
89 // |options.ice_restart == true| 87 // |ice_restart == true|
90 rtc::scoped_ptr<TransportDescription> restart_answer( 88 rtc::scoped_ptr<TransportDescription> restart_answer(
91 f2_.CreateAnswer(restart_offer.get(), options, answer.get())); 89 f2_.CreateAnswer(restart_offer.get(), options, true, answer.get()));
92 ASSERT_TRUE(restart_answer.get() != NULL); 90 ASSERT_TRUE(restart_answer.get() != NULL);
93 91
94 VerifyUfragAndPasswordChanged(dtls, answer.get(), restart_answer.get()); 92 VerifyUfragAndPasswordChanged(dtls, answer.get(), restart_answer.get());
95 } 93 }
96 94
97 void VerifyUfragAndPasswordChanged(bool dtls, 95 void VerifyUfragAndPasswordChanged(bool dtls,
98 const TransportDescription* org_desc, 96 const TransportDescription* org_desc,
99 const TransportDescription* restart_desc) { 97 const TransportDescription* restart_desc) {
100 EXPECT_NE(org_desc->ice_pwd, restart_desc->ice_pwd); 98 EXPECT_NE(org_desc->ice_pwd, restart_desc->ice_pwd);
101 EXPECT_NE(org_desc->ice_ufrag, restart_desc->ice_ufrag); 99 EXPECT_NE(org_desc->ice_ufrag, restart_desc->ice_ufrag);
(...skipping 12 matching lines...) Expand all
114 112
115 protected: 113 protected:
116 TransportDescriptionFactory f1_; 114 TransportDescriptionFactory f1_;
117 TransportDescriptionFactory f2_; 115 TransportDescriptionFactory f2_;
118 116
119 rtc::scoped_refptr<rtc::RTCCertificate> cert1_; 117 rtc::scoped_refptr<rtc::RTCCertificate> cert1_;
120 rtc::scoped_refptr<rtc::RTCCertificate> cert2_; 118 rtc::scoped_refptr<rtc::RTCCertificate> cert2_;
121 }; 119 };
122 120
123 TEST_F(TransportDescriptionFactoryTest, TestOfferDefault) { 121 TEST_F(TransportDescriptionFactoryTest, TestOfferDefault) {
124 scoped_ptr<TransportDescription> desc(f1_.CreateOffer( 122 scoped_ptr<TransportDescription> desc(
125 TransportOptions(), NULL)); 123 f1_.CreateOffer(TransportOptions(), false, NULL));
126 CheckDesc(desc.get(), "", "", "", ""); 124 CheckDesc(desc.get(), "", "", "", "");
127 } 125 }
128 126
129 TEST_F(TransportDescriptionFactoryTest, TestOfferDtls) { 127 TEST_F(TransportDescriptionFactoryTest, TestOfferDtls) {
130 f1_.set_secure(cricket::SEC_ENABLED); 128 f1_.set_secure(cricket::SEC_ENABLED);
131 f1_.set_certificate(cert1_); 129 f1_.set_certificate(cert1_);
132 std::string digest_alg; 130 std::string digest_alg;
133 ASSERT_TRUE(cert1_->ssl_certificate().GetSignatureDigestAlgorithm( 131 ASSERT_TRUE(cert1_->ssl_certificate().GetSignatureDigestAlgorithm(
134 &digest_alg)); 132 &digest_alg));
135 scoped_ptr<TransportDescription> desc(f1_.CreateOffer( 133 scoped_ptr<TransportDescription> desc(
136 TransportOptions(), NULL)); 134 f1_.CreateOffer(TransportOptions(), false, NULL));
137 CheckDesc(desc.get(), "", "", "", digest_alg); 135 CheckDesc(desc.get(), "", "", "", digest_alg);
138 // Ensure it also works with SEC_REQUIRED. 136 // Ensure it also works with SEC_REQUIRED.
139 f1_.set_secure(cricket::SEC_REQUIRED); 137 f1_.set_secure(cricket::SEC_REQUIRED);
140 desc.reset(f1_.CreateOffer(TransportOptions(), NULL)); 138 desc.reset(f1_.CreateOffer(TransportOptions(), false, NULL));
141 CheckDesc(desc.get(), "", "", "", digest_alg); 139 CheckDesc(desc.get(), "", "", "", digest_alg);
142 } 140 }
143 141
144 // Test generating an offer with DTLS fails with no identity. 142 // Test generating an offer with DTLS fails with no identity.
145 TEST_F(TransportDescriptionFactoryTest, TestOfferDtlsWithNoIdentity) { 143 TEST_F(TransportDescriptionFactoryTest, TestOfferDtlsWithNoIdentity) {
146 f1_.set_secure(cricket::SEC_ENABLED); 144 f1_.set_secure(cricket::SEC_ENABLED);
147 scoped_ptr<TransportDescription> desc(f1_.CreateOffer( 145 scoped_ptr<TransportDescription> desc(
148 TransportOptions(), NULL)); 146 f1_.CreateOffer(TransportOptions(), false, NULL));
149 ASSERT_TRUE(desc.get() == NULL); 147 ASSERT_TRUE(desc.get() == NULL);
150 } 148 }
151 149
152 // Test updating an offer with DTLS to pick ICE. 150 // Test updating an offer with DTLS to pick ICE.
153 // The ICE credentials should stay the same in the new offer. 151 // The ICE credentials should stay the same in the new offer.
154 TEST_F(TransportDescriptionFactoryTest, TestOfferDtlsReofferDtls) { 152 TEST_F(TransportDescriptionFactoryTest, TestOfferDtlsReofferDtls) {
155 f1_.set_secure(cricket::SEC_ENABLED); 153 f1_.set_secure(cricket::SEC_ENABLED);
156 f1_.set_certificate(cert1_); 154 f1_.set_certificate(cert1_);
157 std::string digest_alg; 155 std::string digest_alg;
158 ASSERT_TRUE(cert1_->ssl_certificate().GetSignatureDigestAlgorithm( 156 ASSERT_TRUE(cert1_->ssl_certificate().GetSignatureDigestAlgorithm(
159 &digest_alg)); 157 &digest_alg));
160 scoped_ptr<TransportDescription> old_desc(f1_.CreateOffer( 158 scoped_ptr<TransportDescription> old_desc(
161 TransportOptions(), NULL)); 159 f1_.CreateOffer(TransportOptions(), false, NULL));
162 ASSERT_TRUE(old_desc.get() != NULL); 160 ASSERT_TRUE(old_desc.get() != NULL);
163 scoped_ptr<TransportDescription> desc( 161 scoped_ptr<TransportDescription> desc(
164 f1_.CreateOffer(TransportOptions(), old_desc.get())); 162 f1_.CreateOffer(TransportOptions(), false, old_desc.get()));
165 CheckDesc(desc.get(), "", 163 CheckDesc(desc.get(), "",
166 old_desc->ice_ufrag, old_desc->ice_pwd, digest_alg); 164 old_desc->ice_ufrag, old_desc->ice_pwd, digest_alg);
167 } 165 }
168 166
169 TEST_F(TransportDescriptionFactoryTest, TestAnswerDefault) { 167 TEST_F(TransportDescriptionFactoryTest, TestAnswerDefault) {
170 scoped_ptr<TransportDescription> offer(f1_.CreateOffer( 168 scoped_ptr<TransportDescription> offer(
171 TransportOptions(), NULL)); 169 f1_.CreateOffer(TransportOptions(), false, NULL));
172 ASSERT_TRUE(offer.get() != NULL); 170 ASSERT_TRUE(offer.get() != NULL);
173 scoped_ptr<TransportDescription> desc(f2_.CreateAnswer( 171 scoped_ptr<TransportDescription> desc(
174 offer.get(), TransportOptions(), NULL)); 172 f2_.CreateAnswer(offer.get(), TransportOptions(), false, NULL));
175 CheckDesc(desc.get(), "", "", "", ""); 173 CheckDesc(desc.get(), "", "", "", "");
176 desc.reset(f2_.CreateAnswer(offer.get(), TransportOptions(), 174 desc.reset(f2_.CreateAnswer(offer.get(), TransportOptions(), false, NULL));
177 NULL));
178 CheckDesc(desc.get(), "", "", "", ""); 175 CheckDesc(desc.get(), "", "", "", "");
179 } 176 }
180 177
181 // Test that we can update an answer properly; ICE credentials shouldn't change. 178 // Test that we can update an answer properly; ICE credentials shouldn't change.
182 TEST_F(TransportDescriptionFactoryTest, TestReanswer) { 179 TEST_F(TransportDescriptionFactoryTest, TestReanswer) {
183 scoped_ptr<TransportDescription> offer( 180 scoped_ptr<TransportDescription> offer(
184 f1_.CreateOffer(TransportOptions(), NULL)); 181 f1_.CreateOffer(TransportOptions(), false, NULL));
185 ASSERT_TRUE(offer.get() != NULL); 182 ASSERT_TRUE(offer.get() != NULL);
186 scoped_ptr<TransportDescription> old_desc( 183 scoped_ptr<TransportDescription> old_desc(
187 f2_.CreateAnswer(offer.get(), TransportOptions(), NULL)); 184 f2_.CreateAnswer(offer.get(), TransportOptions(), false, NULL));
188 ASSERT_TRUE(old_desc.get() != NULL); 185 ASSERT_TRUE(old_desc.get() != NULL);
189 scoped_ptr<TransportDescription> desc( 186 scoped_ptr<TransportDescription> desc(
190 f2_.CreateAnswer(offer.get(), TransportOptions(), 187 f2_.CreateAnswer(offer.get(), TransportOptions(), false, old_desc.get()));
191 old_desc.get()));
192 ASSERT_TRUE(desc.get() != NULL); 188 ASSERT_TRUE(desc.get() != NULL);
193 CheckDesc(desc.get(), "", 189 CheckDesc(desc.get(), "",
194 old_desc->ice_ufrag, old_desc->ice_pwd, ""); 190 old_desc->ice_ufrag, old_desc->ice_pwd, "");
195 } 191 }
196 192
197 // Test that we handle answering an offer with DTLS with no DTLS. 193 // Test that we handle answering an offer with DTLS with no DTLS.
198 TEST_F(TransportDescriptionFactoryTest, TestAnswerDtlsToNoDtls) { 194 TEST_F(TransportDescriptionFactoryTest, TestAnswerDtlsToNoDtls) {
199 f1_.set_secure(cricket::SEC_ENABLED); 195 f1_.set_secure(cricket::SEC_ENABLED);
200 f1_.set_certificate(cert1_); 196 f1_.set_certificate(cert1_);
201 scoped_ptr<TransportDescription> offer( 197 scoped_ptr<TransportDescription> offer(
202 f1_.CreateOffer(TransportOptions(), NULL)); 198 f1_.CreateOffer(TransportOptions(), false, NULL));
203 ASSERT_TRUE(offer.get() != NULL); 199 ASSERT_TRUE(offer.get() != NULL);
204 scoped_ptr<TransportDescription> desc( 200 scoped_ptr<TransportDescription> desc(
205 f2_.CreateAnswer(offer.get(), TransportOptions(), NULL)); 201 f2_.CreateAnswer(offer.get(), TransportOptions(), false, NULL));
206 CheckDesc(desc.get(), "", "", "", ""); 202 CheckDesc(desc.get(), "", "", "", "");
207 } 203 }
208 204
209 // Test that we handle answering an offer without DTLS if we have DTLS enabled, 205 // Test that we handle answering an offer without DTLS if we have DTLS enabled,
210 // but fail if we require DTLS. 206 // but fail if we require DTLS.
211 TEST_F(TransportDescriptionFactoryTest, TestAnswerNoDtlsToDtls) { 207 TEST_F(TransportDescriptionFactoryTest, TestAnswerNoDtlsToDtls) {
212 f2_.set_secure(cricket::SEC_ENABLED); 208 f2_.set_secure(cricket::SEC_ENABLED);
213 f2_.set_certificate(cert2_); 209 f2_.set_certificate(cert2_);
214 scoped_ptr<TransportDescription> offer( 210 scoped_ptr<TransportDescription> offer(
215 f1_.CreateOffer(TransportOptions(), NULL)); 211 f1_.CreateOffer(TransportOptions(), false, NULL));
216 ASSERT_TRUE(offer.get() != NULL); 212 ASSERT_TRUE(offer.get() != NULL);
217 scoped_ptr<TransportDescription> desc( 213 scoped_ptr<TransportDescription> desc(
218 f2_.CreateAnswer(offer.get(), TransportOptions(), NULL)); 214 f2_.CreateAnswer(offer.get(), TransportOptions(), false, NULL));
219 CheckDesc(desc.get(), "", "", "", ""); 215 CheckDesc(desc.get(), "", "", "", "");
220 f2_.set_secure(cricket::SEC_REQUIRED); 216 f2_.set_secure(cricket::SEC_REQUIRED);
221 desc.reset(f2_.CreateAnswer(offer.get(), TransportOptions(), 217 desc.reset(f2_.CreateAnswer(offer.get(), TransportOptions(), false, NULL));
222 NULL));
223 ASSERT_TRUE(desc.get() == NULL); 218 ASSERT_TRUE(desc.get() == NULL);
224 } 219 }
225 220
226 // Test that we handle answering an DTLS offer with DTLS, both if we have 221 // Test that we handle answering an DTLS offer with DTLS, both if we have
227 // DTLS enabled and required. 222 // DTLS enabled and required.
228 TEST_F(TransportDescriptionFactoryTest, TestAnswerDtlsToDtls) { 223 TEST_F(TransportDescriptionFactoryTest, TestAnswerDtlsToDtls) {
229 f1_.set_secure(cricket::SEC_ENABLED); 224 f1_.set_secure(cricket::SEC_ENABLED);
230 f1_.set_certificate(cert1_); 225 f1_.set_certificate(cert1_);
231 226
232 f2_.set_secure(cricket::SEC_ENABLED); 227 f2_.set_secure(cricket::SEC_ENABLED);
233 f2_.set_certificate(cert2_); 228 f2_.set_certificate(cert2_);
234 // f2_ produces the answer that is being checked in this test, so the 229 // f2_ produces the answer that is being checked in this test, so the
235 // answer must contain fingerprint lines with cert2_'s digest algorithm. 230 // answer must contain fingerprint lines with cert2_'s digest algorithm.
236 std::string digest_alg2; 231 std::string digest_alg2;
237 ASSERT_TRUE(cert2_->ssl_certificate().GetSignatureDigestAlgorithm( 232 ASSERT_TRUE(cert2_->ssl_certificate().GetSignatureDigestAlgorithm(
238 &digest_alg2)); 233 &digest_alg2));
239 234
240 scoped_ptr<TransportDescription> offer( 235 scoped_ptr<TransportDescription> offer(
241 f1_.CreateOffer(TransportOptions(), NULL)); 236 f1_.CreateOffer(TransportOptions(), false, NULL));
242 ASSERT_TRUE(offer.get() != NULL); 237 ASSERT_TRUE(offer.get() != NULL);
243 scoped_ptr<TransportDescription> desc( 238 scoped_ptr<TransportDescription> desc(
244 f2_.CreateAnswer(offer.get(), TransportOptions(), NULL)); 239 f2_.CreateAnswer(offer.get(), TransportOptions(), false, NULL));
245 CheckDesc(desc.get(), "", "", "", digest_alg2); 240 CheckDesc(desc.get(), "", "", "", digest_alg2);
246 f2_.set_secure(cricket::SEC_REQUIRED); 241 f2_.set_secure(cricket::SEC_REQUIRED);
247 desc.reset(f2_.CreateAnswer(offer.get(), TransportOptions(), 242 desc.reset(f2_.CreateAnswer(offer.get(), TransportOptions(), false, NULL));
248 NULL));
249 CheckDesc(desc.get(), "", "", "", digest_alg2); 243 CheckDesc(desc.get(), "", "", "", digest_alg2);
250 } 244 }
251 245
252 // Test that ice ufrag and password is changed in an updated offer and answer 246 // Test that ice ufrag and password is changed in an updated offer and answer
253 // if |TransportDescriptionOptions::ice_restart| is true. 247 // if |TransportDescriptionOptions::ice_restart| is true.
254 TEST_F(TransportDescriptionFactoryTest, TestIceRestart) { 248 TEST_F(TransportDescriptionFactoryTest, TestIceRestart) {
255 TestIceRestart(false); 249 TestIceRestart(false);
256 } 250 }
257 251
258 // Test that ice ufrag and password is changed in an updated offer and answer 252 // Test that ice ufrag and password is changed in an updated offer and answer
259 // if |TransportDescriptionOptions::ice_restart| is true and DTLS is enabled. 253 // if |TransportDescriptionOptions::ice_restart| is true and DTLS is enabled.
260 TEST_F(TransportDescriptionFactoryTest, TestIceRestartWithDtls) { 254 TEST_F(TransportDescriptionFactoryTest, TestIceRestartWithDtls) {
261 TestIceRestart(true); 255 TestIceRestart(true);
262 } 256 }
OLDNEW
« no previous file with comments | « webrtc/p2p/base/transportdescriptionfactory.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698