#include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_loader.h"
#include <optional>
#include <utility>
#include "base/check.h"
#include "base/functional/callback_helpers.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/task_environment.h"
#include "base/test/test_future.h"
#include "chrome/browser/enterprise/connectors/device_trust/common/device_trust_constants.h"
#include "chrome/browser/enterprise/connectors/device_trust/device_trust_features.h"
#include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/key_loader_impl.h"
#include "chrome/browser/enterprise/connectors/device_trust/key_management/browser/metrics_utils.h"
#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/ec_signing_key.h"
#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/network/key_network_delegate.h"
#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/network/mock_key_network_delegate.h"
#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/key_persistence_delegate_factory.h"
#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/mock_key_persistence_delegate.h"
#include "chrome/browser/enterprise/connectors/device_trust/key_management/core/persistence/scoped_key_persistence_delegate_factory.h"
#include "components/enterprise/browser/controller/browser_dm_token_storage.h"
#include "components/enterprise/browser/controller/fake_browser_dm_token_storage.h"
#include "components/enterprise/client_certificates/core/cloud_management_delegate.h"
#include "components/enterprise/client_certificates/core/mock_cloud_management_delegate.h"
#include "components/policy/core/common/cloud/device_management_service.h"
#include "components/policy/core/common/cloud/mock_device_management_service.h"
#include "components/policy/proto/device_management_backend.pb.h"
#include "net/http/http_status_code.h"
#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
#include "services/network/test/test_url_loader_factory.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace enterprise_connectors {
BPKUR;
DTCLoadKeyResult;
HttpResponseCode;
MockKeyNetworkDelegate;
MockKeyPersistenceDelegate;
_;
Invoke;
Return;
StrictMock;
namespace {
constexpr char kFakeDMToken[] = …;
constexpr char kFakeClientId[] = …;
constexpr char kExpectedDmServerUrl[] = …;
constexpr HttpResponseCode kSuccessCode = …;
constexpr HttpResponseCode kHardFailure = …;
constexpr char kSynchronizationErrorHistogram[] = …;
constexpr char kSynchronizationUploadHistogram[] = …;
scoped_refptr<SigningKeyPair> CreateFakeKeyPair() { … }
}
class KeyLoaderTest : public testing::Test,
public testing::WithParamInterface<bool> { … };
TEST_P(KeyLoaderTest, CreateKeyLoader_Success) { … }
TEST_P(KeyLoaderTest, CreateKeyLoader_InvalidURLLoaderFactory) { … }
TEST_P(KeyLoaderTest, LoadKey_Success) { … }
TEST_P(KeyLoaderTest, LoadKey_InvalidDMToken) { … }
TEST_P(KeyLoaderTest, LoadKey_MissingKeyPair) { … }
TEST_P(KeyLoaderTest, LoadKey_KeyUploadFailed) { … }
INSTANTIATE_TEST_SUITE_P(…);
}