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

Unified Diff: components/proximity_auth/cryptauth/cryptauth_client_impl_unittest.cc

Issue 1066453002: Refactor CryptAuth component to be more testable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@cryptauth_securemessage
Patch Set: rename tests Created 5 years, 8 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: components/proximity_auth/cryptauth/cryptauth_client_impl_unittest.cc
diff --git a/components/proximity_auth/cryptauth/cryptauth_client_unittest.cc b/components/proximity_auth/cryptauth/cryptauth_client_impl_unittest.cc
similarity index 91%
rename from components/proximity_auth/cryptauth/cryptauth_client_unittest.cc
rename to components/proximity_auth/cryptauth/cryptauth_client_impl_unittest.cc
index 61d4d46c900c3026daee7a0175d94c980190bb3a..57ccb531f3ac87325c880ef64dfb30d326c73fa3 100644
--- a/components/proximity_auth/cryptauth/cryptauth_client_unittest.cc
+++ b/components/proximity_auth/cryptauth/cryptauth_client_impl_unittest.cc
@@ -2,13 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "components/proximity_auth/cryptauth/cryptauth_client.h"
+#include "components/proximity_auth/cryptauth/cryptauth_client_impl.h"
#include "base/command_line.h"
#include "base/test/null_task_runner.h"
#include "components/proximity_auth/cryptauth/cryptauth_access_token_fetcher.h"
#include "components/proximity_auth/cryptauth/cryptauth_api_call_flow.h"
-#include "components/proximity_auth/cryptauth/cryptauth_client_factory.h"
#include "components/proximity_auth/cryptauth/proto/cryptauth_api.pb.h"
#include "components/proximity_auth/switches.h"
#include "google_apis/gaia/fake_oauth2_token_service.h"
@@ -16,6 +15,7 @@
#include "net/url_request/url_request_test_util.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
using testing::_;
using testing::DoAll;
@@ -61,11 +61,12 @@ class FakeCryptAuthAccessTokenFetcher : public CryptAuthAccessTokenFetcher {
// Mock CryptAuthApiCallFlow, which handles the HTTP requests to CryptAuth.
class MockCryptAuthApiCallFlow : public CryptAuthApiCallFlow {
public:
- MockCryptAuthApiCallFlow() : CryptAuthApiCallFlow(GURL(std::string())) {}
+ MockCryptAuthApiCallFlow() : CryptAuthApiCallFlow() {}
virtual ~MockCryptAuthApiCallFlow() {}
- MOCK_METHOD5(Start,
- void(net::URLRequestContextGetter* context,
+ MOCK_METHOD6(Start,
+ void(const GURL&,
+ net::URLRequestContextGetter* context,
const std::string& access_token,
const std::string& serialized_request,
const ResultCallback& result_callback,
@@ -75,32 +76,6 @@ class MockCryptAuthApiCallFlow : public CryptAuthApiCallFlow {
DISALLOW_COPY_AND_ASSIGN(MockCryptAuthApiCallFlow);
};
-// Subclass of CryptAuthClient to use as test harness.
-class MockCryptAuthClient : public CryptAuthClient {
- public:
- // Ownership of |access_token_fetcher| is passed to the superclass. Due to the
- // limitations of gmock, we need to use a raw pointer argument rather than a
- // scoped_ptr.
- MockCryptAuthClient(
- CryptAuthAccessTokenFetcher* access_token_fetcher,
- scoped_refptr<net::URLRequestContextGetter> url_request_context,
- const cryptauth::DeviceClassifier& device_classifier)
- : CryptAuthClient(make_scoped_ptr(access_token_fetcher),
- url_request_context,
- device_classifier) {}
- virtual ~MockCryptAuthClient() {}
-
- MOCK_METHOD1(CreateFlowProxy, CryptAuthApiCallFlow*(const GURL& request_url));
-
- scoped_ptr<CryptAuthApiCallFlow> CreateFlow(
- const GURL& request_url) override {
- return make_scoped_ptr(CreateFlowProxy(request_url));
- };
-
- private:
- DISALLOW_COPY_AND_ASSIGN(MockCryptAuthClient);
-};
-
// Callback that should never be invoked.
template <class T>
void NotCalled(const T& type) {
@@ -119,6 +94,7 @@ class ProximityAuthCryptAuthClientTest : public testing::Test {
protected:
ProximityAuthCryptAuthClientTest()
: access_token_fetcher_(new FakeCryptAuthAccessTokenFetcher()),
+ api_call_flow_(new StrictMock<MockCryptAuthApiCallFlow>()),
url_request_context_(
new net::TestURLRequestContextGetter(new base::NullTaskRunner())),
serialized_request_(std::string()) {}
@@ -134,24 +110,20 @@ class ProximityAuthCryptAuthClientTest : public testing::Test {
device_classifier.set_device_software_package(kDeviceSoftwarePackage);
device_classifier.set_device_type(kDeviceType);
- client_.reset(new StrictMock<MockCryptAuthClient>(
- access_token_fetcher_, url_request_context_, device_classifier));
+ client_.reset(new CryptAuthClientImpl(
+ make_scoped_ptr(api_call_flow_), make_scoped_ptr(access_token_fetcher_),
+ url_request_context_, device_classifier));
}
// Sets up an expectation and captures a CryptAuth API request to
// |request_url|.
void ExpectRequest(const std::string& request_url) {
- StrictMock<MockCryptAuthApiCallFlow>* api_call_flow =
- new StrictMock<MockCryptAuthApiCallFlow>();
-
- EXPECT_CALL(*client_, CreateFlowProxy(GURL(request_url)))
- .WillOnce(Return(api_call_flow));
-
- EXPECT_CALL(*api_call_flow,
- Start(url_request_context_.get(), kAccessToken, _, _, _))
- .WillOnce(DoAll(SaveArg<2>(&serialized_request_),
- SaveArg<3>(&flow_result_callback_),
- SaveArg<4>(&flow_error_callback_)));
+ GURL url(request_url);
+ EXPECT_CALL(*api_call_flow_,
+ Start(url, url_request_context_.get(), kAccessToken, _, _, _))
+ .WillOnce(DoAll(SaveArg<3>(&serialized_request_),
+ SaveArg<4>(&flow_result_callback_),
+ SaveArg<5>(&flow_error_callback_)));
}
// Returns |response_proto| as the result to the current API request.
@@ -169,9 +141,11 @@ class ProximityAuthCryptAuthClientTest : public testing::Test {
protected:
// Owned by |client_|.
FakeCryptAuthAccessTokenFetcher* access_token_fetcher_;
+ // Owned by |client_|.
+ StrictMock<MockCryptAuthApiCallFlow>* api_call_flow_;
scoped_refptr<net::URLRequestContextGetter> url_request_context_;
- scoped_ptr<StrictMock<MockCryptAuthClient>> client_;
+ scoped_ptr<CryptAuthClient> client_;
std::string serialized_request_;
CryptAuthApiCallFlow::ResultCallback flow_result_callback_;

Powered by Google App Engine
This is Rietveld 408576698