Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(374)

Unified Diff: services/authentication/accounts_db_manager_unittest.cc

Issue 1466733002: Google OAuth Device Flow support for FNL (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: services/authentication/accounts_db_manager_unittest.cc
diff --git a/services/authentication/accounts_db_manager_unittest.cc b/services/authentication/accounts_db_manager_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6b509c3512a55b91604ca2d1a0a68376e684ad82
--- /dev/null
+++ b/services/authentication/accounts_db_manager_unittest.cc
@@ -0,0 +1,131 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "accounts_db_manager.h"
+
+#include "base/logging.h"
+#include "base/strings/string_tokenizer.h"
+#include "mojo/public/cpp/application/application_impl.h"
+#include "mojo/public/cpp/application/application_test_base.h"
+#include "mojo/services/files/interfaces/types.mojom.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace authentication {
+namespace {
+
+class AccountsDBTest : public mojo::test::ApplicationTestBase {
+ public:
+ AccountsDBTest(){};
+ ~AccountsDBTest() override{};
+
+ protected:
+ void SetUp() override {
+ mojo::test::ApplicationTestBase::SetUp();
+ mojo::files::FilesPtr files;
+ application_impl()->ConnectToService("mojo:files", &files);
+
+ mojo::files::Error error = mojo::files::Error::INTERNAL;
+ mojo::files::DirectoryPtr directory;
+ files->OpenFileSystem(nullptr, GetProxy(&directory),
+ [&error](mojo::files::Error e) { error = e; });
+ CHECK(files.WaitForIncomingResponse());
+ CHECK_EQ(mojo::files::Error::OK, error);
+
+ accounts_db_manager_ = new AccountsDbManager(directory.Pass());
+ }
+
+ AccountsDbManager* accountsDBPtr() { return accounts_db_manager_; }
+
+ private:
+ AccountsDbManager* accounts_db_manager_;
+
+ DISALLOW_COPY_AND_ASSIGN(AccountsDBTest);
+};
+
+TEST_F(AccountsDBTest, CanAddNewAccount) {
+ std::string test_str("test,abcdefgh");
+ accountsDBPtr()->UpdateAccount("test", test_str);
+
+ std::string db_contents = accountsDBPtr()->GetAllUserAccounts();
+ EXPECT_EQ(test_str.size(), db_contents.size());
+}
+
+TEST_F(AccountsDBTest, CanUpdateAnExistingAccount) {
+ accountsDBPtr()->UpdateAccount("user1", "user1,hello");
+ accountsDBPtr()->UpdateAccount("user1", "user1,world");
+ accountsDBPtr()->UpdateAccount("user3", "user3,google");
+
+ std::string db_contents = accountsDBPtr()->GetAllUserAccounts();
+ base::StringTokenizer lines(db_contents, "\n");
+ int n = 0;
+ while (lines.GetNext()) {
+ n++;
+ }
+ ASSERT_FALSE(db_contents.find("hello") != std::string::npos);
+ ASSERT_TRUE(db_contents.find("world") != std::string::npos);
+ EXPECT_EQ(2, n);
+}
+
+TEST_F(AccountsDBTest, CanGetUserAccountDataByName) {
+ accountsDBPtr()->UpdateAccount("test_user", "test_user,turquoise_creds");
+ mojo::String user_data = accountsDBPtr()->GetAccountDataForUser("test_user");
+
+ ASSERT_TRUE(!user_data.is_null());
+ EXPECT_EQ("test_user,turquoise_creds", user_data);
+}
+
+TEST_F(AccountsDBTest, CanGetUserAccountDataByNamePrefix) {
+ accountsDBPtr()->UpdateAccount("test_user", "test_user,turquoise_creds");
+ mojo::String user_data = accountsDBPtr()->GetAccountDataForUser("test_");
+ ASSERT_TRUE(user_data.is_null());
+}
+
+TEST_F(AccountsDBTest, CanGetUserAccountDataByNameSuffix) {
+ accountsDBPtr()->UpdateAccount("test_user", "test_user,turquoise_creds");
+ mojo::String user_data = accountsDBPtr()->GetAccountDataForUser("user");
+ ASSERT_TRUE(user_data.is_null());
+}
+
+TEST_F(AccountsDBTest, CanGetUserAccountDataByNameSubstr) {
+ accountsDBPtr()->UpdateAccount("test_user", "test_user,turquoise_creds");
+ mojo::String user_data = accountsDBPtr()->GetAccountDataForUser("st_us");
+ ASSERT_TRUE(user_data.is_null());
+}
+
+TEST_F(AccountsDBTest, CanGetAllAccountsData) {
+ accountsDBPtr()->UpdateAccount("user1", "user1,hello");
+ accountsDBPtr()->UpdateAccount("user2", "user2,world");
+ accountsDBPtr()->UpdateAccount("user3", "user3,google");
+
+ std::string db_contents = accountsDBPtr()->GetAllUserAccounts();
+ base::StringTokenizer lines(db_contents, "\n");
+ int n = 0;
+ while (lines.GetNext()) {
+ n++;
+ }
+ EXPECT_EQ(3, n);
+}
+
+TEST_F(AccountsDBTest, CanAddNewAuthorization) {
+ ASSERT_TRUE(accountsDBPtr()->GetAuthorizedUserForApp("url1").is_null());
+ accountsDBPtr()->UpdateAuthorization("url1", "user1");
+ EXPECT_EQ(accountsDBPtr()->GetAuthorizedUserForApp("url1").get(), "user1");
+}
+
+TEST_F(AccountsDBTest, CanUpdateExistingAuthorization) {
+ ASSERT_TRUE(accountsDBPtr()->GetAuthorizedUserForApp("url1").is_null());
+ accountsDBPtr()->UpdateAuthorization("url1", "user1");
+ EXPECT_EQ(accountsDBPtr()->GetAuthorizedUserForApp("url1").get(), "user1");
+ accountsDBPtr()->UpdateAuthorization("url1", "user2");
+ EXPECT_EQ(accountsDBPtr()->GetAuthorizedUserForApp("url1").get(), "user2");
+}
+
+TEST_F(AccountsDBTest, CanGetAuthorizedUserForInvalidApp) {
+ accountsDBPtr()->UpdateAuthorization("url1", "user1");
+ ASSERT_TRUE(
+ accountsDBPtr()->GetAuthorizedUserForApp("invalid_app_url").is_null());
+}
+
+} // namespace
+} // namespace authentication

Powered by Google App Engine
This is Rietveld 408576698