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

Unified 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, 10 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 side-by-side diff with in-line comments
Download patch
Index: remoting/host/third_party_auth_config_unittest.cc
diff --git a/remoting/host/third_party_auth_config_unittest.cc b/remoting/host/third_party_auth_config_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..431bf6b87e540f4b04273945dae353e4a3cbf148
--- /dev/null
+++ b/remoting/host/third_party_auth_config_unittest.cc
@@ -0,0 +1,170 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "remoting/host/third_party_auth_config.h"
+
+#include <sstream>
+
+#include "base/values.h"
+#include "policy/policy_constants.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace remoting {
+
+namespace key = ::policy::key;
+
+TEST(ThirdPartyAuthConfig, ParseEmpty) {
+ ThirdPartyAuthConfig third_party_auth_config;
+
+ EXPECT_TRUE(
+ ThirdPartyAuthConfig::Parse("", "", "", &third_party_auth_config));
+ EXPECT_TRUE(third_party_auth_config.is_null());
+}
+
+TEST(ThirdPartyAuthConfig, ParseValidAll) {
+ ThirdPartyAuthConfig third_party_auth_config;
+
+ EXPECT_TRUE(ThirdPartyAuthConfig::Parse(
+ "https://token.com/", "https://validation.com/", "certificate subject",
+ &third_party_auth_config));
+ EXPECT_FALSE(third_party_auth_config.is_null());
+ EXPECT_EQ("https://token.com/", third_party_auth_config.token_url.spec());
+ EXPECT_EQ("https://validation.com/",
+ third_party_auth_config.token_validation_url.spec());
+ EXPECT_EQ("certificate subject",
+ third_party_auth_config.token_validation_cert_issuer);
+}
+
+TEST(ThirdPartyAuthConfig, ParseValidNoCert) {
+ ThirdPartyAuthConfig third_party_auth_config;
+
+ EXPECT_TRUE(ThirdPartyAuthConfig::Parse("https://token.com/",
+ "https://validation.com/", "",
+ &third_party_auth_config));
+ EXPECT_FALSE(third_party_auth_config.is_null());
+ EXPECT_EQ("https://token.com/", third_party_auth_config.token_url.spec());
+ EXPECT_EQ("https://validation.com/",
+ third_party_auth_config.token_validation_url.spec());
+ EXPECT_EQ("", third_party_auth_config.token_validation_cert_issuer);
+}
+
+namespace {
+
+const std::string valid_url("https://valid.com");
+const std::string valid_cert("certificate subject");
+
+} // namespace
+
+class InvalidUrlTest : public ::testing::TestWithParam<const char*> {};
+
+TEST_P(InvalidUrlTest, ParseInvalidUrl) {
+ const std::string& invalid_url(GetParam());
+
+ // Populate |config| with some known data - we will use this for validating
+ // that |config| doesn't get modified by Parse during subsequent parsing
+ // failure tests.
+ ThirdPartyAuthConfig config;
+ EXPECT_TRUE(ThirdPartyAuthConfig::Parse("https://token.com/",
+ "https://validation.com/",
+ "certificate subject", &config));
+
+ // Test for parsing failure.
+ EXPECT_FALSE(
+ ThirdPartyAuthConfig::Parse(invalid_url, valid_url, valid_cert, &config));
+ EXPECT_FALSE(
+ ThirdPartyAuthConfig::Parse(valid_url, invalid_url, valid_cert, &config));
+ EXPECT_FALSE(ThirdPartyAuthConfig::Parse(invalid_url, "", "", &config));
+ EXPECT_FALSE(ThirdPartyAuthConfig::Parse("", invalid_url, "", &config));
+
+ // Validate that Parse doesn't modify its output upon parsing failure.
+ EXPECT_EQ("https://token.com/", config.token_url.spec());
+ EXPECT_EQ("https://validation.com/", config.token_validation_url.spec());
+ EXPECT_EQ("certificate subject", config.token_validation_cert_issuer);
+}
+
+INSTANTIATE_TEST_CASE_P(ThirdPartyAuthConfig,
+ InvalidUrlTest,
+ ::testing::Values("http://insecure.com",
+ "I am not a URL"));
+
+TEST(ThirdPartyAuthConfig, ParseInvalidCombination) {
+ // Populate |config| with some known data - we will use this for validating
+ // that |config| doesn't get modified by Parse during subsequent parsing
+ // failure tests.
+ ThirdPartyAuthConfig config;
+ EXPECT_TRUE(ThirdPartyAuthConfig::Parse("https://token.com/",
+ "https://validation.com/",
+ "certificate subject", &config));
+
+ // Only one of TokenUrl and TokenValidationUrl
+ EXPECT_FALSE(ThirdPartyAuthConfig::Parse("", valid_url, valid_cert, &config));
+ EXPECT_FALSE(ThirdPartyAuthConfig::Parse(valid_url, "", valid_cert, &config));
+
+ // CertSubject when no TokenUrl and TokenValidationUrl
+ EXPECT_FALSE(ThirdPartyAuthConfig::Parse("", "", valid_cert, &config));
+
+ // Validate that Parse doesn't modify its output upon parsing failure.
+ EXPECT_EQ("https://token.com/", config.token_url.spec());
+ EXPECT_EQ("https://validation.com/", config.token_validation_url.spec());
+ EXPECT_EQ("certificate subject", config.token_validation_cert_issuer);
+}
+
+TEST(ThirdPartyAuthConfig, ExtractEmpty) {
+ base::DictionaryValue dict;
+ std::string url1, url2, cert;
+ EXPECT_FALSE(
+ ThirdPartyAuthConfig::ExtractPolicyValues(dict, &url1, &url2, &cert));
+}
+
+TEST(ThirdPartyAuthConfig, ExtractUnknown) {
+ base::DictionaryValue dict;
+ dict.SetString("unknownName", "someValue");
+
+ std::string url1, url2, cert;
+ EXPECT_FALSE(
+ ThirdPartyAuthConfig::ExtractPolicyValues(dict, &url1, &url2, &cert));
+}
+
+TEST(ThirdPartyAuthConfig, ExtractAll) {
+ base::DictionaryValue dict;
+ dict.SetString(key::kRemoteAccessHostTokenUrl, "test1");
+ dict.SetString(key::kRemoteAccessHostTokenValidationUrl, "test2");
+ dict.SetString(key::kRemoteAccessHostTokenValidationCertificateIssuer, "t3");
+
+ std::string url1, url2, cert;
+ EXPECT_TRUE(
+ ThirdPartyAuthConfig::ExtractPolicyValues(dict, &url1, &url2, &cert));
+ EXPECT_EQ("test1", url1);
+ EXPECT_EQ("test2", url2);
+ EXPECT_EQ("t3", cert);
+}
+
+TEST(ThirdPartyAuthConfig, ExtractPartial) {
+ base::DictionaryValue dict;
+ dict.SetString(key::kRemoteAccessHostTokenValidationUrl, "test2");
+
+ std::string url1, url2, cert;
+ EXPECT_TRUE(
+ ThirdPartyAuthConfig::ExtractPolicyValues(dict, &url1, &url2, &cert));
+ EXPECT_EQ("", url1);
+ EXPECT_EQ("test2", url2);
+ EXPECT_EQ("", cert);
+}
+
+TEST(ThirdPartyAuthConfig, Output) {
+ ThirdPartyAuthConfig third_party_auth_config;
+ third_party_auth_config.token_url = GURL("https://token.com");
+ third_party_auth_config.token_validation_url = GURL("https://validation.com");
+ third_party_auth_config.token_validation_cert_issuer = "certificate subject";
+
+ std::ostringstream str;
+ str << third_party_auth_config;
+
+ EXPECT_THAT(str.str(), testing::HasSubstr("token"));
+ EXPECT_THAT(str.str(), testing::HasSubstr("validation"));
+ EXPECT_THAT(str.str(), testing::HasSubstr("certificate subject"));
+}
+
+} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698