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

Side by Side Diff: remoting/host/third_party_auth_config_unittest.cc

Issue 966433002: Malformed PortRange or ThirdPartyAuthConfig trigger OnPolicyError. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed code review feedback from Sergey. Created 5 years, 9 months 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
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "remoting/host/third_party_auth_config.h"
6
7 #include <sstream>
8
9 #include "base/values.h"
10 #include "policy/policy_constants.h"
11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 namespace remoting {
15
16 namespace key = ::policy::key;
17
18 TEST(ThirdPartyAuthConfig, ParseEmpty) {
19 ThirdPartyAuthConfig third_party_auth_config;
20
21 EXPECT_TRUE(
22 ThirdPartyAuthConfig::Parse("", "", "", &third_party_auth_config));
23 EXPECT_TRUE(third_party_auth_config.is_null());
24 }
25
26 TEST(ThirdPartyAuthConfig, ParseValidAll) {
27 ThirdPartyAuthConfig third_party_auth_config;
28
29 EXPECT_TRUE(ThirdPartyAuthConfig::Parse(
30 "https://token.com/", "https://validation.com/", "certificate subject",
31 &third_party_auth_config));
32 EXPECT_FALSE(third_party_auth_config.is_null());
33 EXPECT_EQ("https://token.com/", third_party_auth_config.token_url.spec());
34 EXPECT_EQ("https://validation.com/",
35 third_party_auth_config.token_validation_url.spec());
36 EXPECT_EQ("certificate subject",
37 third_party_auth_config.token_validation_cert_issuer);
38 }
39
40 TEST(ThirdPartyAuthConfig, ParseValidNoCert) {
41 ThirdPartyAuthConfig third_party_auth_config;
42
43 EXPECT_TRUE(ThirdPartyAuthConfig::Parse("https://token.com/",
44 "https://validation.com/", "",
45 &third_party_auth_config));
46 EXPECT_FALSE(third_party_auth_config.is_null());
47 EXPECT_EQ("https://token.com/", third_party_auth_config.token_url.spec());
48 EXPECT_EQ("https://validation.com/",
49 third_party_auth_config.token_validation_url.spec());
50 EXPECT_EQ("", third_party_auth_config.token_validation_cert_issuer);
51 }
52
53 namespace {
54
55 const std::string valid_url("https://valid.com");
56 const std::string valid_cert("certificate subject");
57
58 } // namespace
59
60 class InvalidUrlTest : public ::testing::TestWithParam<const char*> {};
61
62 TEST_P(InvalidUrlTest, ParseInvalidUrl) {
63 const std::string& invalid_url(GetParam());
64
65 // Populate |config| with some known data - we will use this for validating
66 // that |config| doesn't get modified by Parse during subsequent parsing
67 // failure tests.
68 ThirdPartyAuthConfig config;
69 EXPECT_TRUE(ThirdPartyAuthConfig::Parse("https://token.com/",
70 "https://validation.com/",
71 "certificate subject", &config));
72
73 // Test for parsing failure.
74 EXPECT_FALSE(
75 ThirdPartyAuthConfig::Parse(invalid_url, valid_url, valid_cert, &config));
76 EXPECT_FALSE(
77 ThirdPartyAuthConfig::Parse(valid_url, invalid_url, valid_cert, &config));
78 EXPECT_FALSE(ThirdPartyAuthConfig::Parse(invalid_url, "", "", &config));
79 EXPECT_FALSE(ThirdPartyAuthConfig::Parse("", invalid_url, "", &config));
80
81 // Validate that Parse doesn't modify its output upon parsing failure.
82 EXPECT_EQ("https://token.com/", config.token_url.spec());
83 EXPECT_EQ("https://validation.com/", config.token_validation_url.spec());
84 EXPECT_EQ("certificate subject", config.token_validation_cert_issuer);
85 }
86
87 INSTANTIATE_TEST_CASE_P(ThirdPartyAuthConfig,
88 InvalidUrlTest,
89 ::testing::Values("http://insecure.com",
90 "I am not a URL"));
91
92 TEST(ThirdPartyAuthConfig, ParseInvalidCombination) {
93 // Populate |config| with some known data - we will use this for validating
94 // that |config| doesn't get modified by Parse during subsequent parsing
95 // failure tests.
96 ThirdPartyAuthConfig config;
97 EXPECT_TRUE(ThirdPartyAuthConfig::Parse("https://token.com/",
98 "https://validation.com/",
99 "certificate subject", &config));
100
101 // Only one of TokenUrl and TokenValidationUrl
102 EXPECT_FALSE(ThirdPartyAuthConfig::Parse("", valid_url, valid_cert, &config));
103 EXPECT_FALSE(ThirdPartyAuthConfig::Parse(valid_url, "", valid_cert, &config));
104
105 // CertSubject when no TokenUrl and TokenValidationUrl
106 EXPECT_FALSE(ThirdPartyAuthConfig::Parse("", "", valid_cert, &config));
107
108 // Validate that Parse doesn't modify its output upon parsing failure.
109 EXPECT_EQ("https://token.com/", config.token_url.spec());
110 EXPECT_EQ("https://validation.com/", config.token_validation_url.spec());
111 EXPECT_EQ("certificate subject", config.token_validation_cert_issuer);
112 }
113
114 TEST(ThirdPartyAuthConfig, ExtractEmpty) {
115 base::DictionaryValue dict;
116 std::string url1, url2, cert;
117 EXPECT_FALSE(
118 ThirdPartyAuthConfig::ExtractPolicyValues(dict, &url1, &url2, &cert));
119 }
120
121 TEST(ThirdPartyAuthConfig, ExtractUnknown) {
122 base::DictionaryValue dict;
123 dict.SetString("unknownName", "someValue");
124
125 std::string url1, url2, cert;
126 EXPECT_FALSE(
127 ThirdPartyAuthConfig::ExtractPolicyValues(dict, &url1, &url2, &cert));
128 }
129
130 TEST(ThirdPartyAuthConfig, ExtractAll) {
131 base::DictionaryValue dict;
132 dict.SetString(key::kRemoteAccessHostTokenUrl, "test1");
133 dict.SetString(key::kRemoteAccessHostTokenValidationUrl, "test2");
134 dict.SetString(key::kRemoteAccessHostTokenValidationCertificateIssuer, "t3");
135
136 std::string url1, url2, cert;
137 EXPECT_TRUE(
138 ThirdPartyAuthConfig::ExtractPolicyValues(dict, &url1, &url2, &cert));
139 EXPECT_EQ("test1", url1);
140 EXPECT_EQ("test2", url2);
141 EXPECT_EQ("t3", cert);
142 }
143
144 TEST(ThirdPartyAuthConfig, ExtractPartial) {
145 base::DictionaryValue dict;
146 dict.SetString(key::kRemoteAccessHostTokenValidationUrl, "test2");
147
148 std::string url1, url2, cert;
149 EXPECT_TRUE(
150 ThirdPartyAuthConfig::ExtractPolicyValues(dict, &url1, &url2, &cert));
151 EXPECT_EQ("", url1);
152 EXPECT_EQ("test2", url2);
153 EXPECT_EQ("", cert);
154 }
155
156 TEST(ThirdPartyAuthConfig, Output) {
157 ThirdPartyAuthConfig third_party_auth_config;
158 third_party_auth_config.token_url = GURL("https://token.com");
159 third_party_auth_config.token_validation_url = GURL("https://validation.com");
160 third_party_auth_config.token_validation_cert_issuer = "certificate subject";
161
162 std::ostringstream str;
163 str << third_party_auth_config;
164
165 EXPECT_THAT(str.str(), testing::HasSubstr("token"));
166 EXPECT_THAT(str.str(), testing::HasSubstr("validation"));
167 EXPECT_THAT(str.str(), testing::HasSubstr("certificate subject"));
168 }
169
170 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698