1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file. 4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/password_manager/core/browser/psl_matching_helper.h" 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/basictypes.h" 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/autofill/core/common/password_form.h" 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace password_manager { 12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace { 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(PSLMatchingUtilsTest, IsPublicSuffixDomainMatch) { 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) struct TestPair { 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const char* url1; 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const char* url2; 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool should_match; 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) }; 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestPair pairs[] = { 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://facebook.com", "http://facebook.com", true}, 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://facebook.com/path", "http://facebook.com/path", true}, 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://facebook.com/path1", "http://facebook.com/path2", true}, 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://facebook.com", "http://m.facebook.com", true}, 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://www.facebook.com", "http://m.facebook.com", true}, 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://facebook.com/path", "http://m.facebook.com/path", true}, 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://facebook.com/path1", "http://m.facebook.com/path2", true}, 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://example.com/has space", "http://example.com/has space", true}, 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://www.example.com", "http://wwwexample.com", false}, 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://www.example.com", "https://www.example.com", false}, 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://www.example.com:123", "http://www.example.com", false}, 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://www.example.org", "http://www.example.com", false}, 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Invalid urls should not match anything. 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://", "http://", false}, 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"", "", false}, 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"bad url", "bad url", false}, 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://www.example.com", "http://", false}, 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"", "http://www.example.com", false}, 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://www.example.com", "bad url", false}, 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch {"http://www.example.com/%00", "http://www.example.com/%00", false}, 43a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) }; 44a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 45a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) for (size_t i = 0; i < ARRAYSIZE_UNSAFE(pairs); ++i) { 46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) autofill::PasswordForm form1; 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) form1.signon_realm = pairs[i].url1; 48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) autofill::PasswordForm form2; 49a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) form2.signon_realm = pairs[i].url2; 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) EXPECT_EQ(pairs[i].should_match, 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IsPublicSuffixDomainMatch(form1.signon_realm, form2.signon_realm)) 52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) << "First URL = " << pairs[i].url1 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) << ", second URL = " << pairs[i].url2; 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 57c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace 58c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 59c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace password_manager 60