- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / service / cloud_print / cloud_print_helpers_unittest.cc
1 // Copyright (c) 2012 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.
4
5 #include "chrome/service/cloud_print/cloud_print_helpers.h"
6
7 #include "base/md5.h"
8 #include "base/strings/stringprintf.h"
9 #include "base/sys_info.h"
10 #include "chrome/common/chrome_version_info.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace cloud_print {
14
15 namespace {
16
17 void CheckJobStatusURLs(const GURL& server_base_url) {
18   std::string expected_url_base = server_base_url.spec();
19   if (expected_url_base[expected_url_base.length() - 1] != '/')
20     expected_url_base += "/";
21
22   EXPECT_EQ(base::StringPrintf(
23                 "%scontrol?jobid=87654321&status=ERROR&connector_code=1",
24                 expected_url_base.c_str()),
25             GetUrlForJobStatusUpdate(server_base_url, "87654321",
26                 PRINT_JOB_STATUS_ERROR, 1).spec());
27
28   PrintJobDetails details;
29   details.status = PRINT_JOB_STATUS_IN_PROGRESS;
30   details.platform_status_flags = 2;
31   details.status_message = "Out of Paper";
32   details.total_pages = 345;
33   details.pages_printed = 47;
34   EXPECT_EQ(base::StringPrintf(
35                 "%scontrol?jobid=87654321&status=IN_PROGRESS&code=2"
36                 "&message=Out%%20of%%20Paper&numpages=345&pagesprinted=47",
37                 expected_url_base.c_str()),
38             GetUrlForJobStatusUpdate(
39                 server_base_url, "87654321", details).spec());
40 }
41
42 }  // namespace
43
44 TEST(CloudPrintServiceHelpersTest, GetURLs) {
45   CheckJobStatusURLs(GURL("https://www.google.com/cloudprint"));
46   CheckJobStatusURLs(GURL("https://www.google.com/cloudprint/"));
47   CheckJobStatusURLs(GURL("http://www.myprinterserver.com"));
48   CheckJobStatusURLs(GURL("http://www.myprinterserver.com/"));
49 }
50
51 TEST(CloudPrintServiceHelpersTest, GetHashOfPrinterInfo) {
52   printing::PrinterBasicInfo printer_info;
53   printer_info.options["tag1"] = std::string("value1");
54   printer_info.options["tag2"] = std::string("value2");
55
56   chrome::VersionInfo version_info;
57   std::string expected_list_string = base::StringPrintf(
58       "chrome_version%ssystem_name%ssystem_version%stag1value1tag2value2",
59       version_info.CreateVersionString().c_str(),
60       base::SysInfo::OperatingSystemName().c_str(),
61       base::SysInfo::OperatingSystemVersion().c_str());
62   EXPECT_EQ(base::MD5String(expected_list_string),
63             GetHashOfPrinterInfo(printer_info));
64 }
65
66 TEST(CloudPrintServiceHelpersTest, GetPostDataForPrinterInfo) {
67   printing::PrinterBasicInfo printer_info;
68   printer_info.options["tag1"] = std::string("value1");
69   printer_info.options["tag2"] = std::string("value2");
70
71   chrome::VersionInfo version_info;
72   std::string expected = base::StringPrintf(
73       "--test_mime_boundary\r\nContent-Disposition: form-data; name=\"tag\""
74       "\r\n\r\n__cp__chrome_version=%s\r\n"
75       "--test_mime_boundary\r\nContent-Disposition: form-data; name=\"tag\""
76       "\r\n\r\n__cp__system_name=%s\r\n"
77       "--test_mime_boundary\r\nContent-Disposition: form-data; name=\"tag\""
78       "\r\n\r\n__cp__system_version=%s\r\n"
79       "--test_mime_boundary\r\nContent-Disposition: form-data; name=\"tag\""
80       "\r\n\r\n__cp__tag1=value1\r\n"
81       "--test_mime_boundary\r\nContent-Disposition: form-data; name=\"tag\""
82       "\r\n\r\n__cp__tag2=value2\r\n"
83       "--test_mime_boundary\r\nContent-Disposition: form-data; name=\"tag\""
84       "\r\n\r\n__cp__tagshash=%s\r\n",
85       version_info.CreateVersionString().c_str(),
86       base::SysInfo::OperatingSystemName().c_str(),
87       base::SysInfo::OperatingSystemVersion().c_str(),
88       GetHashOfPrinterInfo(printer_info).c_str());
89
90   EXPECT_EQ(expected, GetPostDataForPrinterInfo(
91       printer_info, std::string("test_mime_boundary")));
92 }
93
94 TEST(CloudPrintServiceHelpersTest, IsDryRunJob) {
95   std::vector<std::string> tags_not_dry_run;
96   tags_not_dry_run.push_back("tag_1");
97   EXPECT_FALSE(IsDryRunJob(tags_not_dry_run));
98
99   std::vector<std::string> tags_dry_run;
100   tags_dry_run.push_back("__cp__dry_run");
101   EXPECT_TRUE(IsDryRunJob(tags_dry_run));
102 }
103
104 }  // namespace cloud_print
105