1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
// Copyright (c) 2011 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 "chrome/browser/profiles/profile_downloader.h"
#include "base/utf_string_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
std::string GetJSonData(const std::string& name, const std::string& url) {
std::stringstream stream;
stream << "{ ";
if (!name.empty())
stream << "\"name\": \"" << name << "\", ";
if (!url.empty())
stream << "\"picture\": \"" << url << "\", ";
stream << "\"locale\": \"en-US\" }";
return stream.str();
}
} // namespace
class ProfileDownloaderTest : public testing::Test {
protected:
ProfileDownloaderTest() {
}
virtual ~ProfileDownloaderTest() {
}
void VerifyWithNameAndURL(const std::string& name,
const std::string& url,
const std::string& expected_url,
bool is_valid) {
string16 parsed_name;
std::string parsed_url;
bool result = ProfileDownloader::GetProfileNameAndImageURL(
GetJSonData(name, url), &parsed_name, &parsed_url, 32);
EXPECT_EQ(is_valid, result);
std::string parsed_name_utf8 = UTF16ToUTF8(parsed_name);
EXPECT_EQ(name, parsed_name_utf8);
EXPECT_EQ(expected_url, parsed_url);
}
};
TEST_F(ProfileDownloaderTest, ParseData) {
// URL without size specified.
VerifyWithNameAndURL(
"Pat Smith",
"https://example.com/--Abc/AAAAAAAAAAI/AAAAAAAAACQ/Efg/photo.jpg",
"https://example.com/--Abc/AAAAAAAAAAI/AAAAAAAAACQ/Efg/s32-c/photo.jpg",
true);
// URL with size specified.
VerifyWithNameAndURL(
"Pat Smith",
"http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/abc12/s64-c/1234567890.jpg",
"http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/abc12/s32-c/1234567890.jpg",
true);
// URL with unknown format.
VerifyWithNameAndURL(
"Pat Smith",
"http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/",
"http://lh0.ggpht.com/-abcd1aBCDEf/AAAA/AAA_A/",
true);
// Data with only name.
VerifyWithNameAndURL("Pat Smith", "", "", true);
// Data with only URL.
VerifyWithNameAndURL(
"",
"https://example.com/--Abc/AAAAAAAAAAI/AAAAAAAAACQ/Efg/photo.jpg",
"https://example.com/--Abc/AAAAAAAAAAI/AAAAAAAAACQ/Efg/s32-c/photo.jpg",
true);
// Data without name or URL.
VerifyWithNameAndURL("", "", "", false);
// Data with an invalid URL.
VerifyWithNameAndURL( "", "invalid url", "", false);
}
TEST_F(ProfileDownloaderTest, DefaultURL) {
// Empty URL should be default photo
EXPECT_TRUE(ProfileDownloader::IsDefaultProfileImageURL(""));
// Picasa default photo
EXPECT_TRUE(ProfileDownloader::IsDefaultProfileImageURL(
"https://example.com/-4/AAAAAAAAAAA/AAAAAAAAAAE/G/s64-c/photo.jpg"));
// Not default G+ photo
EXPECT_FALSE(ProfileDownloader::IsDefaultProfileImageURL(
"https://example.com/-4/AAAAAAAAAAI/AAAAAAAAAAA/G/photo.jpg"));
// Not default with 6 components
EXPECT_FALSE(ProfileDownloader::IsDefaultProfileImageURL(
"https://example.com/-4/AAAAAAAAAAI/AAAAAAAAACQ/Efg/photo.jpg"));
// Not default with 7 components
EXPECT_FALSE(ProfileDownloader::IsDefaultProfileImageURL(
"https://example.com/-4/AAAAAAAAAAI/AAAAAAAAACQ/Efg/s32-c/photo.jpg"));
}
|