chromium/chrome/browser/ash/attestation/mock_tpm_challenge_key.cc

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/ash/attestation/mock_tpm_challenge_key.h"

#include <utility>

using ::testing::Invoke;
using ::testing::WithArgs;

namespace ash {
namespace attestation {

MockTpmChallengeKey::MockTpmChallengeKey() = default;
MockTpmChallengeKey::~MockTpmChallengeKey() = default;

void MockTpmChallengeKey::EnableFake() {
  ON_CALL(*this, BuildResponse)
      .WillByDefault(WithArgs<2>(
          Invoke(this, &MockTpmChallengeKey::FakeBuildResponseSuccess)));
}

void MockTpmChallengeKey::EnableFakeError(
    TpmChallengeKeyResultCode error_code) {
  ON_CALL(*this, BuildResponse)
      .WillByDefault(WithArgs<2>(
          Invoke([this, error_code](TpmChallengeKeyCallback callback) {
            MockTpmChallengeKey::FakeBuildResponseError(std::move(callback),
                                                        error_code);
          })));
}

void MockTpmChallengeKey::FakeBuildResponseSuccess(
    TpmChallengeKeyCallback callback) {
  std::move(callback).Run(
      TpmChallengeKeyResult::MakeChallengeResponse("response"));
}

void MockTpmChallengeKey::FakeBuildResponseError(
    TpmChallengeKeyCallback callback,
    TpmChallengeKeyResultCode error_code) {
  std::move(callback).Run(TpmChallengeKeyResult::MakeError(error_code));
}

}  // namespace attestation
}  // namespace ash