Expose DtlsTransport::remote_ssl_certificates
Bug: chromium:907849
Change-Id: If990d541099edb9a327230e1d78a03b406269885
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131951
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27558}
diff --git a/pc/dtls_transport_unittest.cc b/pc/dtls_transport_unittest.cc
index 0c27c1b..05f5440 100644
--- a/pc/dtls_transport_unittest.cc
+++ b/pc/dtls_transport_unittest.cc
@@ -31,6 +31,7 @@
void OnStateChange(DtlsTransportInformation info) override {
state_change_called_ = true;
states_.push_back(info.state());
+ info_ = info;
}
void OnError(RTCError error) override {}
@@ -44,6 +45,7 @@
}
bool state_change_called_ = false;
+ DtlsTransportInformation info_;
std::vector<DtlsTransportState> states_;
};
@@ -52,9 +54,12 @@
DtlsTransport* transport() { return transport_.get(); }
DtlsTransportObserverInterface* observer() { return &observer_; }
- void CreateTransport() {
+ void CreateTransport(rtc::FakeSSLCertificate* certificate = nullptr) {
auto cricket_transport = absl::make_unique<FakeDtlsTransport>(
"audio", cricket::ICE_CANDIDATE_COMPONENT_RTP);
+ if (certificate) {
+ cricket_transport->SetRemoteSSLCertificate(certificate);
+ }
transport_ =
new rtc::RefCountedObject<DtlsTransport>(std::move(cricket_transport));
}
@@ -113,4 +118,28 @@
kDefaultTimeout);
}
+TEST_F(DtlsTransportTest, CertificateAppearsOnConnect) {
+ rtc::FakeSSLCertificate fake_certificate("fake data");
+ CreateTransport(&fake_certificate);
+ transport()->RegisterObserver(observer());
+ CompleteDtlsHandshake();
+ ASSERT_TRUE_WAIT(observer_.state() == DtlsTransportState::kConnected,
+ kDefaultTimeout);
+ EXPECT_TRUE(observer_.info_.remote_ssl_certificates() != nullptr);
+}
+
+TEST_F(DtlsTransportTest, CertificateDisappearsOnClose) {
+ rtc::FakeSSLCertificate fake_certificate("fake data");
+ CreateTransport(&fake_certificate);
+ transport()->RegisterObserver(observer());
+ CompleteDtlsHandshake();
+ ASSERT_TRUE_WAIT(observer_.state() == DtlsTransportState::kConnected,
+ kDefaultTimeout);
+ EXPECT_TRUE(observer_.info_.remote_ssl_certificates() != nullptr);
+ transport()->Clear();
+ ASSERT_TRUE_WAIT(observer_.state() == DtlsTransportState::kClosed,
+ kDefaultTimeout);
+ EXPECT_FALSE(observer_.info_.remote_ssl_certificates());
+}
+
} // namespace webrtc