123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- // Copyright 2014 The Chromium 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 "ash/components/proximity_auth/remote_status_update.h"
- #include "base/json/json_reader.h"
- #include "base/values.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace proximity_auth {
- namespace {
- // Parses the |json| into a RemoteStatusUpdate instance.
- std::unique_ptr<RemoteStatusUpdate> ParseJson(const std::string& json) {
- absl::optional<base::Value> dict = base::JSONReader::Read(json);
- return RemoteStatusUpdate::Deserialize(dict->GetDict());
- }
- } // namespace
- // Verify that all valid values can be parsed.
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_Valid_UserPresent) {
- const char kValidJson[] =
- R"({
- "type": "status_update",
- "user_presence": "present",
- "secure_screen_lock": "enabled",
- "trust_agent": "enabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kValidJson);
- ASSERT_TRUE(parsed_update);
- EXPECT_EQ(USER_PRESENT, parsed_update->user_presence);
- EXPECT_EQ(SECURE_SCREEN_LOCK_ENABLED,
- parsed_update->secure_screen_lock_state);
- EXPECT_EQ(TRUST_AGENT_ENABLED, parsed_update->trust_agent_state);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_Valid_UserAbsent) {
- const char kValidJson[] =
- R"({
- "type": "status_update",
- "user_presence": "absent",
- "secure_screen_lock": "disabled",
- "trust_agent": "disabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kValidJson);
- ASSERT_TRUE(parsed_update);
- EXPECT_EQ(USER_ABSENT, parsed_update->user_presence);
- EXPECT_EQ(SECURE_SCREEN_LOCK_DISABLED,
- parsed_update->secure_screen_lock_state);
- EXPECT_EQ(TRUST_AGENT_DISABLED, parsed_update->trust_agent_state);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_Valid_UserSecondary) {
- const char kValidJson[] =
- R"({
- "type": "status_update",
- "user_presence": "secondary",
- "secure_screen_lock": "disabled",
- "trust_agent": "disabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kValidJson);
- ASSERT_TRUE(parsed_update);
- EXPECT_EQ(USER_PRESENCE_SECONDARY, parsed_update->user_presence);
- EXPECT_EQ(SECURE_SCREEN_LOCK_DISABLED,
- parsed_update->secure_screen_lock_state);
- EXPECT_EQ(TRUST_AGENT_DISABLED, parsed_update->trust_agent_state);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_Valid_UserBackground) {
- const char kValidJson[] =
- R"({
- "type": "status_update",
- "user_presence": "background",
- "secure_screen_lock": "disabled",
- "trust_agent": "disabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kValidJson);
- ASSERT_TRUE(parsed_update);
- EXPECT_EQ(USER_PRESENCE_BACKGROUND, parsed_update->user_presence);
- EXPECT_EQ(SECURE_SCREEN_LOCK_DISABLED,
- parsed_update->secure_screen_lock_state);
- EXPECT_EQ(TRUST_AGENT_DISABLED, parsed_update->trust_agent_state);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_Valid_Unknown) {
- const char kValidJson[] =
- R"({
- "type": "status_update",
- "user_presence": "unknown",
- "secure_screen_lock": "unknown",
- "trust_agent": "unsupported"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kValidJson);
- ASSERT_TRUE(parsed_update);
- EXPECT_EQ(USER_PRESENCE_UNKNOWN, parsed_update->user_presence);
- EXPECT_EQ(SECURE_SCREEN_LOCK_STATE_UNKNOWN,
- parsed_update->secure_screen_lock_state);
- EXPECT_EQ(TRUST_AGENT_UNSUPPORTED, parsed_update->trust_agent_state);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_MissingUserPresence) {
- const char kJson[] =
- R"({
- "type": "status_update",
- "secure_screen_lock": "enabled",
- "trust_agent": "enabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
- EXPECT_FALSE(parsed_update);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_MissingSecureScreenLock) {
- const char kJson[] =
- R"({
- "type": "status_update",
- "user_presence": "present",
- "trust_agent": "enabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
- EXPECT_FALSE(parsed_update);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_MissingTrustAgent) {
- const char kJson[] =
- R"({
- "type": "status_update",
- "user_presence": "present",
- "secure_screen_lock": "enabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
- EXPECT_FALSE(parsed_update);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_InvalidType) {
- const char kJson[] =
- R"({
- "type": "garbage",
- "user_presence": "present",
- "secure_screen_lock": "enabled",
- "trust_agent": "enabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
- EXPECT_FALSE(parsed_update);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_InvalidPresence) {
- const char kJson[] =
- R"({
- "type": "status_update",
- "user_presence": "garbage",
- "secure_screen_lock": "enabled",
- "trust_agent": "enabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
- EXPECT_FALSE(parsed_update);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_InvalidLock) {
- const char kJson[] =
- R"({
- "type": "status_update",
- "user_presence": "present",
- "secure_screen_lock": "garbage",
- "trust_agent": "enabled"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
- EXPECT_FALSE(parsed_update);
- }
- TEST(ProximityAuthRemoteStatusUpdateTest, Deserialize_InvalidAgent) {
- const char kJson[] =
- R"({
- "type": "status_update",
- "user_presence": "present",
- "secure_screen_lock": "enabled",
- "trust_agent": "garbage"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
- EXPECT_FALSE(parsed_update);
- }
- // Verify that extra fields do not prevent parsing. This provides
- // forward-compatibility.
- TEST(ProximityAuthRemoteStatusUpdateTest,
- Deserialize_ValidStatusWithExtraFields) {
- const char kJson[] =
- R"({
- "type": "status_update",
- "user_presence": "present",
- "secure_screen_lock": "enabled",
- "trust_agent": "enabled",
- "secret_sauce": "chipotle"
- })";
- std::unique_ptr<RemoteStatusUpdate> parsed_update = ParseJson(kJson);
- ASSERT_TRUE(parsed_update);
- EXPECT_EQ(USER_PRESENT, parsed_update->user_presence);
- EXPECT_EQ(SECURE_SCREEN_LOCK_ENABLED,
- parsed_update->secure_screen_lock_state);
- EXPECT_EQ(TRUST_AGENT_ENABLED, parsed_update->trust_agent_state);
- }
- } // namespace proximity_auth
|