Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2492)

Unified Diff: chrome/browser/local_discovery/privet_http_unittest.cc

Issue 1553333002: Move cloud print specific files out of local_discovery (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@moveprn
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/local_discovery/privet_http_unittest.cc
diff --git a/chrome/browser/local_discovery/privet_http_unittest.cc b/chrome/browser/local_discovery/privet_http_unittest.cc
deleted file mode 100644
index 84d0a705b8077b66d5a3a6d227c733742f449f77..0000000000000000000000000000000000000000
--- a/chrome/browser/local_discovery/privet_http_unittest.cc
+++ /dev/null
@@ -1,1121 +0,0 @@
-// Copyright 2013 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/local_discovery/privet_http.h"
-
-#include <utility>
-
-#include "base/json/json_reader.h"
-#include "base/json/json_writer.h"
-#include "base/run_loop.h"
-#include "chrome/browser/local_discovery/privet_http_impl.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/test/test_browser_thread_bundle.h"
-#include "net/test/embedded_test_server/embedded_test_server.h"
-#include "net/url_request/test_url_fetcher_factory.h"
-#include "net/url_request/url_request_test_util.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-#if defined(ENABLE_PRINT_PREVIEW)
-#include "chrome/browser/local_discovery/pwg_raster_converter.h"
-#include "printing/pwg_raster_settings.h"
-#endif // ENABLE_PRINT_PREVIEW
-
-namespace local_discovery {
-
-namespace {
-
-using testing::NiceMock;
-using testing::StrictMock;
-using testing::TestWithParam;
-using testing::ValuesIn;
-
-using content::BrowserThread;
-using net::EmbeddedTestServer;
-
-const char kSampleInfoResponse[] = "{"
- " \"version\": \"1.0\","
- " \"name\": \"Common printer\","
- " \"description\": \"Printer connected through Chrome connector\","
- " \"url\": \"https://www.google.com/cloudprint\","
- " \"type\": ["
- " \"printer\""
- " ],"
- " \"id\": \"\","
- " \"device_state\": \"idle\","
- " \"connection_state\": \"online\","
- " \"manufacturer\": \"Google\","
- " \"model\": \"Google Chrome\","
- " \"serial_number\": \"1111-22222-33333-4444\","
- " \"firmware\": \"24.0.1312.52\","
- " \"uptime\": 600,"
- " \"setup_url\": \"http://support.google.com/\","
- " \"support_url\": \"http://support.google.com/cloudprint/?hl=en\","
- " \"update_url\": \"http://support.google.com/cloudprint/?hl=en\","
- " \"x-privet-token\": \"SampleTokenForTesting\","
- " \"api\": ["
- " \"/privet/accesstoken\","
- " \"/privet/capabilities\","
- " \"/privet/printer/submitdoc\","
- " ]"
- "}";
-
-const char kSampleInfoResponseRegistered[] = "{"
- " \"version\": \"1.0\","
- " \"name\": \"Common printer\","
- " \"description\": \"Printer connected through Chrome connector\","
- " \"url\": \"https://www.google.com/cloudprint\","
- " \"type\": ["
- " \"printer\""
- " ],"
- " \"id\": \"MyDeviceID\","
- " \"device_state\": \"idle\","
- " \"connection_state\": \"online\","
- " \"manufacturer\": \"Google\","
- " \"model\": \"Google Chrome\","
- " \"serial_number\": \"1111-22222-33333-4444\","
- " \"firmware\": \"24.0.1312.52\","
- " \"uptime\": 600,"
- " \"setup_url\": \"http://support.google.com/\","
- " \"support_url\": \"http://support.google.com/cloudprint/?hl=en\","
- " \"update_url\": \"http://support.google.com/cloudprint/?hl=en\","
- " \"x-privet-token\": \"SampleTokenForTesting\","
- " \"api\": ["
- " \"/privet/accesstoken\","
- " \"/privet/capabilities\","
- " \"/privet/printer/submitdoc\","
- " ]"
- "}";
-
-const char kSampleRegisterStartResponse[] = "{"
- "\"user\": \"example@google.com\","
- "\"action\": \"start\""
- "}";
-
-const char kSampleRegisterGetClaimTokenResponse[] = "{"
- " \"action\": \"getClaimToken\","
- " \"user\": \"example@google.com\","
- " \"token\": \"MySampleToken\","
- " \"claim_url\": \"https://domain.com/SoMeUrL\""
- "}";
-
-const char kSampleRegisterCompleteResponse[] = "{"
- "\"user\": \"example@google.com\","
- "\"action\": \"complete\","
- "\"device_id\": \"MyDeviceID\""
- "}";
-
-const char kSampleXPrivetErrorResponse[] =
- "{ \"error\": \"invalid_x_privet_token\" }";
-
-const char kSampleRegisterErrorTransient[] =
- "{ \"error\": \"device_busy\", \"timeout\": 1}";
-
-const char kSampleRegisterErrorPermanent[] =
- "{ \"error\": \"user_cancel\" }";
-
-const char kSampleInfoResponseBadJson[] = "{";
-
-const char kSampleRegisterCancelResponse[] = "{"
- "\"user\": \"example@google.com\","
- "\"action\": \"cancel\""
- "}";
-
-const char kSampleCapabilitiesResponse[] = "{"
- "\"version\" : \"1.0\","
- "\"printer\" : {"
- " \"supported_content_type\" : ["
- " { \"content_type\" : \"application/pdf\" },"
- " { \"content_type\" : \"image/pwg-raster\" }"
- " ]"
- "}"
- "}";
-
-#if defined(ENABLE_PRINT_PREVIEW)
-const char kSampleInfoResponseWithCreatejob[] = "{"
- " \"version\": \"1.0\","
- " \"name\": \"Common printer\","
- " \"description\": \"Printer connected through Chrome connector\","
- " \"url\": \"https://www.google.com/cloudprint\","
- " \"type\": ["
- " \"printer\""
- " ],"
- " \"id\": \"\","
- " \"device_state\": \"idle\","
- " \"connection_state\": \"online\","
- " \"manufacturer\": \"Google\","
- " \"model\": \"Google Chrome\","
- " \"serial_number\": \"1111-22222-33333-4444\","
- " \"firmware\": \"24.0.1312.52\","
- " \"uptime\": 600,"
- " \"setup_url\": \"http://support.google.com/\","
- " \"support_url\": \"http://support.google.com/cloudprint/?hl=en\","
- " \"update_url\": \"http://support.google.com/cloudprint/?hl=en\","
- " \"x-privet-token\": \"SampleTokenForTesting\","
- " \"api\": ["
- " \"/privet/accesstoken\","
- " \"/privet/capabilities\","
- " \"/privet/printer/createjob\","
- " \"/privet/printer/submitdoc\","
- " ]"
- "}";
-
-const char kSampleLocalPrintResponse[] = "{"
- "\"job_id\": \"123\","
- "\"expires_in\": 500,"
- "\"job_type\": \"application/pdf\","
- "\"job_size\": 16,"
- "\"job_name\": \"Sample job name\","
- "}";
-
-const char kSampleCapabilitiesResponsePWGOnly[] = "{"
- "\"version\" : \"1.0\","
- "\"printer\" : {"
- " \"supported_content_type\" : ["
- " { \"content_type\" : \"image/pwg-raster\" }"
- " ]"
- "}"
- "}";
-
-const char kSampleErrorResponsePrinterBusy[] = "{"
- "\"error\": \"invalid_print_job\","
- "\"timeout\": 1 "
- "}";
-
-const char kSampleInvalidDocumentTypeResponse[] = "{"
- "\"error\" : \"invalid_document_type\""
- "}";
-
-const char kSampleCreatejobResponse[] = "{ \"job_id\": \"1234\" }";
-
-const char kSampleCapabilitiesResponseWithAnyMimetype[] = "{"
- "\"version\" : \"1.0\","
- "\"printer\" : {"
- " \"supported_content_type\" : ["
- " { \"content_type\" : \"*/*\" },"
- " { \"content_type\" : \"image/pwg-raster\" }"
- " ]"
- "}"
- "}";
-
-const char kSampleCJT[] = "{ \"version\" : \"1.0\" }";
-
-const char kSampleCapabilitiesResponsePWGSettings[] =
- "{"
- "\"version\" : \"1.0\","
- "\"printer\" : {"
- " \"pwg_raster_config\" : {"
- " \"document_sheet_back\" : \"MANUAL_TUMBLE\","
- " \"reverse_order_streaming\": true"
- " },"
- " \"supported_content_type\" : ["
- " { \"content_type\" : \"image/pwg-raster\" }"
- " ]"
- "}"
- "}";
-
-const char kSampleCJTDuplex[] =
- "{"
- "\"version\" : \"1.0\","
- "\"print\": { \"duplex\": {\"type\": \"SHORT_EDGE\"} }"
- "}";
-#endif // ENABLE_PRINT_PREVIEW
-
-const char* const kTestParams[] = {"8.8.4.4", "2001:4860:4860::8888"};
-
-// Return the representation of the given JSON that would be outputted by
-// JSONWriter. This ensures the same JSON values are represented by the same
-// string.
-std::string NormalizeJson(const std::string& json) {
- std::string result = json;
- scoped_ptr<base::Value> value = base::JSONReader::Read(result);
- DCHECK(value) << result;
- base::JSONWriter::Write(*value, &result);
- return result;
-}
-
-class MockTestURLFetcherFactoryDelegate
- : public net::TestURLFetcher::DelegateForTests {
- public:
- // Callback issued correspondingly to the call to the |Start()| method.
- MOCK_METHOD1(OnRequestStart, void(int fetcher_id));
-
- // Callback issued correspondingly to the call to |AppendChunkToUpload|.
- // Uploaded chunks can be retrieved with the |upload_chunks()| getter.
- MOCK_METHOD1(OnChunkUpload, void(int fetcher_id));
-
- // Callback issued correspondingly to the destructor.
- MOCK_METHOD1(OnRequestEnd, void(int fetcher_id));
-};
-
-class PrivetHTTPTest : public TestWithParam<const char*> {
- public:
- PrivetHTTPTest() {
- PrivetURLFetcher::ResetTokenMapForTests();
-
- request_context_ = new net::TestURLRequestContextGetter(
- base::ThreadTaskRunnerHandle::Get());
- privet_client_ = PrivetV1HTTPClient::CreateDefault(
- make_scoped_ptr<PrivetHTTPClient>(new PrivetHTTPClientImpl(
- "sampleDevice._privet._tcp.local",
- net::HostPortPair(GetParam(), 6006), request_context_.get())));
- fetcher_factory_.SetDelegateForTests(&fetcher_delegate_);
- }
-
- GURL GetUrl(const std::string& path) const {
- std::string host = GetParam();
- if (host.find(":") != std::string::npos)
- host = "[" + host + "]";
- return GURL("http://" + host + ":6006" + path);
- }
-
- bool SuccessfulResponseToURL(const GURL& url,
- const std::string& response) {
- net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
- EXPECT_TRUE(fetcher);
- EXPECT_EQ(url, fetcher->GetOriginalURL());
-
- if (!fetcher || url != fetcher->GetOriginalURL())
- return false;
-
- fetcher->SetResponseString(response);
- fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS,
- net::OK));
- fetcher->set_response_code(200);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
- return true;
- }
-
- bool SuccessfulResponseToURLAndData(const GURL& url,
- const std::string& data,
- const std::string& response) {
- net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
- EXPECT_TRUE(fetcher);
- EXPECT_EQ(url, fetcher->GetOriginalURL());
-
- if (!fetcher) return false;
-
- EXPECT_EQ(data, fetcher->upload_data());
- if (data != fetcher->upload_data()) return false;
-
- return SuccessfulResponseToURL(url, response);
- }
-
- bool SuccessfulResponseToURLAndJSONData(const GURL& url,
- const std::string& data,
- const std::string& response) {
- net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
- EXPECT_TRUE(fetcher);
- EXPECT_EQ(url, fetcher->GetOriginalURL());
-
- if (!fetcher)
- return false;
-
- std::string normalized_data = NormalizeJson(data);
- std::string normalized_upload_data = NormalizeJson(fetcher->upload_data());
- EXPECT_EQ(normalized_data, normalized_upload_data);
- if (normalized_data != normalized_upload_data)
- return false;
-
- return SuccessfulResponseToURL(url, response);
- }
-
- bool SuccessfulResponseToURLAndFilePath(const GURL& url,
- const base::FilePath& file_path,
- const std::string& response) {
- net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
- EXPECT_TRUE(fetcher);
- EXPECT_EQ(url, fetcher->GetOriginalURL());
-
- if (!fetcher) return false;
-
- EXPECT_EQ(file_path, fetcher->upload_file_path());
- if (file_path != fetcher->upload_file_path()) return false;
-
- return SuccessfulResponseToURL(url, response);
- }
-
-
- void RunFor(base::TimeDelta time_period) {
- base::CancelableCallback<void()> callback(base::Bind(
- &PrivetHTTPTest::Stop, base::Unretained(this)));
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
- FROM_HERE, callback.callback(), time_period);
-
- base::MessageLoop::current()->Run();
- callback.Cancel();
- }
-
- void Stop() { base::MessageLoop::current()->QuitWhenIdle(); }
-
- protected:
- base::MessageLoop loop_;
- scoped_refptr<net::TestURLRequestContextGetter> request_context_;
- net::TestURLFetcherFactory fetcher_factory_;
- scoped_ptr<PrivetV1HTTPClient> privet_client_;
- NiceMock<MockTestURLFetcherFactoryDelegate> fetcher_delegate_;
-};
-
-class MockJSONCallback{
- public:
- void OnPrivetJSONDone(const base::DictionaryValue* value) {
- if (!value) {
- value_.reset();
- } else {
- value_.reset(value->DeepCopy());
- }
-
- OnPrivetJSONDoneInternal();
- }
-
- MOCK_METHOD0(OnPrivetJSONDoneInternal, void());
-
- const base::DictionaryValue* value() { return value_.get(); }
- PrivetJSONOperation::ResultCallback callback() {
- return base::Bind(&MockJSONCallback::OnPrivetJSONDone,
- base::Unretained(this));
- }
- protected:
- scoped_ptr<base::DictionaryValue> value_;
-};
-
-class MockRegisterDelegate : public PrivetRegisterOperation::Delegate {
- public:
- void OnPrivetRegisterClaimToken(
- PrivetRegisterOperation* operation,
- const std::string& token,
- const GURL& url) override {
- OnPrivetRegisterClaimTokenInternal(token, url);
- }
-
- MOCK_METHOD2(OnPrivetRegisterClaimTokenInternal, void(
- const std::string& token,
- const GURL& url));
-
- void OnPrivetRegisterError(
- PrivetRegisterOperation* operation,
- const std::string& action,
- PrivetRegisterOperation::FailureReason reason,
- int printer_http_code,
- const base::DictionaryValue* json) override {
- // TODO(noamsml): Save and test for JSON?
- OnPrivetRegisterErrorInternal(action, reason, printer_http_code);
- }
-
- MOCK_METHOD3(OnPrivetRegisterErrorInternal,
- void(const std::string& action,
- PrivetRegisterOperation::FailureReason reason,
- int printer_http_code));
-
- void OnPrivetRegisterDone(
- PrivetRegisterOperation* operation,
- const std::string& device_id) override {
- OnPrivetRegisterDoneInternal(device_id);
- }
-
- MOCK_METHOD1(OnPrivetRegisterDoneInternal,
- void(const std::string& device_id));
-};
-
-class MockLocalPrintDelegate : public PrivetLocalPrintOperation::Delegate {
- public:
- virtual void OnPrivetPrintingDone(
- const PrivetLocalPrintOperation* print_operation) {
- OnPrivetPrintingDoneInternal();
- }
-
- MOCK_METHOD0(OnPrivetPrintingDoneInternal, void());
-
- virtual void OnPrivetPrintingError(
- const PrivetLocalPrintOperation* print_operation, int http_code) {
- OnPrivetPrintingErrorInternal(http_code);
- }
-
- MOCK_METHOD1(OnPrivetPrintingErrorInternal, void(int http_code));
-};
-
-class PrivetInfoTest : public PrivetHTTPTest {
- public:
- void SetUp() override {
- info_operation_ = privet_client_->CreateInfoOperation(
- info_callback_.callback());
- }
-
- protected:
- scoped_ptr<PrivetJSONOperation> info_operation_;
- StrictMock<MockJSONCallback> info_callback_;
-};
-
-INSTANTIATE_TEST_CASE_P(PrivetTests, PrivetInfoTest, ValuesIn(kTestParams));
-
-TEST_P(PrivetInfoTest, SuccessfulInfo) {
- info_operation_->Start();
-
- net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
- ASSERT_TRUE(fetcher != NULL);
- EXPECT_EQ(GetUrl("/privet/info"), fetcher->GetOriginalURL());
-
- fetcher->SetResponseString(kSampleInfoResponse);
- fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS,
- net::OK));
- fetcher->set_response_code(200);
-
- EXPECT_CALL(info_callback_, OnPrivetJSONDoneInternal());
- fetcher->delegate()->OnURLFetchComplete(fetcher);
-}
-
-TEST_P(PrivetInfoTest, InfoFailureHTTP) {
- info_operation_->Start();
-
- net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
- ASSERT_TRUE(fetcher != NULL);
- fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS,
- net::OK));
- fetcher->set_response_code(404);
-
- EXPECT_CALL(info_callback_, OnPrivetJSONDoneInternal());
- fetcher->delegate()->OnURLFetchComplete(fetcher);
-}
-
-class PrivetRegisterTest : public PrivetHTTPTest {
- public:
- void SetUp() override {
- info_operation_ = privet_client_->CreateInfoOperation(
- info_callback_.callback());
- register_operation_ =
- privet_client_->CreateRegisterOperation("example@google.com",
- &register_delegate_);
- }
-
- protected:
- bool SuccessfulResponseToURL(const GURL& url,
- const std::string& response) {
- net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
- EXPECT_TRUE(fetcher);
- EXPECT_EQ(url, fetcher->GetOriginalURL());
- if (!fetcher || url != fetcher->GetOriginalURL())
- return false;
-
- fetcher->SetResponseString(response);
- fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS,
- net::OK));
- fetcher->set_response_code(200);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
- return true;
- }
-
- scoped_ptr<PrivetJSONOperation> info_operation_;
- NiceMock<MockJSONCallback> info_callback_;
- scoped_ptr<PrivetRegisterOperation> register_operation_;
- StrictMock<MockRegisterDelegate> register_delegate_;
-};
-
-TEST_P(PrivetRegisterTest, RegisterSuccessSimple) {
- register_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/register?"
- "action=start&user=example%40google.com"),
- kSampleRegisterStartResponse));
-
- EXPECT_CALL(register_delegate_, OnPrivetRegisterClaimTokenInternal(
- "MySampleToken",
- GURL("https://domain.com/SoMeUrL")));
-
- EXPECT_TRUE(SuccessfulResponseToURL(
- GetUrl("/privet/register?"
- "action=getClaimToken&user=example%40google.com"),
- kSampleRegisterGetClaimTokenResponse));
-
- register_operation_->CompleteRegistration();
-
- EXPECT_TRUE(SuccessfulResponseToURL(
- GetUrl("/privet/register?"
- "action=complete&user=example%40google.com"),
- kSampleRegisterCompleteResponse));
-
- EXPECT_CALL(register_delegate_, OnPrivetRegisterDoneInternal(
- "MyDeviceID"));
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/info"),
- kSampleInfoResponseRegistered));
-}
-
-TEST_P(PrivetRegisterTest, RegisterXSRFFailure) {
- register_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/register?"
- "action=start&user=example%40google.com"),
- kSampleRegisterStartResponse));
-
- EXPECT_TRUE(SuccessfulResponseToURL(
- GetUrl("/privet/register?"
- "action=getClaimToken&user=example%40google.com"),
- kSampleXPrivetErrorResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_CALL(register_delegate_, OnPrivetRegisterClaimTokenInternal(
- "MySampleToken", GURL("https://domain.com/SoMeUrL")));
-
- EXPECT_TRUE(SuccessfulResponseToURL(
- GetUrl("/privet/register?"
- "action=getClaimToken&user=example%40google.com"),
- kSampleRegisterGetClaimTokenResponse));
-}
-
-TEST_P(PrivetRegisterTest, TransientFailure) {
- register_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/register?"
- "action=start&user=example%40google.com"),
- kSampleRegisterErrorTransient));
-
- EXPECT_CALL(fetcher_delegate_, OnRequestStart(0));
-
- RunFor(base::TimeDelta::FromSeconds(2));
-
- testing::Mock::VerifyAndClearExpectations(&fetcher_delegate_);
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/register?"
- "action=start&user=example%40google.com"),
- kSampleRegisterStartResponse));
-}
-
-TEST_P(PrivetRegisterTest, PermanentFailure) {
- register_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/register?"
- "action=start&user=example%40google.com"),
- kSampleRegisterStartResponse));
-
- EXPECT_CALL(register_delegate_,
- OnPrivetRegisterErrorInternal(
- "getClaimToken",
- PrivetRegisterOperation::FAILURE_JSON_ERROR,
- 200));
-
- EXPECT_TRUE(SuccessfulResponseToURL(
- GetUrl("/privet/register?"
- "action=getClaimToken&user=example%40google.com"),
- kSampleRegisterErrorPermanent));
-}
-
-TEST_P(PrivetRegisterTest, InfoFailure) {
- register_operation_->Start();
-
- EXPECT_CALL(register_delegate_,
- OnPrivetRegisterErrorInternal(
- "start",
- PrivetRegisterOperation::FAILURE_TOKEN,
- -1));
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/info"),
- kSampleInfoResponseBadJson));
-}
-
-TEST_P(PrivetRegisterTest, RegisterCancel) {
- register_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/register?"
- "action=start&user=example%40google.com"),
- kSampleRegisterStartResponse));
-
- register_operation_->Cancel();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/register?"
- "action=cancel&user=example%40google.com"),
- kSampleRegisterCancelResponse));
-
- // Must keep mocks alive for 3 seconds so the cancelation object can be
- // deleted.
- RunFor(base::TimeDelta::FromSeconds(3));
-}
-
-class PrivetCapabilitiesTest : public PrivetHTTPTest {
- public:
- void SetUp() override {
- capabilities_operation_ = privet_client_->CreateCapabilitiesOperation(
- capabilities_callback_.callback());
- }
-
- protected:
- scoped_ptr<PrivetJSONOperation> capabilities_operation_;
- StrictMock<MockJSONCallback> capabilities_callback_;
-};
-
-INSTANTIATE_TEST_CASE_P(PrivetTests,
- PrivetCapabilitiesTest,
- ValuesIn(kTestParams));
-
-TEST_P(PrivetCapabilitiesTest, SuccessfulCapabilities) {
- capabilities_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_CALL(capabilities_callback_, OnPrivetJSONDoneInternal());
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/capabilities"),
- kSampleCapabilitiesResponse));
-
- std::string version;
- EXPECT_TRUE(capabilities_callback_.value()->GetString("version", &version));
- EXPECT_EQ("1.0", version);
-}
-
-TEST_P(PrivetCapabilitiesTest, CacheToken) {
- capabilities_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_CALL(capabilities_callback_, OnPrivetJSONDoneInternal());
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/capabilities"),
- kSampleCapabilitiesResponse));
-
- capabilities_operation_ = privet_client_->CreateCapabilitiesOperation(
- capabilities_callback_.callback());
-
- capabilities_operation_->Start();
-
- EXPECT_CALL(capabilities_callback_, OnPrivetJSONDoneInternal());
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/capabilities"),
- kSampleCapabilitiesResponse));
-}
-
-TEST_P(PrivetCapabilitiesTest, BadToken) {
- capabilities_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/capabilities"),
- kSampleXPrivetErrorResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_CALL(capabilities_callback_, OnPrivetJSONDoneInternal());
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/capabilities"),
- kSampleCapabilitiesResponse));
-}
-
-#if defined(ENABLE_PRINT_PREVIEW)
-// A note on PWG raster conversion: The PWG raster converter used simply
-// converts strings to file paths based on them by appending "test.pdf", since
-// it's easier to test that way. Instead of using a mock, we simply check if the
-// request is uploading a file that is based on this pattern.
-class FakePWGRasterConverter : public PWGRasterConverter {
- public:
- void Start(base::RefCountedMemory* data,
- const printing::PdfRenderSettings& conversion_settings,
- const printing::PwgRasterSettings& bitmap_settings,
- const ResultCallback& callback) override {
- bitmap_settings_ = bitmap_settings;
- std::string data_str(data->front_as<char>(), data->size());
- callback.Run(true, base::FilePath().AppendASCII(data_str + "test.pdf"));
- }
-
- const printing::PwgRasterSettings& bitmap_settings() {
- return bitmap_settings_;
- }
-
- private:
- printing::PwgRasterSettings bitmap_settings_;
-};
-
-class PrivetLocalPrintTest : public PrivetHTTPTest {
- public:
- void SetUp() override {
- PrivetURLFetcher::ResetTokenMapForTests();
-
- local_print_operation_ = privet_client_->CreateLocalPrintOperation(
- &local_print_delegate_);
-
- scoped_ptr<FakePWGRasterConverter> pwg_converter(
- new FakePWGRasterConverter);
- pwg_converter_ = pwg_converter.get();
- local_print_operation_->SetPWGRasterConverterForTesting(
- std::move(pwg_converter));
- }
-
- scoped_refptr<base::RefCountedBytes> RefCountedBytesFromString(
- std::string str) {
- std::vector<unsigned char> str_vec;
- str_vec.insert(str_vec.begin(), str.begin(), str.end());
- return scoped_refptr<base::RefCountedBytes>(
- base::RefCountedBytes::TakeVector(&str_vec));
- }
-
- protected:
- scoped_ptr<PrivetLocalPrintOperation> local_print_operation_;
- StrictMock<MockLocalPrintDelegate> local_print_delegate_;
- FakePWGRasterConverter* pwg_converter_;
-};
-
-INSTANTIATE_TEST_CASE_P(PrivetTests,
- PrivetLocalPrintTest,
- ValuesIn(kTestParams));
-
-TEST_P(PrivetLocalPrintTest, SuccessfulLocalPrint) {
- local_print_operation_->SetUsername("sample@gmail.com");
- local_print_operation_->SetJobname("Sample job name");
- local_print_operation_->SetData(RefCountedBytesFromString(
- "Sample print data"));
- local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
- local_print_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
-
- // TODO(noamsml): Is encoding spaces as pluses standard?
- EXPECT_TRUE(SuccessfulResponseToURLAndData(
- GetUrl("/privet/printer/submitdoc?"
- "client_name=Chrome&user_name=sample%40gmail.com&"
- "job_name=Sample+job+name"),
- "Sample print data", kSampleLocalPrintResponse));
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulLocalPrintWithAnyMimetype) {
- local_print_operation_->SetUsername("sample@gmail.com");
- local_print_operation_->SetJobname("Sample job name");
- local_print_operation_->SetData(
- RefCountedBytesFromString("Sample print data"));
- local_print_operation_->SetCapabilities(
- kSampleCapabilitiesResponseWithAnyMimetype);
- local_print_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
-
- // TODO(noamsml): Is encoding spaces as pluses standard?
- EXPECT_TRUE(SuccessfulResponseToURLAndData(
- GetUrl("/privet/printer/submitdoc?"
- "client_name=Chrome&user_name=sample%40gmail.com&"
- "job_name=Sample+job+name"),
- "Sample print data", kSampleLocalPrintResponse));
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulPWGLocalPrint) {
- local_print_operation_->SetUsername("sample@gmail.com");
- local_print_operation_->SetJobname("Sample job name");
- local_print_operation_->SetData(
- RefCountedBytesFromString("path/to/"));
- local_print_operation_->SetCapabilities(kSampleCapabilitiesResponsePWGOnly);
- local_print_operation_->Start();
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
-
- // TODO(noamsml): Is encoding spaces as pluses standard?
- EXPECT_TRUE(SuccessfulResponseToURLAndFilePath(
- GetUrl("/privet/printer/submitdoc?"
- "client_name=Chrome&user_name=sample%40gmail.com"
- "&job_name=Sample+job+name"),
- base::FilePath(FILE_PATH_LITERAL("path/to/test.pdf")),
- kSampleLocalPrintResponse));
-
- EXPECT_EQ(printing::TRANSFORM_NORMAL,
- pwg_converter_->bitmap_settings().odd_page_transform);
- EXPECT_FALSE(pwg_converter_->bitmap_settings().rotate_all_pages);
- EXPECT_FALSE(pwg_converter_->bitmap_settings().reverse_page_order);
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulPWGLocalPrintDuplex) {
- local_print_operation_->SetUsername("sample@gmail.com");
- local_print_operation_->SetJobname("Sample job name");
- local_print_operation_->SetData(RefCountedBytesFromString("path/to/"));
- local_print_operation_->SetTicket(kSampleCJTDuplex);
- local_print_operation_->SetCapabilities(
- kSampleCapabilitiesResponsePWGSettings);
- local_print_operation_->Start();
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/info"),
- kSampleInfoResponseWithCreatejob));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(SuccessfulResponseToURLAndJSONData(
- GetUrl("/privet/printer/createjob"), kSampleCJTDuplex,
- kSampleCreatejobResponse));
-
- EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
-
- // TODO(noamsml): Is encoding spaces as pluses standard?
- EXPECT_TRUE(SuccessfulResponseToURLAndFilePath(
- GetUrl("/privet/printer/submitdoc?"
- "client_name=Chrome&user_name=sample%40gmail.com"
- "&job_name=Sample+job+name&job_id=1234"),
- base::FilePath(FILE_PATH_LITERAL("path/to/test.pdf")),
- kSampleLocalPrintResponse));
-
- EXPECT_EQ(printing::TRANSFORM_ROTATE_180,
- pwg_converter_->bitmap_settings().odd_page_transform);
- EXPECT_FALSE(pwg_converter_->bitmap_settings().rotate_all_pages);
- EXPECT_TRUE(pwg_converter_->bitmap_settings().reverse_page_order);
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulLocalPrintWithCreatejob) {
- local_print_operation_->SetUsername("sample@gmail.com");
- local_print_operation_->SetJobname("Sample job name");
- local_print_operation_->SetTicket(kSampleCJT);
- local_print_operation_->SetData(
- RefCountedBytesFromString("Sample print data"));
- local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
- local_print_operation_->Start();
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/info"),
- kSampleInfoResponseWithCreatejob));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURLAndJSONData(GetUrl("/privet/printer/createjob"),
- kSampleCJT, kSampleCreatejobResponse));
-
- EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
-
- // TODO(noamsml): Is encoding spaces as pluses standard?
- EXPECT_TRUE(SuccessfulResponseToURLAndData(
- GetUrl("/privet/printer/submitdoc?"
- "client_name=Chrome&user_name=sample%40gmail.com&"
- "job_name=Sample+job+name&job_id=1234"),
- "Sample print data", kSampleLocalPrintResponse));
-}
-
-TEST_P(PrivetLocalPrintTest, SuccessfulLocalPrintWithOverlongName) {
- local_print_operation_->SetUsername("sample@gmail.com");
- local_print_operation_->SetJobname(
- "123456789:123456789:123456789:123456789:123456789:123456789:123456789:");
- local_print_operation_->SetTicket(kSampleCJT);
- local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
- local_print_operation_->SetData(
- RefCountedBytesFromString("Sample print data"));
- local_print_operation_->Start();
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/info"),
- kSampleInfoResponseWithCreatejob));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURLAndJSONData(GetUrl("/privet/printer/createjob"),
- kSampleCJT, kSampleCreatejobResponse));
-
- EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
-
- // TODO(noamsml): Is encoding spaces as pluses standard?
- EXPECT_TRUE(SuccessfulResponseToURLAndData(
- GetUrl("/privet/printer/submitdoc?"
- "client_name=Chrome&user_name=sample%40gmail.com&"
- "job_name=123456789%3A123456789%3A123456789%3A1...123456789"
- "%3A123456789%3A123456789%3A&job_id=1234"),
- "Sample print data", kSampleLocalPrintResponse));
-}
-
-TEST_P(PrivetLocalPrintTest, PDFPrintInvalidDocumentTypeRetry) {
- local_print_operation_->SetUsername("sample@gmail.com");
- local_print_operation_->SetJobname("Sample job name");
- local_print_operation_->SetTicket(kSampleCJT);
- local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
- local_print_operation_->SetData(
- RefCountedBytesFromString("sample/path/"));
- local_print_operation_->Start();
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/info"),
- kSampleInfoResponseWithCreatejob));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURLAndJSONData(GetUrl("/privet/printer/createjob"),
- kSampleCJT, kSampleCreatejobResponse));
-
- // TODO(noamsml): Is encoding spaces as pluses standard?
- EXPECT_TRUE(SuccessfulResponseToURLAndData(
- GetUrl("/privet/printer/submitdoc?"
- "client_name=Chrome&user_name=sample%40gmail.com&"
- "job_name=Sample+job+name&job_id=1234"),
- "sample/path/", kSampleInvalidDocumentTypeResponse));
-
- EXPECT_CALL(local_print_delegate_, OnPrivetPrintingDoneInternal());
-
- EXPECT_TRUE(SuccessfulResponseToURLAndFilePath(
- GetUrl("/privet/printer/submitdoc?"
- "client_name=Chrome&user_name=sample%40gmail.com&"
- "job_name=Sample+job+name&job_id=1234"),
- base::FilePath(FILE_PATH_LITERAL("sample/path/test.pdf")),
- kSampleLocalPrintResponse));
-}
-
-TEST_P(PrivetLocalPrintTest, LocalPrintRetryOnInvalidJobID) {
- local_print_operation_->SetUsername("sample@gmail.com");
- local_print_operation_->SetJobname("Sample job name");
- local_print_operation_->SetTicket(kSampleCJT);
- local_print_operation_->SetCapabilities(kSampleCapabilitiesResponse);
- local_print_operation_->SetData(
- RefCountedBytesFromString("Sample print data"));
- local_print_operation_->Start();
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/info"),
- kSampleInfoResponseWithCreatejob));
-
- EXPECT_TRUE(
- SuccessfulResponseToURL(GetUrl("/privet/info"), kSampleInfoResponse));
-
- EXPECT_TRUE(
- SuccessfulResponseToURLAndJSONData(GetUrl("/privet/printer/createjob"),
- kSampleCJT, kSampleCreatejobResponse));
-
- EXPECT_TRUE(SuccessfulResponseToURLAndData(
- GetUrl("/privet/printer/submitdoc?"
- "client_name=Chrome&user_name=sample%40gmail.com&"
- "job_name=Sample+job+name&job_id=1234"),
- "Sample print data", kSampleErrorResponsePrinterBusy));
-
- RunFor(base::TimeDelta::FromSeconds(3));
-
- EXPECT_TRUE(SuccessfulResponseToURL(GetUrl("/privet/printer/createjob"),
- kSampleCreatejobResponse));
-}
-#endif // ENABLE_PRINT_PREVIEW
-
-class PrivetHttpWithServerTest : public ::testing::Test,
- public PrivetURLFetcher::Delegate {
- protected:
- PrivetHttpWithServerTest()
- : thread_bundle_(content::TestBrowserThreadBundle::REAL_IO_THREAD) {}
-
- void SetUp() override {
- context_getter_ = new net::TestURLRequestContextGetter(
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO));
-
- server_.reset(new EmbeddedTestServer(EmbeddedTestServer::TYPE_HTTP));
- ASSERT_TRUE(server_->Start());
-
- base::FilePath test_data_dir;
- ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &test_data_dir));
- server_->ServeFilesFromDirectory(
- test_data_dir.Append(FILE_PATH_LITERAL("chrome/test/data")));
-
- client_.reset(new PrivetHTTPClientImpl("test", server_->host_port_pair(),
- context_getter_));
- }
-
- void OnNeedPrivetToken(
- PrivetURLFetcher* fetcher,
- const PrivetURLFetcher::TokenCallback& callback) override {
- callback.Run("abc");
- }
-
- void OnError(PrivetURLFetcher* fetcher,
- PrivetURLFetcher::ErrorType error) override {
- done_ = true;
- success_ = false;
- error_ = error;
-
- base::MessageLoop::current()->PostTask(FROM_HERE, quit_);
- }
-
- void OnParsedJson(PrivetURLFetcher* fetcher,
- const base::DictionaryValue& value,
- bool has_error) override {
- NOTREACHED();
- base::MessageLoop::current()->PostTask(FROM_HERE, quit_);
- }
-
- bool OnRawData(PrivetURLFetcher* fetcher,
- bool response_is_file,
- const std::string& data_string,
- const base::FilePath& data_file) override {
- done_ = true;
- success_ = true;
-
- base::MessageLoop::current()->PostTask(FROM_HERE, quit_);
- return true;
- }
-
- bool Run() {
- success_ = false;
- done_ = false;
-
- base::RunLoop run_loop;
- quit_ = run_loop.QuitClosure();
-
- scoped_ptr<PrivetURLFetcher> fetcher = client_->CreateURLFetcher(
- server_->GetURL("/simple.html"), net::URLFetcher::GET, this);
-
- fetcher->SetMaxRetries(1);
- fetcher->Start();
-
- run_loop.Run();
-
- EXPECT_TRUE(done_);
- return success_;
- }
-
- bool success_ = false;
- bool done_ = false;
- PrivetURLFetcher::ErrorType error_ = PrivetURLFetcher::ErrorType();
- content::TestBrowserThreadBundle thread_bundle_;
- scoped_refptr<net::TestURLRequestContextGetter> context_getter_;
- scoped_ptr<EmbeddedTestServer> server_;
- scoped_ptr<PrivetHTTPClientImpl> client_;
-
- base::Closure quit_;
-};
-
-TEST_F(PrivetHttpWithServerTest, HttpServer) {
- EXPECT_TRUE(Run());
-}
-
-} // namespace
-
-} // namespace local_discovery
« no previous file with comments | « chrome/browser/local_discovery/privet_http_impl.cc ('k') | chrome/browser/local_discovery/privet_local_printer_lister.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698