blob: f17aa9eb84eba9c4d824d153ca1fc942921a1204 [file] [log] [blame]
// Copyright 2019 The Chromium OS 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 "smbfs/fake_kerberos_artifact_client.h"
#include <dbus/authpolicy/dbus-constants.h>
namespace smbfs {
FakeKerberosArtifactClient::FakeKerberosArtifactClient() = default;
void FakeKerberosArtifactClient::GetUserKerberosFiles(
const std::string& object_guid, GetUserKerberosFilesCallback callback) {
++call_count_;
if (!kerberos_files_map_.count(object_guid)) {
LOG(ERROR) << "FakeKerberosArtifactClient: No Kerberos Files found";
std::move(callback).Run(false /* success */, "", "");
return;
}
const authpolicy::KerberosFiles& files = kerberos_files_map_[object_guid];
std::move(callback).Run(true /* success */, files.krb5cc(), files.krb5conf());
}
void FakeKerberosArtifactClient::ConnectToKerberosFilesChangedSignal(
dbus::ObjectProxy::SignalCallback signal_callback,
dbus::ObjectProxy::OnConnectedCallback on_connected_callback) {
signal_callback_ = std::move(signal_callback);
std::move(on_connected_callback)
.Run(authpolicy::kAuthPolicyInterface,
authpolicy::kUserKerberosFilesChangedSignal, true /* success */);
}
void FakeKerberosArtifactClient::FireSignal() {
DCHECK(IsConnected());
dbus::Signal signal_to_send(authpolicy::kAuthPolicyInterface,
authpolicy::kUserKerberosFilesChangedSignal);
signal_callback_.Run(&signal_to_send);
}
bool FakeKerberosArtifactClient::IsConnected() const {
return !signal_callback_.is_null();
}
uint32_t FakeKerberosArtifactClient::GetFilesMethodCallCount() const {
return call_count_;
}
void FakeKerberosArtifactClient::AddKerberosFiles(
const std::string& account_guid,
const authpolicy::KerberosFiles& kerberos_files) {
kerberos_files_map_[account_guid] = kerberos_files;
}
void FakeKerberosArtifactClient::ResetKerberosFiles() {
kerberos_files_map_.clear();
}
} // namespace smbfs