OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
6 #include "components/gcm_driver/gcm_channel_status_request.h" | 6 #include "components/gcm_driver/gcm_channel_status_request.h" |
7 #include "net/url_request/test_url_fetcher_factory.h" | 7 #include "net/url_request/test_url_fetcher_factory.h" |
8 #include "net/url_request/url_request_test_util.h" | 8 #include "net/url_request/url_request_test_util.h" |
9 #include "sync/protocol/experiment_status.pb.h" | 9 #include "sync/protocol/experiment_status.pb.h" |
10 #include "sync/protocol/experiments_specifics.pb.h" | 10 #include "sync/protocol/experiments_specifics.pb.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 NOT_SPECIFIED, | 22 NOT_SPECIFIED, |
23 GCM_ENABLED, | 23 GCM_ENABLED, |
24 GCM_DISABLED, | 24 GCM_DISABLED, |
25 }; | 25 }; |
26 | 26 |
27 void StartRequest(); | 27 void StartRequest(); |
28 void SetResponseStatusAndString(net::HttpStatusCode status_code, | 28 void SetResponseStatusAndString(net::HttpStatusCode status_code, |
29 const std::string& response_body); | 29 const std::string& response_body); |
30 void SetResponseProtoData(GCMStatus status, int poll_interval_seconds); | 30 void SetResponseProtoData(GCMStatus status, int poll_interval_seconds); |
31 void CompleteFetch(); | 31 void CompleteFetch(); |
32 void OnRequestCompleted(bool update_received, | 32 void OnRequestCompleted(bool enabled, int poll_interval_seconds); |
33 bool enabled, | |
34 int poll_interval_seconds); | |
35 | 33 |
36 scoped_ptr<GCMChannelStatusRequest> request_; | 34 scoped_ptr<GCMChannelStatusRequest> request_; |
37 base::MessageLoop message_loop_; | 35 base::MessageLoop message_loop_; |
38 net::TestURLFetcherFactory url_fetcher_factory_; | 36 net::TestURLFetcherFactory url_fetcher_factory_; |
39 scoped_refptr<net::TestURLRequestContextGetter> url_request_context_getter_; | 37 scoped_refptr<net::TestURLRequestContextGetter> url_request_context_getter_; |
40 bool request_callback_invoked_; | 38 bool request_callback_invoked_; |
41 bool update_received_; | |
42 bool enabled_; | 39 bool enabled_; |
43 int poll_interval_seconds_; | 40 int poll_interval_seconds_; |
44 }; | 41 }; |
45 | 42 |
46 GCMChannelStatusRequestTest::GCMChannelStatusRequestTest() | 43 GCMChannelStatusRequestTest::GCMChannelStatusRequestTest() |
47 : url_request_context_getter_(new net::TestURLRequestContextGetter( | 44 : url_request_context_getter_(new net::TestURLRequestContextGetter( |
48 message_loop_.message_loop_proxy())), | 45 message_loop_.message_loop_proxy())), |
49 request_callback_invoked_(false), | 46 request_callback_invoked_(false), |
50 update_received_(false), | |
51 enabled_(true), | 47 enabled_(true), |
52 poll_interval_seconds_(0) { | 48 poll_interval_seconds_(0) { |
53 } | 49 } |
54 | 50 |
55 GCMChannelStatusRequestTest::~GCMChannelStatusRequestTest() { | 51 GCMChannelStatusRequestTest::~GCMChannelStatusRequestTest() { |
56 } | 52 } |
57 | 53 |
58 void GCMChannelStatusRequestTest::StartRequest() { | 54 void GCMChannelStatusRequestTest::StartRequest() { |
59 request_.reset(new GCMChannelStatusRequest( | 55 request_.reset(new GCMChannelStatusRequest( |
60 url_request_context_getter_.get(), | 56 url_request_context_getter_.get(), |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 } | 90 } |
95 | 91 |
96 void GCMChannelStatusRequestTest::CompleteFetch() { | 92 void GCMChannelStatusRequestTest::CompleteFetch() { |
97 request_callback_invoked_ = false; | 93 request_callback_invoked_ = false; |
98 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); | 94 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); |
99 ASSERT_TRUE(fetcher); | 95 ASSERT_TRUE(fetcher); |
100 fetcher->delegate()->OnURLFetchComplete(fetcher); | 96 fetcher->delegate()->OnURLFetchComplete(fetcher); |
101 } | 97 } |
102 | 98 |
103 void GCMChannelStatusRequestTest::OnRequestCompleted( | 99 void GCMChannelStatusRequestTest::OnRequestCompleted( |
104 bool update_received, bool enabled, int poll_interval_seconds) { | 100 bool enabled, int poll_interval_seconds) { |
105 request_callback_invoked_ = true; | 101 request_callback_invoked_ = true; |
106 update_received_ = update_received; | |
107 enabled_ = enabled; | 102 enabled_ = enabled; |
108 poll_interval_seconds_ = poll_interval_seconds; | 103 poll_interval_seconds_ = poll_interval_seconds; |
109 } | 104 } |
110 | 105 |
111 TEST_F(GCMChannelStatusRequestTest, ResponseHttpStatusNotOK) { | 106 TEST_F(GCMChannelStatusRequestTest, ResponseHttpStatusNotOK) { |
112 StartRequest(); | 107 StartRequest(); |
113 SetResponseStatusAndString(net::HTTP_UNAUTHORIZED, ""); | 108 SetResponseStatusAndString(net::HTTP_UNAUTHORIZED, ""); |
114 CompleteFetch(); | 109 CompleteFetch(); |
115 | 110 |
116 EXPECT_FALSE(request_callback_invoked_); | 111 EXPECT_FALSE(request_callback_invoked_); |
117 } | 112 } |
118 | 113 |
119 TEST_F(GCMChannelStatusRequestTest, ResponseEmpty) { | 114 TEST_F(GCMChannelStatusRequestTest, ResponseEmpty) { |
120 StartRequest(); | 115 StartRequest(); |
121 SetResponseStatusAndString(net::HTTP_OK, ""); | 116 SetResponseStatusAndString(net::HTTP_OK, ""); |
122 CompleteFetch(); | 117 CompleteFetch(); |
123 | 118 |
124 EXPECT_TRUE(request_callback_invoked_); | 119 EXPECT_FALSE(request_callback_invoked_); |
125 EXPECT_FALSE(update_received_); | |
126 } | 120 } |
127 | 121 |
128 TEST_F(GCMChannelStatusRequestTest, ResponseNotInProtoFormat) { | 122 TEST_F(GCMChannelStatusRequestTest, ResponseNotInProtoFormat) { |
129 StartRequest(); | 123 StartRequest(); |
130 SetResponseStatusAndString(net::HTTP_OK, "foo"); | 124 SetResponseStatusAndString(net::HTTP_OK, "foo"); |
131 CompleteFetch(); | 125 CompleteFetch(); |
132 | 126 |
133 EXPECT_FALSE(request_callback_invoked_); | 127 EXPECT_FALSE(request_callback_invoked_); |
134 } | 128 } |
135 | 129 |
136 TEST_F(GCMChannelStatusRequestTest, ResponseEmptyProtoData) { | 130 TEST_F(GCMChannelStatusRequestTest, ResponseEmptyProtoData) { |
137 StartRequest(); | 131 StartRequest(); |
138 SetResponseProtoData(NOT_SPECIFIED, 0); | 132 SetResponseProtoData(NOT_SPECIFIED, 0); |
139 CompleteFetch(); | 133 CompleteFetch(); |
140 | 134 |
141 EXPECT_TRUE(request_callback_invoked_); | 135 EXPECT_FALSE(request_callback_invoked_); |
142 EXPECT_FALSE(update_received_); | |
143 } | 136 } |
144 | 137 |
145 TEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatus) { | 138 TEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatus) { |
146 StartRequest(); | 139 StartRequest(); |
147 SetResponseProtoData(GCM_DISABLED, 0); | 140 SetResponseProtoData(GCM_DISABLED, 0); |
148 CompleteFetch(); | 141 CompleteFetch(); |
149 | 142 |
150 EXPECT_TRUE(request_callback_invoked_); | 143 EXPECT_TRUE(request_callback_invoked_); |
151 EXPECT_TRUE(update_received_); | |
152 EXPECT_FALSE(enabled_); | 144 EXPECT_FALSE(enabled_); |
153 EXPECT_EQ( | 145 EXPECT_EQ( |
154 GCMChannelStatusRequest::default_poll_interval_seconds(), | 146 GCMChannelStatusRequest::default_poll_interval_seconds(), |
155 poll_interval_seconds_); | 147 poll_interval_seconds_); |
156 } | 148 } |
157 | 149 |
158 TEST_F(GCMChannelStatusRequestTest, ResponseWithEnabledStatus) { | 150 TEST_F(GCMChannelStatusRequestTest, ResponseWithEnabledStatus) { |
159 StartRequest(); | 151 StartRequest(); |
160 SetResponseProtoData(GCM_ENABLED, 0); | 152 SetResponseProtoData(GCM_ENABLED, 0); |
161 CompleteFetch(); | 153 CompleteFetch(); |
162 | 154 |
163 EXPECT_TRUE(request_callback_invoked_); | 155 EXPECT_TRUE(request_callback_invoked_); |
164 EXPECT_TRUE(update_received_); | |
165 EXPECT_TRUE(enabled_); | 156 EXPECT_TRUE(enabled_); |
166 EXPECT_EQ( | 157 EXPECT_EQ( |
167 GCMChannelStatusRequest::default_poll_interval_seconds(), | 158 GCMChannelStatusRequest::default_poll_interval_seconds(), |
168 poll_interval_seconds_); | 159 poll_interval_seconds_); |
169 } | 160 } |
170 | 161 |
171 TEST_F(GCMChannelStatusRequestTest, ResponseWithPollInterval) { | 162 TEST_F(GCMChannelStatusRequestTest, ResponseWithPollInterval) { |
172 // Setting a poll interval 15 minutes longer than the minimum interval we | 163 // Setting a poll interval 15 minutes longer than the minimum interval we |
173 // enforce. | 164 // enforce. |
174 int poll_interval_seconds = | 165 int poll_interval_seconds = |
175 GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60; | 166 GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60; |
176 StartRequest(); | 167 StartRequest(); |
177 SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds); | 168 SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds); |
178 CompleteFetch(); | 169 CompleteFetch(); |
179 | 170 |
180 EXPECT_TRUE(request_callback_invoked_); | 171 EXPECT_TRUE(request_callback_invoked_); |
181 EXPECT_TRUE(update_received_); | |
182 EXPECT_TRUE(enabled_); | 172 EXPECT_TRUE(enabled_); |
183 EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_); | 173 EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_); |
184 } | 174 } |
185 | 175 |
186 TEST_F(GCMChannelStatusRequestTest, ResponseWithShortPollInterval) { | 176 TEST_F(GCMChannelStatusRequestTest, ResponseWithShortPollInterval) { |
187 // Setting a poll interval 15 minutes shorter than the minimum interval we | 177 // Setting a poll interval 15 minutes shorter than the minimum interval we |
188 // enforce. | 178 // enforce. |
189 int poll_interval_seconds = | 179 int poll_interval_seconds = |
190 GCMChannelStatusRequest::min_poll_interval_seconds() - 15 * 60; | 180 GCMChannelStatusRequest::min_poll_interval_seconds() - 15 * 60; |
191 StartRequest(); | 181 StartRequest(); |
192 SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds); | 182 SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds); |
193 CompleteFetch(); | 183 CompleteFetch(); |
194 | 184 |
195 EXPECT_TRUE(request_callback_invoked_); | 185 EXPECT_TRUE(request_callback_invoked_); |
196 EXPECT_TRUE(update_received_); | |
197 EXPECT_TRUE(enabled_); | 186 EXPECT_TRUE(enabled_); |
198 EXPECT_EQ(GCMChannelStatusRequest::min_poll_interval_seconds(), | 187 EXPECT_EQ(GCMChannelStatusRequest::min_poll_interval_seconds(), |
199 poll_interval_seconds_); | 188 poll_interval_seconds_); |
200 } | 189 } |
201 | 190 |
202 TEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatusAndPollInterval) { | 191 TEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatusAndPollInterval) { |
203 int poll_interval_seconds = | 192 int poll_interval_seconds = |
204 GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60; | 193 GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60; |
205 StartRequest(); | 194 StartRequest(); |
206 SetResponseProtoData(GCM_DISABLED, poll_interval_seconds); | 195 SetResponseProtoData(GCM_DISABLED, poll_interval_seconds); |
207 CompleteFetch(); | 196 CompleteFetch(); |
208 | 197 |
209 EXPECT_TRUE(request_callback_invoked_); | 198 EXPECT_TRUE(request_callback_invoked_); |
210 EXPECT_TRUE(update_received_); | |
211 EXPECT_FALSE(enabled_); | 199 EXPECT_FALSE(enabled_); |
212 EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_); | 200 EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_); |
213 } | 201 } |
214 | 202 |
215 } // namespace gcm | 203 } // namespace gcm |
OLD | NEW |