1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/file_util.h" 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/path_service.h" 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/string_number_conversions.h" 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/time.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/webdata/web_database.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/common/chrome_paths.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "testing/gtest/include/gtest/gtest.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenusing base::Time; 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass TokenServiceTableTest : public testing::Test { 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public: 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen TokenServiceTableTest() {} 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual ~TokenServiceTableTest() {} 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen protected: 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void SetUp() { 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen PathService::Get(chrome::DIR_TEST_DATA, &file_); 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const std::string test_db = "TestWebDatabase" + 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen base::Int64ToString(Time::Now().ToTimeT()) + 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ".db"; 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen file_ = file_.AppendASCII(test_db); 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen file_util::Delete(file_, false); 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual void TearDown() { 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen file_util::Delete(file_, false); 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FilePath file_; 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private: 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen DISALLOW_COPY_AND_ASSIGN(TokenServiceTableTest); 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}; 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(TokenServiceTableTest, TokenServiceGetAllRemoveAll) { 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WebDatabase db; 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::map<std::string, std::string> out_map; 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string service; 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string service2; 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen service = "testservice"; 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen service2 = "othertestservice"; 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->GetAllTokens(&out_map)); 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(out_map.empty()); 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Check that get all tokens works 54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->SetTokenForService(service, 55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "pepperoni")); 56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->SetTokenForService(service2, "steak")); 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->GetAllTokens(&out_map)); 58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(out_map.find(service)->second, "pepperoni"); 59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(out_map.find(service2)->second, "steak"); 60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen out_map.clear(); 61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Purge 63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->RemoveAllTokens()); 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->GetAllTokens(&out_map)); 65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(out_map.empty()); 66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Check that you can still add it back in 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->SetTokenForService(service, "cheese")); 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->GetAllTokens(&out_map)); 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(out_map.find(service)->second, "cheese"); 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenTEST_F(TokenServiceTableTest, TokenServiceGetSet) { 74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen WebDatabase db; 75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::map<std::string, std::string> out_map; 78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string service; 79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen service = "testservice"; 80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->GetAllTokens(&out_map)); 82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(out_map.empty()); 83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->SetTokenForService(service, 85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen "pepperoni")); 86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->GetAllTokens(&out_map)); 87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(out_map.find(service)->second, "pepperoni"); 88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen out_map.clear(); 89ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 90ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // try blanking it - won't remove it from the db though! 91ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->SetTokenForService(service, "")); 92ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->GetAllTokens(&out_map)); 93ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(out_map.find(service)->second, ""); 94ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen out_map.clear(); 95ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // try mutating it 97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->SetTokenForService(service, "ham")); 98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_TRUE(db.GetTokenServiceTable()->GetAllTokens(&out_map)); 99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen EXPECT_EQ(out_map.find(service)->second, "ham"); 100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 101