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"
9 #include "testing/gtest/include/gtest/gtest.h"
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"));
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&"));