1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROMEOS_LOGIN_AUTH_FAKE_EXTENDED_AUTHENTICATOR_H_
6#define CHROMEOS_LOGIN_AUTH_FAKE_EXTENDED_AUTHENTICATOR_H_
7
8#include "base/macros.h"
9#include "chromeos/chromeos_export.h"
10#include "chromeos/login/auth/extended_authenticator.h"
11#include "chromeos/login/auth/user_context.h"
12
13namespace chromeos {
14
15class AuthFailure;
16
17class CHROMEOS_EXPORT FakeExtendedAuthenticator : public ExtendedAuthenticator {
18 public:
19  FakeExtendedAuthenticator(NewAuthStatusConsumer* consumer,
20                            const UserContext& expected_user_context);
21  FakeExtendedAuthenticator(AuthStatusConsumer* consumer,
22                            const UserContext& expected_user_context);
23
24  // ExtendedAuthenticator:
25  virtual void SetConsumer(AuthStatusConsumer* consumer) override;
26  virtual void AuthenticateToMount(
27      const UserContext& context,
28      const ResultCallback& success_callback) override;
29  virtual void AuthenticateToCheck(
30      const UserContext& context,
31      const base::Closure& success_callback) override;
32  virtual void CreateMount(const std::string& user_id,
33                           const std::vector<cryptohome::KeyDefinition>& keys,
34                           const ResultCallback& success_callback) override;
35  virtual void AddKey(const UserContext& context,
36                      const cryptohome::KeyDefinition& key,
37                      bool replace_existing,
38                      const base::Closure& success_callback) override;
39  virtual void UpdateKeyAuthorized(
40      const UserContext& context,
41      const cryptohome::KeyDefinition& key,
42      const std::string& signature,
43      const base::Closure& success_callback) override;
44  virtual void RemoveKey(const UserContext& context,
45                         const std::string& key_to_remove,
46                         const base::Closure& success_callback) override;
47  virtual void TransformKeyIfNeeded(const UserContext& user_context,
48                                    const ContextCallback& callback) override;
49 private:
50  virtual ~FakeExtendedAuthenticator();
51
52  void OnAuthSuccess(const UserContext& context);
53  void OnAuthFailure(AuthState state, const AuthFailure& error);
54
55  NewAuthStatusConsumer* consumer_;
56  AuthStatusConsumer* old_consumer_;
57
58  UserContext expected_user_context_;
59
60  DISALLOW_COPY_AND_ASSIGN(FakeExtendedAuthenticator);
61};
62
63}  // namespace chromeos
64
65#endif  // CHROMEOS_LOGIN_AUTH_FAKE_EXTENDED_AUTHENTICATOR_H_
66