Roll src/third_party/WebKit f007c95:0171005 (svn 185074:185088)
[chromium-blink-merge.git] / google_apis / gcm / engine / account_mapping_unittest.cc
blob5ce5d0544b398fe0a2d3981060ef860e5b3b0ee6
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.
5 #include "google_apis/gcm/engine/account_mapping.h"
7 #include <string>
9 #include "testing/gtest/include/gtest/gtest.h"
11 namespace gcm {
13 namespace {
15 TEST(AccountMappingTest, SerializeAccountMapping) {
16 AccountMapping account_mapping;
17 account_mapping.account_id = "acc_id";
18 account_mapping.email = "test@example.com";
19 account_mapping.access_token = "access_token";
20 account_mapping.status = AccountMapping::NEW;
21 account_mapping.status_change_timestamp = base::Time();
22 account_mapping.last_message_id.clear();
24 EXPECT_EQ("test@example.com&new&0", account_mapping.SerializeAsString());
26 account_mapping.status = AccountMapping::ADDING;
27 account_mapping.status_change_timestamp =
28 base::Time::FromInternalValue(1305797421259977LL);
29 account_mapping.last_message_id = "last_message_id_1";
31 EXPECT_EQ("test@example.com&adding&1305797421259977&last_message_id_1",
32 account_mapping.SerializeAsString());
34 account_mapping.status = AccountMapping::MAPPED;
36 EXPECT_EQ("test@example.com&mapped&1305797421259977&last_message_id_1",
37 account_mapping.SerializeAsString());
39 account_mapping.last_message_id.clear();
41 EXPECT_EQ("test@example.com&mapped&1305797421259977",
42 account_mapping.SerializeAsString());
44 account_mapping.account_id = "acc_id2";
45 account_mapping.email = "test@gmail.com";
46 account_mapping.access_token = "access_token"; // should be ignored.
47 account_mapping.status = AccountMapping::REMOVING;
48 account_mapping.last_message_id = "last_message_id_2";
50 EXPECT_EQ("test@gmail.com&removing&1305797421259977&last_message_id_2",
51 account_mapping.SerializeAsString());
54 TEST(AccountMappingTest, DeserializeAccountMapping) {
55 AccountMapping account_mapping;
56 account_mapping.account_id = "acc_id";
58 EXPECT_TRUE(account_mapping.ParseFromString("test@example.com&new&0"));
59 EXPECT_EQ("acc_id", account_mapping.account_id);
60 EXPECT_EQ("test@example.com", account_mapping.email);
61 EXPECT_TRUE(account_mapping.access_token.empty());
62 EXPECT_EQ(AccountMapping::NEW, account_mapping.status);
63 EXPECT_EQ(base::Time(), account_mapping.status_change_timestamp);
64 EXPECT_TRUE(account_mapping.last_message_id.empty());
66 EXPECT_TRUE(account_mapping.ParseFromString(
67 "test@gmail.com&adding&1305797421259977&last_message_id_1"));
68 EXPECT_EQ("acc_id", account_mapping.account_id);
69 EXPECT_EQ("test@gmail.com", account_mapping.email);
70 EXPECT_TRUE(account_mapping.access_token.empty());
71 EXPECT_EQ(AccountMapping::ADDING, account_mapping.status);
72 EXPECT_EQ(base::Time::FromInternalValue(1305797421259977LL),
73 account_mapping.status_change_timestamp);
74 EXPECT_EQ("last_message_id_1", account_mapping.last_message_id);
76 EXPECT_TRUE(account_mapping.ParseFromString(
77 "test@example.com&mapped&1305797421259977"));
78 EXPECT_EQ("acc_id", account_mapping.account_id);
79 EXPECT_EQ("test@example.com", account_mapping.email);
80 EXPECT_TRUE(account_mapping.access_token.empty());
81 EXPECT_EQ(AccountMapping::MAPPED, account_mapping.status);
82 EXPECT_EQ(base::Time::FromInternalValue(1305797421259977LL),
83 account_mapping.status_change_timestamp);
84 EXPECT_TRUE(account_mapping.last_message_id.empty());
86 EXPECT_TRUE(account_mapping.ParseFromString(
87 "test@gmail.com&mapped&1305797421259977&last_message_id_1"));
88 EXPECT_EQ("acc_id", account_mapping.account_id);
89 EXPECT_EQ("test@gmail.com", account_mapping.email);
90 EXPECT_TRUE(account_mapping.access_token.empty());
91 EXPECT_EQ(AccountMapping::MAPPED, account_mapping.status);
92 EXPECT_EQ(base::Time::FromInternalValue(1305797421259977LL),
93 account_mapping.status_change_timestamp);
94 EXPECT_EQ("last_message_id_1", account_mapping.last_message_id);
96 EXPECT_TRUE(account_mapping.ParseFromString(
97 "test@gmail.com&removing&1305797421259977&last_message_id_2"));
98 EXPECT_EQ("acc_id", account_mapping.account_id);
99 EXPECT_EQ("test@gmail.com", account_mapping.email);
100 EXPECT_TRUE(account_mapping.access_token.empty());
101 EXPECT_EQ(AccountMapping::REMOVING, account_mapping.status);
102 EXPECT_EQ(base::Time::FromInternalValue(1305797421259977LL),
103 account_mapping.status_change_timestamp);
104 EXPECT_EQ("last_message_id_2", account_mapping.last_message_id);
107 TEST(AccountMappingTest, DeserializeAccountMappingInvalidInput) {
108 AccountMapping account_mapping;
109 account_mapping.account_id = "acc_id";
110 // Too many agruments.
111 EXPECT_FALSE(account_mapping.ParseFromString(
112 "test@example.com&adding&1305797421259935&last_message_id_1&stuff_here"));
113 // Too few arguments.
114 EXPECT_FALSE(account_mapping.ParseFromString(
115 "test@example.com&removing&1305797421259935"));
116 // Too few arguments.
117 EXPECT_FALSE(account_mapping.ParseFromString(
118 "test@example.com&adding&1305797421259935"));
119 // Too few arguments.
120 EXPECT_FALSE(account_mapping.ParseFromString(
121 "test@example.com&new"));
122 // Too few arguments.
123 EXPECT_FALSE(account_mapping.ParseFromString(
124 "test@example.com&mapped"));
125 // Missing email.
126 EXPECT_FALSE(account_mapping.ParseFromString(
127 "&remove&1305797421259935&last_message_id_2"));
128 // Missing mapping status.
129 EXPECT_FALSE(account_mapping.ParseFromString(
130 "test@example.com&&1305797421259935&last_message_id_2"));
131 // Unkown mapping status.
132 EXPECT_FALSE(account_mapping.ParseFromString(
133 "test@example.com&random&1305797421259935&last_message_id_2"));
134 // Missing mapping status change timestamp.
135 EXPECT_FALSE(account_mapping.ParseFromString(
136 "test@gmail.com&removing&&last_message_id_2"));
137 // Last mapping status change timestamp not parseable.
138 EXPECT_FALSE(account_mapping.ParseFromString(
139 "test@gmail.com&removing&asdfjkl&last_message_id_2"));
140 // Missing last message ID.
141 EXPECT_FALSE(account_mapping.ParseFromString(
142 "test@example.com&removing&1305797421259935&"));
145 } // namespace
146 } // namespace gcm