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 3// found in the LICENSE file. 4 5#include "remoting/host/setup/oauth_helper.h" 6 7#include "testing/gtest/include/gtest/gtest.h" 8 9namespace { 10 11std::string Replace(const std::string& s, const std::string& old_substr, 12 const std::string& new_substr) { 13 size_t pos = s.find(old_substr); 14 if (pos == std::string::npos) { 15 return s; 16 } 17 return s.substr(0, pos) + new_substr + 18 s.substr(pos + old_substr.length(), std::string::npos); 19} 20 21std::string GetTestRedirectUrl() { 22 return std::string("https://google.com/redirect"); 23} 24 25} // namespace 26 27namespace remoting { 28 29TEST(OauthHelperTest, TestNotCode) { 30 ASSERT_EQ("", GetOauthCodeInUrl("notURL", GetTestRedirectUrl())); 31} 32 33TEST(OauthHelperTest, TestVeryShort) { 34 ASSERT_EQ("", GetOauthCodeInUrl(GetTestRedirectUrl(), GetTestRedirectUrl())); 35} 36 37TEST(OauthHelperTest, TestEmptyQuery) { 38 ASSERT_EQ("", GetOauthCodeInUrl(GetTestRedirectUrl() + "?", 39 GetTestRedirectUrl())); 40} 41 42TEST(OauthHelperTest, TestNoQueryValue) { 43 ASSERT_EQ("", GetOauthCodeInUrl(GetTestRedirectUrl() + "?code", 44 GetTestRedirectUrl())); 45} 46 47TEST(OauthHelperTest, TestEmptyCode) { 48 ASSERT_EQ("", GetOauthCodeInUrl(GetTestRedirectUrl() + "?code=", 49 GetTestRedirectUrl())); 50} 51 52TEST(OauthHelperTest, TestCode) { 53 ASSERT_EQ("Dummy", GetOauthCodeInUrl(GetTestRedirectUrl() + "?code=Dummy", 54 GetTestRedirectUrl())); 55} 56 57TEST(OauthHelperTest, TestCodeInLongQuery) { 58 ASSERT_EQ("Dummy", GetOauthCodeInUrl(GetTestRedirectUrl() + 59 "?x=1&code=Dummy&y=2", 60 GetTestRedirectUrl())); 61} 62 63TEST(OauthHelperTest, TestBadScheme) { 64 std::string url = GetTestRedirectUrl() + "?code=Dummy"; 65 url = Replace(url, "https:", "http"); 66 ASSERT_EQ("", GetOauthCodeInUrl(url, GetTestRedirectUrl())); 67} 68 69TEST(OauthHelperTest, TestBadHost) { 70 std::string url = GetTestRedirectUrl() + "?code=Dummy"; 71 url = Replace(url, "google", "goggle"); 72 ASSERT_EQ("", GetOauthCodeInUrl(url, GetTestRedirectUrl())); 73} 74 75} // namespace remoting 76