| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <utility> | 5 #include <utility> |
| 6 | 6 |
| 7 #include "base/test/values_test_util.h" | 7 #include "base/test/values_test_util.h" |
| 8 #include "extensions/common/manifest_constants.h" | 8 #include "extensions/common/manifest_constants.h" |
| 9 #include "extensions/common/manifest_handlers/oauth2_manifest_handler.h" | 9 #include "extensions/common/manifest_handlers/oauth2_manifest_handler.h" |
| 10 #include "extensions/common/manifest_test.h" | 10 #include "extensions/common/manifest_test.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 AUTO_APPROVE_TRUE, | 35 AUTO_APPROVE_TRUE, |
| 36 AUTO_APPROVE_INVALID | 36 AUTO_APPROVE_INVALID |
| 37 }; | 37 }; |
| 38 | 38 |
| 39 enum ClientIdValue { | 39 enum ClientIdValue { |
| 40 CLIENT_ID_DEFAULT, | 40 CLIENT_ID_DEFAULT, |
| 41 CLIENT_ID_NOT_SET, | 41 CLIENT_ID_NOT_SET, |
| 42 CLIENT_ID_EMPTY | 42 CLIENT_ID_EMPTY |
| 43 }; | 43 }; |
| 44 | 44 |
| 45 scoped_ptr<base::DictionaryValue> CreateManifest( | 45 std::unique_ptr<base::DictionaryValue> CreateManifest( |
| 46 AutoApproveValue auto_approve, | 46 AutoApproveValue auto_approve, |
| 47 bool extension_id_whitelisted, | 47 bool extension_id_whitelisted, |
| 48 ClientIdValue client_id) { | 48 ClientIdValue client_id) { |
| 49 scoped_ptr<base::DictionaryValue> manifest = base::DictionaryValue::From( | 49 std::unique_ptr<base::DictionaryValue> manifest = |
| 50 base::test::ParseJson("{ \n" | 50 base::DictionaryValue::From( |
| 51 " \"name\": \"test\", \n" | 51 base::test::ParseJson("{ \n" |
| 52 " \"version\": \"0.1\", \n" | 52 " \"name\": \"test\", \n" |
| 53 " \"manifest_version\": 2, \n" | 53 " \"version\": \"0.1\", \n" |
| 54 " \"oauth2\": { \n" | 54 " \"manifest_version\": 2, \n" |
| 55 " \"scopes\": [ \"scope1\" ], \n" | 55 " \"oauth2\": { \n" |
| 56 " }, \n" | 56 " \"scopes\": [ \"scope1\" ], \n" |
| 57 "} \n")); | 57 " }, \n" |
| 58 "} \n")); |
| 58 EXPECT_TRUE(manifest); | 59 EXPECT_TRUE(manifest); |
| 59 switch (auto_approve) { | 60 switch (auto_approve) { |
| 60 case AUTO_APPROVE_NOT_SET: | 61 case AUTO_APPROVE_NOT_SET: |
| 61 break; | 62 break; |
| 62 case AUTO_APPROVE_FALSE: | 63 case AUTO_APPROVE_FALSE: |
| 63 manifest->SetBoolean(keys::kOAuth2AutoApprove, false); | 64 manifest->SetBoolean(keys::kOAuth2AutoApprove, false); |
| 64 break; | 65 break; |
| 65 case AUTO_APPROVE_TRUE: | 66 case AUTO_APPROVE_TRUE: |
| 66 manifest->SetBoolean(keys::kOAuth2AutoApprove, true); | 67 manifest->SetBoolean(keys::kOAuth2AutoApprove, true); |
| 67 break; | 68 break; |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 EXPECT_EQ("'oauth2' is only allowed for extensions, legacy packaged apps, " | 150 EXPECT_EQ("'oauth2' is only allowed for extensions, legacy packaged apps, " |
| 150 "and packaged apps, but this is a hosted app.", | 151 "and packaged apps, but this is a hosted app.", |
| 151 warning.message); | 152 warning.message); |
| 152 EXPECT_EQ("", OAuth2Info::GetOAuth2Info(extension.get()).client_id); | 153 EXPECT_EQ("", OAuth2Info::GetOAuth2Info(extension.get()).client_id); |
| 153 EXPECT_TRUE(OAuth2Info::GetOAuth2Info(extension.get()).scopes.empty()); | 154 EXPECT_TRUE(OAuth2Info::GetOAuth2Info(extension.get()).scopes.empty()); |
| 154 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); | 155 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); |
| 155 } | 156 } |
| 156 } | 157 } |
| 157 | 158 |
| 158 TEST_F(OAuth2ManifestTest, AutoApproveNotSetExtensionNotOnWhitelist) { | 159 TEST_F(OAuth2ManifestTest, AutoApproveNotSetExtensionNotOnWhitelist) { |
| 159 scoped_ptr<base::DictionaryValue> ext_manifest = | 160 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 160 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_DEFAULT); | 161 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_DEFAULT); |
| 161 ManifestData manifest(std::move(ext_manifest), "test"); | 162 ManifestData manifest(std::move(ext_manifest), "test"); |
| 162 scoped_refptr<extensions::Extension> extension = | 163 scoped_refptr<extensions::Extension> extension = |
| 163 LoadAndExpectSuccess(manifest); | 164 LoadAndExpectSuccess(manifest); |
| 164 EXPECT_TRUE(extension->install_warnings().empty()); | 165 EXPECT_TRUE(extension->install_warnings().empty()); |
| 165 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); | 166 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); |
| 166 } | 167 } |
| 167 | 168 |
| 168 TEST_F(OAuth2ManifestTest, AutoApproveFalseExtensionNotOnWhitelist) { | 169 TEST_F(OAuth2ManifestTest, AutoApproveFalseExtensionNotOnWhitelist) { |
| 169 scoped_ptr<base::DictionaryValue> ext_manifest = | 170 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 170 CreateManifest(AUTO_APPROVE_FALSE, false, CLIENT_ID_DEFAULT); | 171 CreateManifest(AUTO_APPROVE_FALSE, false, CLIENT_ID_DEFAULT); |
| 171 ManifestData manifest(std::move(ext_manifest), "test"); | 172 ManifestData manifest(std::move(ext_manifest), "test"); |
| 172 scoped_refptr<extensions::Extension> extension = | 173 scoped_refptr<extensions::Extension> extension = |
| 173 LoadAndExpectSuccess(manifest); | 174 LoadAndExpectSuccess(manifest); |
| 174 EXPECT_EQ(1U, extension->install_warnings().size()); | 175 EXPECT_EQ(1U, extension->install_warnings().size()); |
| 175 const extensions::InstallWarning& warning = | 176 const extensions::InstallWarning& warning = |
| 176 extension->install_warnings()[0]; | 177 extension->install_warnings()[0]; |
| 177 EXPECT_EQ(kAutoApproveNotAllowedWarning, warning.message); | 178 EXPECT_EQ(kAutoApproveNotAllowedWarning, warning.message); |
| 178 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); | 179 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); |
| 179 } | 180 } |
| 180 | 181 |
| 181 TEST_F(OAuth2ManifestTest, AutoApproveTrueExtensionNotOnWhitelist) { | 182 TEST_F(OAuth2ManifestTest, AutoApproveTrueExtensionNotOnWhitelist) { |
| 182 scoped_ptr<base::DictionaryValue> ext_manifest = | 183 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 183 CreateManifest(AUTO_APPROVE_TRUE, false, CLIENT_ID_DEFAULT); | 184 CreateManifest(AUTO_APPROVE_TRUE, false, CLIENT_ID_DEFAULT); |
| 184 ManifestData manifest(std::move(ext_manifest), "test"); | 185 ManifestData manifest(std::move(ext_manifest), "test"); |
| 185 scoped_refptr<extensions::Extension> extension = | 186 scoped_refptr<extensions::Extension> extension = |
| 186 LoadAndExpectSuccess(manifest); | 187 LoadAndExpectSuccess(manifest); |
| 187 EXPECT_EQ(1U, extension->install_warnings().size()); | 188 EXPECT_EQ(1U, extension->install_warnings().size()); |
| 188 const extensions::InstallWarning& warning = | 189 const extensions::InstallWarning& warning = |
| 189 extension->install_warnings()[0]; | 190 extension->install_warnings()[0]; |
| 190 EXPECT_EQ(kAutoApproveNotAllowedWarning, warning.message); | 191 EXPECT_EQ(kAutoApproveNotAllowedWarning, warning.message); |
| 191 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); | 192 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); |
| 192 } | 193 } |
| 193 | 194 |
| 194 TEST_F(OAuth2ManifestTest, AutoApproveInvalidExtensionNotOnWhitelist) { | 195 TEST_F(OAuth2ManifestTest, AutoApproveInvalidExtensionNotOnWhitelist) { |
| 195 scoped_ptr<base::DictionaryValue> ext_manifest = | 196 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 196 CreateManifest(AUTO_APPROVE_INVALID, false, CLIENT_ID_DEFAULT); | 197 CreateManifest(AUTO_APPROVE_INVALID, false, CLIENT_ID_DEFAULT); |
| 197 ManifestData manifest(std::move(ext_manifest), "test"); | 198 ManifestData manifest(std::move(ext_manifest), "test"); |
| 198 scoped_refptr<extensions::Extension> extension = | 199 scoped_refptr<extensions::Extension> extension = |
| 199 LoadAndExpectSuccess(manifest); | 200 LoadAndExpectSuccess(manifest); |
| 200 EXPECT_EQ(1U, extension->install_warnings().size()); | 201 EXPECT_EQ(1U, extension->install_warnings().size()); |
| 201 const extensions::InstallWarning& warning = | 202 const extensions::InstallWarning& warning = |
| 202 extension->install_warnings()[0]; | 203 extension->install_warnings()[0]; |
| 203 EXPECT_EQ(kAutoApproveNotAllowedWarning, warning.message); | 204 EXPECT_EQ(kAutoApproveNotAllowedWarning, warning.message); |
| 204 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); | 205 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); |
| 205 } | 206 } |
| 206 | 207 |
| 207 TEST_F(OAuth2ManifestTest, AutoApproveNotSetExtensionOnWhitelist) { | 208 TEST_F(OAuth2ManifestTest, AutoApproveNotSetExtensionOnWhitelist) { |
| 208 scoped_ptr<base::DictionaryValue> ext_manifest = | 209 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 209 CreateManifest(AUTO_APPROVE_NOT_SET, true, CLIENT_ID_DEFAULT); | 210 CreateManifest(AUTO_APPROVE_NOT_SET, true, CLIENT_ID_DEFAULT); |
| 210 ManifestData manifest(std::move(ext_manifest), "test"); | 211 ManifestData manifest(std::move(ext_manifest), "test"); |
| 211 scoped_refptr<extensions::Extension> extension = | 212 scoped_refptr<extensions::Extension> extension = |
| 212 LoadAndExpectSuccess(manifest); | 213 LoadAndExpectSuccess(manifest); |
| 213 EXPECT_TRUE(extension->install_warnings().empty()); | 214 EXPECT_TRUE(extension->install_warnings().empty()); |
| 214 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); | 215 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); |
| 215 } | 216 } |
| 216 | 217 |
| 217 TEST_F(OAuth2ManifestTest, AutoApproveFalseExtensionOnWhitelist) { | 218 TEST_F(OAuth2ManifestTest, AutoApproveFalseExtensionOnWhitelist) { |
| 218 scoped_ptr<base::DictionaryValue> ext_manifest = | 219 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 219 CreateManifest(AUTO_APPROVE_FALSE, true, CLIENT_ID_DEFAULT); | 220 CreateManifest(AUTO_APPROVE_FALSE, true, CLIENT_ID_DEFAULT); |
| 220 ManifestData manifest(std::move(ext_manifest), "test"); | 221 ManifestData manifest(std::move(ext_manifest), "test"); |
| 221 scoped_refptr<extensions::Extension> extension = | 222 scoped_refptr<extensions::Extension> extension = |
| 222 LoadAndExpectSuccess(manifest); | 223 LoadAndExpectSuccess(manifest); |
| 223 EXPECT_TRUE(extension->install_warnings().empty()); | 224 EXPECT_TRUE(extension->install_warnings().empty()); |
| 224 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); | 225 EXPECT_FALSE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); |
| 225 } | 226 } |
| 226 | 227 |
| 227 TEST_F(OAuth2ManifestTest, AutoApproveTrueExtensionOnWhitelist) { | 228 TEST_F(OAuth2ManifestTest, AutoApproveTrueExtensionOnWhitelist) { |
| 228 scoped_ptr<base::DictionaryValue> ext_manifest = | 229 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 229 CreateManifest(AUTO_APPROVE_TRUE, true, CLIENT_ID_DEFAULT); | 230 CreateManifest(AUTO_APPROVE_TRUE, true, CLIENT_ID_DEFAULT); |
| 230 ManifestData manifest(std::move(ext_manifest), "test"); | 231 ManifestData manifest(std::move(ext_manifest), "test"); |
| 231 scoped_refptr<extensions::Extension> extension = | 232 scoped_refptr<extensions::Extension> extension = |
| 232 LoadAndExpectSuccess(manifest); | 233 LoadAndExpectSuccess(manifest); |
| 233 EXPECT_TRUE(extension->install_warnings().empty()); | 234 EXPECT_TRUE(extension->install_warnings().empty()); |
| 234 EXPECT_TRUE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); | 235 EXPECT_TRUE(OAuth2Info::GetOAuth2Info(extension.get()).auto_approve); |
| 235 } | 236 } |
| 236 | 237 |
| 237 TEST_F(OAuth2ManifestTest, AutoApproveInvalidExtensionOnWhitelist) { | 238 TEST_F(OAuth2ManifestTest, AutoApproveInvalidExtensionOnWhitelist) { |
| 238 scoped_ptr<base::DictionaryValue> ext_manifest = | 239 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 239 CreateManifest(AUTO_APPROVE_INVALID, true, CLIENT_ID_DEFAULT); | 240 CreateManifest(AUTO_APPROVE_INVALID, true, CLIENT_ID_DEFAULT); |
| 240 ManifestData manifest(std::move(ext_manifest), "test"); | 241 ManifestData manifest(std::move(ext_manifest), "test"); |
| 241 std::string error; | 242 std::string error; |
| 242 scoped_refptr<extensions::Extension> extension = | 243 scoped_refptr<extensions::Extension> extension = |
| 243 LoadExtension(manifest, &error); | 244 LoadExtension(manifest, &error); |
| 244 EXPECT_EQ( | 245 EXPECT_EQ( |
| 245 "Invalid value for 'oauth2.auto_approve'. Value must be true or false.", | 246 "Invalid value for 'oauth2.auto_approve'. Value must be true or false.", |
| 246 error); | 247 error); |
| 247 } | 248 } |
| 248 | 249 |
| 249 TEST_F(OAuth2ManifestTest, InvalidClientId) { | 250 TEST_F(OAuth2ManifestTest, InvalidClientId) { |
| 250 { | 251 { |
| 251 scoped_ptr<base::DictionaryValue> ext_manifest = | 252 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 252 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_NOT_SET); | 253 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_NOT_SET); |
| 253 ManifestData manifest(std::move(ext_manifest), "test"); | 254 ManifestData manifest(std::move(ext_manifest), "test"); |
| 254 std::string error; | 255 std::string error; |
| 255 LoadAndExpectError(manifest, errors::kInvalidOAuth2ClientId); | 256 LoadAndExpectError(manifest, errors::kInvalidOAuth2ClientId); |
| 256 } | 257 } |
| 257 | 258 |
| 258 { | 259 { |
| 259 scoped_ptr<base::DictionaryValue> ext_manifest = | 260 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 260 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_EMPTY); | 261 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_EMPTY); |
| 261 ManifestData manifest(std::move(ext_manifest), "test"); | 262 ManifestData manifest(std::move(ext_manifest), "test"); |
| 262 std::string error; | 263 std::string error; |
| 263 LoadAndExpectError(manifest, errors::kInvalidOAuth2ClientId); | 264 LoadAndExpectError(manifest, errors::kInvalidOAuth2ClientId); |
| 264 } | 265 } |
| 265 } | 266 } |
| 266 | 267 |
| 267 TEST_F(OAuth2ManifestTest, ComponentInvalidClientId) { | 268 TEST_F(OAuth2ManifestTest, ComponentInvalidClientId) { |
| 268 // Component Apps without auto_approve must include a client ID. | 269 // Component Apps without auto_approve must include a client ID. |
| 269 { | 270 { |
| 270 scoped_ptr<base::DictionaryValue> ext_manifest = | 271 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 271 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_NOT_SET); | 272 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_NOT_SET); |
| 272 ManifestData manifest(std::move(ext_manifest), "test"); | 273 ManifestData manifest(std::move(ext_manifest), "test"); |
| 273 std::string error; | 274 std::string error; |
| 274 LoadAndExpectError(manifest, | 275 LoadAndExpectError(manifest, |
| 275 errors::kInvalidOAuth2ClientId, | 276 errors::kInvalidOAuth2ClientId, |
| 276 extensions::Manifest::COMPONENT); | 277 extensions::Manifest::COMPONENT); |
| 277 } | 278 } |
| 278 | 279 |
| 279 { | 280 { |
| 280 scoped_ptr<base::DictionaryValue> ext_manifest = | 281 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 281 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_EMPTY); | 282 CreateManifest(AUTO_APPROVE_NOT_SET, false, CLIENT_ID_EMPTY); |
| 282 ManifestData manifest(std::move(ext_manifest), "test"); | 283 ManifestData manifest(std::move(ext_manifest), "test"); |
| 283 std::string error; | 284 std::string error; |
| 284 LoadAndExpectError(manifest, | 285 LoadAndExpectError(manifest, |
| 285 errors::kInvalidOAuth2ClientId, | 286 errors::kInvalidOAuth2ClientId, |
| 286 extensions::Manifest::COMPONENT); | 287 extensions::Manifest::COMPONENT); |
| 287 } | 288 } |
| 288 } | 289 } |
| 289 | 290 |
| 290 TEST_F(OAuth2ManifestTest, ComponentWithChromeClientId) { | 291 TEST_F(OAuth2ManifestTest, ComponentWithChromeClientId) { |
| 291 { | 292 { |
| 292 scoped_ptr<base::DictionaryValue> ext_manifest = | 293 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 293 CreateManifest(AUTO_APPROVE_TRUE, true, CLIENT_ID_NOT_SET); | 294 CreateManifest(AUTO_APPROVE_TRUE, true, CLIENT_ID_NOT_SET); |
| 294 ManifestData manifest(std::move(ext_manifest), "test"); | 295 ManifestData manifest(std::move(ext_manifest), "test"); |
| 295 scoped_refptr<extensions::Extension> extension = | 296 scoped_refptr<extensions::Extension> extension = |
| 296 LoadAndExpectSuccess(manifest, extensions::Manifest::COMPONENT); | 297 LoadAndExpectSuccess(manifest, extensions::Manifest::COMPONENT); |
| 297 EXPECT_TRUE(OAuth2Info::GetOAuth2Info(extension.get()).client_id.empty()); | 298 EXPECT_TRUE(OAuth2Info::GetOAuth2Info(extension.get()).client_id.empty()); |
| 298 } | 299 } |
| 299 | 300 |
| 300 { | 301 { |
| 301 scoped_ptr<base::DictionaryValue> ext_manifest = | 302 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 302 CreateManifest(AUTO_APPROVE_TRUE, true, CLIENT_ID_EMPTY); | 303 CreateManifest(AUTO_APPROVE_TRUE, true, CLIENT_ID_EMPTY); |
| 303 ManifestData manifest(std::move(ext_manifest), "test"); | 304 ManifestData manifest(std::move(ext_manifest), "test"); |
| 304 scoped_refptr<extensions::Extension> extension = | 305 scoped_refptr<extensions::Extension> extension = |
| 305 LoadAndExpectSuccess(manifest, extensions::Manifest::COMPONENT); | 306 LoadAndExpectSuccess(manifest, extensions::Manifest::COMPONENT); |
| 306 EXPECT_TRUE(OAuth2Info::GetOAuth2Info(extension.get()).client_id.empty()); | 307 EXPECT_TRUE(OAuth2Info::GetOAuth2Info(extension.get()).client_id.empty()); |
| 307 } | 308 } |
| 308 } | 309 } |
| 309 | 310 |
| 310 TEST_F(OAuth2ManifestTest, ComponentWithStandardClientId) { | 311 TEST_F(OAuth2ManifestTest, ComponentWithStandardClientId) { |
| 311 scoped_ptr<base::DictionaryValue> ext_manifest = | 312 std::unique_ptr<base::DictionaryValue> ext_manifest = |
| 312 CreateManifest(AUTO_APPROVE_TRUE, true, CLIENT_ID_DEFAULT); | 313 CreateManifest(AUTO_APPROVE_TRUE, true, CLIENT_ID_DEFAULT); |
| 313 ManifestData manifest(std::move(ext_manifest), "test"); | 314 ManifestData manifest(std::move(ext_manifest), "test"); |
| 314 scoped_refptr<extensions::Extension> extension = | 315 scoped_refptr<extensions::Extension> extension = |
| 315 LoadAndExpectSuccess(manifest, extensions::Manifest::COMPONENT); | 316 LoadAndExpectSuccess(manifest, extensions::Manifest::COMPONENT); |
| 316 EXPECT_EQ("client1", OAuth2Info::GetOAuth2Info(extension.get()).client_id); | 317 EXPECT_EQ("client1", OAuth2Info::GetOAuth2Info(extension.get()).client_id); |
| 317 } | 318 } |
| 318 | 319 |
| 319 } // namespace extensions | 320 } // namespace extensions |
| OLD | NEW |