Index: net/websockets/websocket_job_unittest.cc |
=================================================================== |
--- net/websockets/websocket_job_unittest.cc (revision 81709) |
+++ net/websockets/websocket_job_unittest.cc (working copy) |
@@ -13,6 +13,7 @@ |
#include "net/base/cookie_store.h" |
#include "net/base/net_errors.h" |
#include "net/base/sys_addrinfo.h" |
+#include "net/base/transport_security_state.h" |
#include "net/socket_stream/socket_stream.h" |
#include "net/url_request/url_request_context.h" |
#include "net/websockets/websocket_job.h" |
@@ -156,11 +157,18 @@ |
CookiePolicy* cookie_policy) { |
set_cookie_store(cookie_store); |
set_cookie_policy(cookie_policy); |
+ transport_security_state_ = new TransportSecurityState(); |
+ set_transport_security_state(transport_security_state_.get()); |
+ TransportSecurityState::DomainState state; |
+ state.expiry = base::Time::Now() + base::TimeDelta::FromSeconds(1000); |
+ transport_security_state_->EnableHost("upgrademe.com", state); |
} |
private: |
friend class base::RefCountedThreadSafe<MockURLRequestContext>; |
virtual ~MockURLRequestContext() {} |
+ |
+ scoped_refptr<TransportSecurityState> transport_security_state_; |
}; |
class WebSocketJobTest : public PlatformTest { |
@@ -209,6 +217,9 @@ |
websocket_->delegate_ = NULL; |
websocket_->socket_ = NULL; |
} |
+ SocketStream* GetSocket(SocketStreamJob* job) { |
+ return job->socket_.get(); |
+ } |
scoped_refptr<MockCookieStore> cookie_store_; |
scoped_ptr<MockCookiePolicy> cookie_policy_; |
@@ -494,4 +505,19 @@ |
CloseWebSocketJob(); |
} |
+TEST_F(WebSocketJobTest, HSTSUpgrade) { |
+ GURL url("ws://upgrademe.com/"); |
+ MockSocketStreamDelegate delegate; |
+ scoped_refptr<SocketStreamJob> job = SocketStreamJob::CreateSocketStreamJob( |
+ url, &delegate, *context_.get()); |
+ EXPECT_TRUE(GetSocket(job.get())->is_secure()); |
+ job->DetachDelegate(); |
+ |
+ url = GURL("ws://donotupgrademe.com/"); |
+ job = SocketStreamJob::CreateSocketStreamJob( |
+ url, &delegate, *context_.get()); |
+ EXPECT_FALSE(GetSocket(job.get())->is_secure()); |
+ job->DetachDelegate(); |
+} |
+ |
} // namespace net |