// Copyright 2015 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 "remoting/test/mock_access_token_fetcher.h"

namespace remoting {
namespace test {

using ::testing::_;
using ::testing::Invoke;

MockAccessTokenFetcher::MockAccessTokenFetcher() {
}

MockAccessTokenFetcher::~MockAccessTokenFetcher() {
}

void MockAccessTokenFetcher::SetAccessTokenFetcher(
    scoped_ptr<AccessTokenFetcher> fetcher) {
  internal_access_token_fetcher_ = fetcher.Pass();

  ON_CALL(*this, GetAccessTokenFromAuthCode(_, _))
      .WillByDefault(Invoke(internal_access_token_fetcher_.get(),
                            &AccessTokenFetcher::GetAccessTokenFromAuthCode));
  ON_CALL(*this, GetAccessTokenFromRefreshToken(_, _))
      .WillByDefault(
          Invoke(internal_access_token_fetcher_.get(),
                 &AccessTokenFetcher::GetAccessTokenFromRefreshToken));
}

}  // namespace test
}  // namespace remoting
