Change FakePublicCertificateDb to be more compatible with Chrome unittests.

PiperOrigin-RevId: 603583582
This commit is contained in:
Francis Tsui
2024-02-02 17:20:12 -08:00
committed by Copybara-Service
parent e1dd4fd535
commit e4fea7a594
3 changed files with 112 additions and 49 deletions
@@ -14,12 +14,12 @@
#include "sharing/internal/test/fake_public_certificate_db.h"
#include <map>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "absl/container/flat_hash_map.h"
#include "absl/functional/any_invocable.h"
#include "absl/types/span.h"
#include "sharing/internal/api/public_certificate_database.h"
@@ -29,36 +29,33 @@ namespace nearby {
using ::nearby::sharing::proto::PublicCertificate;
FakePublicCertificateDb::FakePublicCertificateDb(
std::map<std::string, PublicCertificate> entries)
: entries_(std::move(entries)) {}
void FakePublicCertificateDb::Initialize(
absl::AnyInvocable<void(PublicCertificateDatabase::InitStatus) &&>
callback) {
std::move(callback)(PublicCertificateDatabase::InitStatus::kOk);
init_status_callback_ = std::move(callback);
}
void FakePublicCertificateDb::LoadEntries(
absl::AnyInvocable<void(bool,
std::unique_ptr<std::vector<PublicCertificate>>) &&>
callback) {
auto result = std::make_unique<std::vector<PublicCertificate>>();
auto it = entries_.begin();
while (it != entries_.end()) {
result->push_back(it->second);
++it;
}
std::move(callback)(true, std::move(result));
load_callback_ = std::move(callback);
}
void FakePublicCertificateDb::AddCertificates(
absl::Span<const PublicCertificate> certificates,
absl::AnyInvocable<void(bool) &&> callback) {
for (const auto& cert : certificates) {
if (entries_.contains(cert.secret_id())) {
if (entries_.find(cert.secret_id()) != entries_.end()) {
entries_.erase(cert.secret_id());
}
entries_.emplace(cert.secret_id(), cert);
}
std::move(callback)(true);
add_callback_ = std::move(callback);
}
void FakePublicCertificateDb::RemoveCertificatesById(
@@ -69,13 +66,41 @@ void FakePublicCertificateDb::RemoveCertificatesById(
entries_.erase(*it);
++it;
}
std::move(callback)(true);
remove_callback_ = std::move(callback);
}
void FakePublicCertificateDb::Destroy(
absl::AnyInvocable<void(bool) &&> callback) {
entries_.clear();
std::move(callback)(true);
destroy_callback_ = std::move(callback);
}
void FakePublicCertificateDb::InvokeInitStatusCallback(
PublicCertificateDatabase::InitStatus init_status) {
std::move(init_status_callback_)(init_status);
}
void FakePublicCertificateDb::InvokeLoadCallback(bool success) {
auto result = std::make_unique<std::vector<PublicCertificate>>();
auto it = entries_.begin();
while (it != entries_.end()) {
result->push_back(it->second);
++it;
}
std::move(load_callback_)(success, std::move(result));
}
void FakePublicCertificateDb::InvokeAddCallback(bool success) {
std::move(add_callback_)(success);
}
void FakePublicCertificateDb::InvokeRemoveCallback(bool success) {
std::move(remove_callback_)(success);
}
void FakePublicCertificateDb::InvokeDestroyCallback(bool success) {
std::move(destroy_callback_)(success);
}
} // namespace nearby
@@ -15,11 +15,11 @@
#ifndef THIRD_PARTY_NEARBY_SHARING_INTERNAL_TEST_FAKE_PUBLIC_CERTIFICATE_DB_H_
#define THIRD_PARTY_NEARBY_SHARING_INTERNAL_TEST_FAKE_PUBLIC_CERTIFICATE_DB_H_
#include <map>
#include <memory>
#include <string>
#include <vector>
#include "absl/container/flat_hash_map.h"
#include "absl/functional/any_invocable.h"
#include "absl/types/span.h"
#include "sharing/internal/api/public_certificate_database.h"
@@ -29,7 +29,8 @@ namespace nearby {
class FakePublicCertificateDb
: public nearby::sharing::api::PublicCertificateDatabase {
public:
FakePublicCertificateDb() = default;
explicit FakePublicCertificateDb(
std::map<std::string, nearby::sharing::proto::PublicCertificate> entries);
~FakePublicCertificateDb() override = default;
void Initialize(
@@ -49,14 +50,32 @@ class FakePublicCertificateDb
absl::AnyInvocable<void(bool) &&> callback) override;
void Destroy(absl::AnyInvocable<void(bool) &&> callback) override;
absl::flat_hash_map<std::string, nearby::sharing::proto::PublicCertificate>
std::map<std::string, nearby::sharing::proto::PublicCertificate>
GetCertificatesMap() {
return entries_;
}
// Invoke callbacks
void InvokeInitStatusCallback(
nearby::sharing::api::PublicCertificateDatabase::InitStatus init_status);
void InvokeLoadCallback(bool success);
void InvokeAddCallback(bool success);
void InvokeRemoveCallback(bool success);
void InvokeDestroyCallback(bool success);
private:
absl::flat_hash_map<std::string, nearby::sharing::proto::PublicCertificate>
std::map<std::string, nearby::sharing::proto::PublicCertificate>
entries_;
absl::AnyInvocable<
void(nearby::sharing::api::PublicCertificateDatabase::InitStatus) &&>
init_status_callback_;
absl::AnyInvocable<
void(bool, std::unique_ptr<std::vector<
nearby::sharing::proto::PublicCertificate>>) &&>
load_callback_;
absl::AnyInvocable<void(bool) &&> add_callback_;
absl::AnyInvocable<void(bool) &&> remove_callback_;
absl::AnyInvocable<void(bool) &&> destroy_callback_;
};
} // namespace nearby