summaryrefslogtreecommitdiffstats
path: root/chrome/service/cloud_print/cloud_print_helpers_unittest.cc
blob: f2a83971807c6843d3b154bf99c492cd203d0861 (plain)
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
103
// 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/service/cloud_print/cloud_print_helpers.h"

#include "base/stringprintf.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace {

void CheckURLs(const GURL& server_base_url) {
  GURL url = CloudPrintHelpers::GetUrlForPrinterRegistration(server_base_url);
  std::string expected_url_base = server_base_url.spec();
  if (expected_url_base[expected_url_base.length() - 1] != '/') {
    expected_url_base += "/";
  }
  std::string expected_url = base::StringPrintf("%sregister",
                                                expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  url = CloudPrintHelpers::GetUrlForPrinterUpdate(server_base_url,
                                                  "printeridfoo");
  expected_url = base::StringPrintf("%supdate?printerid=printeridfoo",
                                    expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  url = CloudPrintHelpers::GetUrlForPrinterDelete(server_base_url,
                                                  "printeridbar");
  expected_url = base::StringPrintf("%sdelete?printerid=printeridbar",
                                    expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  url = CloudPrintHelpers::GetUrlForPrinterList(server_base_url, "demoproxy");
  expected_url = base::StringPrintf("%slist?proxy=demoproxy",
                                    expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  url = CloudPrintHelpers::GetUrlForJobFetch(server_base_url,
                                             "myprinter",
                                             "nogoodreason");
  expected_url = base::StringPrintf(
      "%sfetch?printerid=myprinter&deb=nogoodreason",
      expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  url = CloudPrintHelpers::GetUrlForJobStatusUpdate(
      server_base_url, "12345678", cloud_print::PRINT_JOB_STATUS_IN_PROGRESS);
  expected_url = base::StringPrintf(
      "%scontrol?jobid=12345678&status=in_progress", expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  url = CloudPrintHelpers::GetUrlForJobStatusUpdate(
      server_base_url, "12345678", cloud_print::PRINT_JOB_STATUS_ERROR);
  expected_url = base::StringPrintf("%scontrol?jobid=12345678&status=error",
                                    expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  url = CloudPrintHelpers::GetUrlForJobStatusUpdate(
      server_base_url, "12345678", cloud_print::PRINT_JOB_STATUS_COMPLETED);
  expected_url = base::StringPrintf("%scontrol?jobid=12345678&status=done",
                                    expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  cloud_print::PrintJobDetails details;
  details.status = cloud_print::PRINT_JOB_STATUS_IN_PROGRESS;
  details.platform_status_flags = 2;
  details.status_message = "Out of Paper";
  details.total_pages = 345;
  details.pages_printed = 47;
  url = CloudPrintHelpers::GetUrlForJobStatusUpdate(server_base_url,
                                                    "87654321", details);
  expected_url = base::StringPrintf(
      "%scontrol?jobid=87654321&status=in_progress&code=2"
      "&message=Out%%20of%%20Paper&numpages=345&pagesprinted=47",
      expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  url = CloudPrintHelpers::GetUrlForUserMessage(server_base_url,
                                                "blahmessageid");
  expected_url = base::StringPrintf("%smessage?code=blahmessageid",
                                    expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());

  url = CloudPrintHelpers::GetUrlForGetAuthCode(
      server_base_url,
      "fooclientid.apps.googleusercontent.com",
      "test_proxy");
  expected_url = base::StringPrintf(
      "%screaterobot?oauth_client_id=fooclientid.apps.googleusercontent.com&"
      "proxy=test_proxy", expected_url_base.c_str());
  EXPECT_EQ(expected_url, url.spec());
}

}  // namespace

TEST(CloudPrintHelpersTest, URLGetters) {
  CheckURLs(GURL("https://www.google.com/cloudprint"));
  CheckURLs(GURL("https://www.google.com/cloudprint/"));
  CheckURLs(GURL("http://www.myprinterserver.com"));
  CheckURLs(GURL("http://www.myprinterserver.com/"));
}