token_service_table_unittest.cc revision effb81e5f8246d0db0270817048dc992db66e9fb
1// Copyright 2014 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 "base/files/scoped_temp_dir.h" 6#include "base/path_service.h" 7#include "base/strings/string_number_conversions.h" 8#include "base/time/time.h" 9#include "components/signin/core/browser/webdata/token_service_table.h" 10#include "components/webdata/common/web_database.h" 11#include "testing/gtest/include/gtest/gtest.h" 12 13using base::Time; 14 15class TokenServiceTableTest : public testing::Test { 16 public: 17 TokenServiceTableTest() {} 18 virtual ~TokenServiceTableTest() {} 19 20 protected: 21 virtual void SetUp() { 22 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 23 file_ = temp_dir_.path().AppendASCII("TestWebDatabase"); 24 25 table_.reset(new TokenServiceTable); 26 db_.reset(new WebDatabase); 27 db_->AddTable(table_.get()); 28 ASSERT_EQ(sql::INIT_OK, db_->Init(file_)); 29 } 30 31 base::FilePath file_; 32 base::ScopedTempDir temp_dir_; 33 scoped_ptr<TokenServiceTable> table_; 34 scoped_ptr<WebDatabase> db_; 35 private: 36 DISALLOW_COPY_AND_ASSIGN(TokenServiceTableTest); 37}; 38 39// Flaky on mac_rel. See http://crbug.com/228943 40#if defined(OS_MACOSX) 41#define MAYBE_TokenServiceGetAllRemoveAll DISABLED_TokenServiceGetAllRemoveAll 42#define MAYBE_TokenServiceGetSet DISABLED_TokenServiceGetSet 43#define MAYBE_TokenServiceRemove DISABLED_TokenServiceRemove 44#else 45#define MAYBE_TokenServiceGetAllRemoveAll TokenServiceGetAllRemoveAll 46#define MAYBE_TokenServiceGetSet TokenServiceGetSet 47#define MAYBE_TokenServiceRemove TokenServiceRemove 48#endif 49 50TEST_F(TokenServiceTableTest, MAYBE_TokenServiceGetAllRemoveAll) { 51 std::map<std::string, std::string> out_map; 52 std::string service; 53 std::string service2; 54 service = "testservice"; 55 service2 = "othertestservice"; 56 57 EXPECT_TRUE(table_->GetAllTokens(&out_map)); 58 EXPECT_TRUE(out_map.empty()); 59 60 // Check that get all tokens works 61 EXPECT_TRUE(table_->SetTokenForService(service, "pepperoni")); 62 EXPECT_TRUE(table_->SetTokenForService(service2, "steak")); 63 EXPECT_TRUE(table_->GetAllTokens(&out_map)); 64 EXPECT_EQ("pepperoni", out_map.find(service)->second); 65 EXPECT_EQ("steak", out_map.find(service2)->second); 66 out_map.clear(); 67 68 // Purge 69 EXPECT_TRUE(table_->RemoveAllTokens()); 70 EXPECT_TRUE(table_->GetAllTokens(&out_map)); 71 EXPECT_TRUE(out_map.empty()); 72 73 // Check that you can still add it back in 74 EXPECT_TRUE(table_->SetTokenForService(service, "cheese")); 75 EXPECT_TRUE(table_->GetAllTokens(&out_map)); 76 EXPECT_EQ("cheese", out_map.find(service)->second); 77} 78 79TEST_F(TokenServiceTableTest, MAYBE_TokenServiceGetSet) { 80 std::map<std::string, std::string> out_map; 81 std::string service; 82 service = "testservice"; 83 84 EXPECT_TRUE(table_->GetAllTokens(&out_map)); 85 EXPECT_TRUE(out_map.empty()); 86 87 EXPECT_TRUE(table_->SetTokenForService(service, "pepperoni")); 88 EXPECT_TRUE(table_->GetAllTokens(&out_map)); 89 EXPECT_EQ("pepperoni", out_map.find(service)->second); 90 out_map.clear(); 91 92 // try blanking it - won't remove it from the db though! 93 EXPECT_TRUE(table_->SetTokenForService(service, std::string())); 94 EXPECT_TRUE(table_->GetAllTokens(&out_map)); 95 EXPECT_EQ("", out_map.find(service)->second); 96 out_map.clear(); 97 98 // try mutating it 99 EXPECT_TRUE(table_->SetTokenForService(service, "ham")); 100 EXPECT_TRUE(table_->GetAllTokens(&out_map)); 101 EXPECT_EQ("ham", out_map.find(service)->second); 102} 103 104TEST_F(TokenServiceTableTest, MAYBE_TokenServiceRemove) { 105 std::map<std::string, std::string> out_map; 106 std::string service; 107 std::string service2; 108 service = "testservice"; 109 service2 = "othertestservice"; 110 111 EXPECT_TRUE(table_->SetTokenForService(service, "pepperoni")); 112 EXPECT_TRUE(table_->SetTokenForService(service2, "steak")); 113 EXPECT_TRUE(table_->RemoveTokenForService(service)); 114 EXPECT_TRUE(table_->GetAllTokens(&out_map)); 115 EXPECT_EQ(0u, out_map.count(service)); 116 EXPECT_EQ("steak", out_map.find(service2)->second); 117} 118