Implement --set-bucket and --delete-bucket in Cyad
[platform/core/security/cynara.git] / test / cyad / commandline.cpp
index 620cf28..31b0771 100644 (file)
@@ -38,3 +38,70 @@ TEST_F(CyadCommandlineTest, help) {
     auto result = std::dynamic_pointer_cast<Cynara::HelpCyadCommand>(parser.parseMain());
     ASSERT_NE(nullptr, result);
 }
+
+TEST_F(CyadCommandlineTest, deleteBucket) {
+    prepare_argv({ "./cyad", "--delete-bucket=bucket" });
+    Cynara::CyadCommandlineParser parser(this->argc(), this->argv());
+
+    auto result = std::dynamic_pointer_cast<Cynara::DeleteBucketCyadCommand>(parser.parseMain());
+    ASSERT_NE(nullptr, result);
+    ASSERT_EQ("bucket", result->bucketId());
+}
+
+TEST_F(CyadCommandlineTest, setBucket) {
+    prepare_argv({ "./cyad", "--set-bucket=bucket", "--policy=42" });
+    Cynara::CyadCommandlineParser parser(this->argc(), this->argv());
+
+    auto result = std::dynamic_pointer_cast<Cynara::SetBucketCyadCommand>(parser.parseMain());
+    ASSERT_NE(nullptr, result);
+    ASSERT_EQ("bucket", result->bucketId());
+    ASSERT_EQ(42, result->policyResult().policyType());
+    ASSERT_TRUE(result->policyResult().metadata().empty());
+}
+
+TEST_F(CyadCommandlineTest, setBucketWithMetadata) {
+    const std::string ultimateAnswer = "Answer to The Ultimate Question of Life,"
+                                       " the Universe, and Everything";
+
+    prepare_argv({ "./cyad", "--set-bucket=adams", "--policy=42", "--metadata=" + ultimateAnswer });
+    Cynara::CyadCommandlineParser parser(this->argc(), this->argv());
+
+    auto result = std::dynamic_pointer_cast<Cynara::SetBucketCyadCommand>(parser.parseMain());
+    ASSERT_NE(nullptr, result);
+    ASSERT_EQ("adams", result->bucketId());
+    ASSERT_EQ(42, result->policyResult().policyType());
+    ASSERT_EQ(ultimateAnswer, result->policyResult().metadata());
+}
+
+TEST_F(CyadCommandlineTest, parsePolicyTypeBase10) {
+    auto parsePolicyType = [] (const char *rawPolicy) -> Cynara::PolicyType {
+        return Cynara::CyadCommandlineParser::parsePolicyType(rawPolicy);
+    };
+
+    ASSERT_EQ(CYNARA_ADMIN_DENY,   parsePolicyType("0"));
+    ASSERT_EQ(CYNARA_ADMIN_NONE,   parsePolicyType("1"));
+    ASSERT_EQ(CYNARA_ADMIN_BUCKET, parsePolicyType("65534"));
+    ASSERT_EQ(CYNARA_ADMIN_ALLOW,  parsePolicyType("65535"));
+}
+
+TEST_F(CyadCommandlineTest, parsePolicyTypeBase16) {
+    auto parsePolicyType = [] (const char *rawPolicy) -> Cynara::PolicyType {
+        return Cynara::CyadCommandlineParser::parsePolicyType(rawPolicy);
+    };
+
+    ASSERT_EQ(CYNARA_ADMIN_DENY,   parsePolicyType("0x0"));
+    ASSERT_EQ(CYNARA_ADMIN_NONE,   parsePolicyType("0x1"));
+    ASSERT_EQ(CYNARA_ADMIN_BUCKET, parsePolicyType("0xFFFE"));
+    ASSERT_EQ(CYNARA_ADMIN_ALLOW,  parsePolicyType("0xFFFF"));
+}
+
+TEST_F(CyadCommandlineTest, parsePolicyTypeHuman) {
+    auto parsePolicyType = [] (const char *rawPolicy) -> Cynara::PolicyType {
+        return Cynara::CyadCommandlineParser::parsePolicyType(rawPolicy);
+    };
+
+    ASSERT_EQ(CYNARA_ADMIN_DENY,   parsePolicyType("DENY"));
+    ASSERT_EQ(CYNARA_ADMIN_NONE,   parsePolicyType("NONE"));
+    ASSERT_EQ(CYNARA_ADMIN_BUCKET, parsePolicyType("BUCKET"));
+    ASSERT_EQ(CYNARA_ADMIN_ALLOW,  parsePolicyType("ALLOW"));
+}