| // Copyright 2019 The Fuchsia 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 "src/developer/forensics/feedback_data/config.h" | |
| #include <zircon/errors.h> | |
| #include <gmock/gmock.h> | |
| #include <gtest/gtest.h> | |
| namespace forensics { | |
| namespace feedback_data { | |
| namespace { | |
| void CheckEmptyConfig(const Config& config) { | |
| EXPECT_TRUE(config.annotation_allowlist.empty()); | |
| EXPECT_TRUE(config.attachment_allowlist.empty()); | |
| } | |
| TEST(ConfigTest, ParseConfig_ValidConfig) { | |
| Config config; | |
| ASSERT_EQ(ParseConfig("/pkg/data/configs/valid.json", &config), ZX_OK); | |
| EXPECT_THAT(config.annotation_allowlist, testing::UnorderedElementsAreArray({ | |
| "foo", | |
| })); | |
| EXPECT_THAT(config.attachment_allowlist, testing::UnorderedElementsAreArray({ | |
| "log.kernel", | |
| "log.syslog", | |
| })); | |
| } | |
| TEST(ConfigTest, ParseConfig_ValidConfigEmptyList) { | |
| Config config; | |
| ASSERT_EQ(ParseConfig("/pkg/data/configs/valid_empty_list.json", &config), ZX_OK); | |
| EXPECT_THAT(config.annotation_allowlist, testing::UnorderedElementsAreArray({ | |
| "foo", | |
| })); | |
| EXPECT_TRUE(config.attachment_allowlist.empty()); | |
| } | |
| TEST(ConfigTest, ParseConfig_MissingConfig) { | |
| Config config; | |
| ASSERT_EQ(ParseConfig("undefined file", &config), ZX_ERR_IO); | |
| CheckEmptyConfig(config); | |
| } | |
| TEST(ConfigTest, ParseConfig_BadConfig_DuplicatedAttachmentKey) { | |
| Config config; | |
| ASSERT_EQ(ParseConfig("/pkg/data/configs/bad_schema_duplicated_attachment_key.json", &config), | |
| ZX_ERR_INTERNAL); | |
| CheckEmptyConfig(config); | |
| } | |
| TEST(ConfigTest, ParseConfig_BadConfig_SpuriousField) { | |
| Config config; | |
| ASSERT_EQ(ParseConfig("/pkg/data/configs/bad_schema_spurious_field.json", &config), | |
| ZX_ERR_INTERNAL); | |
| CheckEmptyConfig(config); | |
| } | |
| TEST(ConfigTest, ParseConfig_BadConfig_MissingRequiredField) { | |
| Config config; | |
| ASSERT_EQ(ParseConfig("/pkg/data/configs/bad_schema_missing_required_field.json", &config), | |
| ZX_ERR_INTERNAL); | |
| CheckEmptyConfig(config); | |
| } | |
| } // namespace | |
| } // namespace feedback_data | |
| } // namespace forensics |