// 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_confirm_api_flow.h" #include #include "base/json/json_reader.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" using testing::StrictMock; using testing::_; namespace local_discovery { namespace { const char kSampleConfirmResponse[] = "{" " \"success\": true" "}"; const char kFailedConfirmResponse[] = "{" " \"success\": false" "}"; TEST(PrivetConfirmApiFlowTest, Params) { PrivetConfirmApiCallFlow confirmation( "123", PrivetConfirmApiCallFlow::ResponseCallback()); EXPECT_EQ(GURL("https://www.google.com/cloudprint/confirm?token=123"), confirmation.GetURL()); EXPECT_EQ("https://www.googleapis.com/auth/cloudprint", confirmation.GetOAuthScope()); EXPECT_EQ(net::URLFetcher::GET, confirmation.GetRequestType()); EXPECT_FALSE(confirmation.GetExtraRequestHeaders().empty()); } class MockDelegate { public: MOCK_METHOD1(Callback, void(GCDApiFlow::Status)); }; TEST(PrivetConfirmApiFlowTest, Parsing) { StrictMock delegate; PrivetConfirmApiCallFlow confirmation( "123", base::Bind(&MockDelegate::Callback, base::Unretained(&delegate))); EXPECT_CALL(delegate, Callback(GCDApiFlow::SUCCESS)).Times(1); scoped_ptr value = base::JSONReader::Read(kSampleConfirmResponse); const base::DictionaryValue* dictionary = NULL; ASSERT_TRUE(value->GetAsDictionary(&dictionary)); confirmation.OnGCDAPIFlowComplete(*dictionary); EXPECT_CALL(delegate, Callback(GCDApiFlow::ERROR_FROM_SERVER)).Times(1); value.reset(base::JSONReader::DeprecatedRead(kFailedConfirmResponse)); ASSERT_TRUE(value->GetAsDictionary(&dictionary)); confirmation.OnGCDAPIFlowComplete(*dictionary); } } // namespace } // namespace local_discovery