15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "google_apis/gaia/gaia_auth_util.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gaia { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, EmailAddressNoOp) { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char lower_case[] = "user@what.com"; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(lower_case, CanonicalizeEmail(lower_case)); 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, EmailAddressIgnoreCaps) { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CanonicalizeEmail("user@what.com"), 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalizeEmail("UsEr@what.com")); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, EmailAddressIgnoreDomainCaps) { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CanonicalizeEmail("user@what.com"), 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalizeEmail("UsEr@what.COM")); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, EmailAddressRejectOneUsernameDot) { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(CanonicalizeEmail("u.ser@what.com"), 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalizeEmail("UsEr@what.com")); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, EmailAddressMatchWithOneUsernameDot) { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CanonicalizeEmail("u.ser@what.com"), 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalizeEmail("U.sEr@what.com")); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, EmailAddressIgnoreOneUsernameDot) { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CanonicalizeEmail("us.er@gmail.com"), 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalizeEmail("UsEr@gmail.com")); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, EmailAddressIgnoreManyUsernameDots) { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CanonicalizeEmail("u.ser@gmail.com"), 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalizeEmail("Us.E.r@gmail.com")); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, EmailAddressIgnoreConsecutiveUsernameDots) { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(CanonicalizeEmail("use.r@gmail.com"), 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalizeEmail("Us....E.r@gmail.com")); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, EmailAddressDifferentOnesRejected) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(CanonicalizeEmail("who@what.com"), 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CanonicalizeEmail("Us....E.r@what.com")); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochTEST(GaiaAuthUtilTest, GooglemailNotCanonicalizedToGmail) { 58a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch const char googlemail[] = "user@googlemail.com"; 59a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch EXPECT_EQ(googlemail, CanonicalizeEmail(googlemail)); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, CanonicalizeDomain) { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char domain[] = "example.com"; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(domain, CanonicalizeDomain("example.com")); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(domain, CanonicalizeDomain("EXAMPLE.cOm")); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, ExtractDomainName) { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char domain[] = "example.com"; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(domain, ExtractDomainName("who@example.com")); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(domain, ExtractDomainName("who@EXAMPLE.cOm")); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, SanitizeMissingDomain) { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("nodomain@gmail.com", SanitizeEmail("nodomain")); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, SanitizeExistingDomain) { 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char existing[] = "test@example.com"; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(existing, SanitizeEmail(existing)); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(GaiaAuthUtilTest, AreEmailsSame) { 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(AreEmailsSame("foo", "foo")); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(AreEmailsSame("foo", "foo@gmail.com")); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(AreEmailsSame("foo@gmail.com", "Foo@Gmail.com")); 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(AreEmailsSame("foo@gmail.com", "foo@othermail.com")); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(AreEmailsSame("user@gmail.com", "foo@gmail.com")); 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 91a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochTEST(GaiaAuthUtilTest, GmailAndGooglemailAreSame) { 92a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch EXPECT_TRUE(AreEmailsSame("foo@gmail.com", "foo@googlemail.com")); 93a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch EXPECT_FALSE(AreEmailsSame("bar@gmail.com", "foo@googlemail.com")); 94a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch} 95a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(GaiaAuthUtilTest, IsGaiaSignonRealm) { 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Only https versions of Gaia URLs should be considered valid. 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(IsGaiaSignonRealm(GURL("https://accounts.google.com/"))); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(IsGaiaSignonRealm(GURL("http://accounts.google.com/"))); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Other Google URLs are not valid. 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(IsGaiaSignonRealm(GURL("https://www.google.com/"))); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(IsGaiaSignonRealm(GURL("http://www.google.com/"))); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(IsGaiaSignonRealm(GURL("https://google.com/"))); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(IsGaiaSignonRealm(GURL("https://mail.google.com/"))); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Other https URLs are not valid. 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(IsGaiaSignonRealm(GURL("https://www.example.com/"))); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 111a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)TEST(GaiaAuthUtilTest, ParseListAccountsData) { 112a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<std::pair<std::string, bool> > accounts; 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_FALSE(ParseListAccountsData("", &accounts)); 114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_EQ(0u, accounts.size()); 115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_FALSE(ParseListAccountsData("1", &accounts)); 117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_EQ(0u, accounts.size()); 118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_FALSE(ParseListAccountsData("[]", &accounts)); 120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_EQ(0u, accounts.size()); 121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_FALSE(ParseListAccountsData("[\"foo\", \"bar\"]", &accounts)); 123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_EQ(0u, accounts.size()); 124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(ParseListAccountsData("[\"foo\", []]", &accounts)); 126a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_EQ(0u, accounts.size()); 127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(ParseListAccountsData( 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "[\"foo\", [[\"bar\", 0, \"name\", 0, \"photo\", 0, 0, 0]]]", &accounts)); 130a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_EQ(0u, accounts.size()); 131a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(ParseListAccountsData( 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "[\"foo\", [[\"bar\", 0, \"name\", \"u@g.c\", \"photo\", 0, 0, 0]]]", 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &accounts)); 135a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_EQ(1u, accounts.size()); 136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ("u@g.c", accounts[0].first); 137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(accounts[0].second); 138a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(ParseListAccountsData( 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "[\"foo\", [[\"bar1\", 0, \"name1\", \"u1@g.c\", \"photo1\", 0, 0, 0], " 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "[\"bar2\", 0, \"name2\", \"u2@g.c\", \"photo2\", 0, 0, 0]]]", 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &accounts)); 143a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ASSERT_EQ(2u, accounts.size()); 144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ("u1@g.c", accounts[0].first); 145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(accounts[0].second); 146a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ("u2@g.c", accounts[1].first); 147a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(accounts[1].second); 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_TRUE(ParseListAccountsData( 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "[\"foo\", [[\"b1\", 0, \"name1\", \"U1@g.c\", \"photo1\", 0, 0, 0], " 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "[\"b2\", 0, \"name2\", \"u.2@g.c\", \"photo2\", 0, 0, 0]]]", 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) &accounts)); 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ASSERT_EQ(2u, accounts.size()); 154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(CanonicalizeEmail("U1@g.c"), accounts[0].first); 155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(accounts[0].second); 156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(CanonicalizeEmail("u.2@g.c"), accounts[1].first); 157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(accounts[1].second); 158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)TEST(GaiaAuthUtilTest, ParseListAccountsDataValidSession) { 161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::vector<std::pair<std::string, bool> > accounts; 162a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Missing valid session means: return account. 164a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(ParseListAccountsData( 165a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "[\"foo\", [[\"b\", 0, \"n\", \"u@g.c\", \"p\", 0, 0, 0]]]", 166a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) &accounts)); 167a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(1u, accounts.size()); 168a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ("u@g.c", accounts[0].first); 169a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(accounts[0].second); 170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Valid session is true means: return account. 172a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(ParseListAccountsData( 173a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "[\"foo\", [[\"b\", 0, \"n\", \"u@g.c\", \"p\", 0, 0, 0, 0, 1]]]", 174a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) &accounts)); 175a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(1u, accounts.size()); 176a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ("u@g.c", accounts[0].first); 177a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(accounts[0].second); 178a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 179a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Valid session is false means: return account with valid bit false. 180a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_TRUE(ParseListAccountsData( 181a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "[\"foo\", [[\"b\", 0, \"n\", \"u@g.c\", \"p\", 0, 0, 0, 0, 0]]]", 182a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) &accounts)); 183a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_EQ(1u, accounts.size()); 184a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ASSERT_FALSE(accounts[0].second); 185a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 186a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace gaia 188