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