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"));
+}