Introduce 'default' method type for credential helpers
[platform/core/security/cynara.git] / test / cyad / policy_parser.cpp
1 /*
2  * Copyright (c) 2014-2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /**
17  * @file        test/cyad/commandline.cpp
18  * @author      Aleksander Zdyb <a.zdyb@samsung.com>
19  * @version     1.0
20  * @brief       Tests for AdminPolicyParser
21  */
22
23 #include <memory>
24 #include <sstream>
25 #include <string>
26
27 #include <gmock/gmock.h>
28 #include <gtest/gtest.h>
29
30 #include <common/exceptions/BucketRecordCorruptedException.h>
31 #include <common/types/PolicyKey.h>
32 #include <common/types/PolicyType.h>
33 #include <cyad/AdminPolicyParser.h>
34
35 #include "helpers.h"
36
37 static Cynara::PolicyType translatePolicy(const std::string &rawPolicy) {
38     return std::stoi(rawPolicy);
39 }
40
41 TEST(AdminPolicyParser, parseInvalid) {
42     auto input = std::make_shared<std::stringstream>();
43
44     *input << "invalid input" << std::endl;
45
46     ASSERT_THROW(Cynara::AdminPolicyParser::parse(*input, translatePolicy),
47                  Cynara::BucketRecordCorruptedException);
48 }
49
50 TEST(AdminPolicyParser, parse0) {
51     auto input = std::make_shared<std::stringstream>();
52
53     Cynara::CynaraAdminPolicies expectedPolicies;
54     expectedPolicies.seal();
55
56     auto policies = Cynara::AdminPolicyParser::parse(*input, translatePolicy);
57
58     ASSERT_TRUE(policies.sealed());
59     ASSERT_THAT(policies.data(), AdmPolicyListEq(expectedPolicies.data()));
60 }
61
62 TEST(AdminPolicyParser, parse1) {
63     auto input = std::make_shared<std::stringstream>();
64
65     *input << "b;c;u;p;0;m" << std::endl;
66
67     Cynara::CynaraAdminPolicies expectedPolicies;
68     expectedPolicies.add("b", { 0, "m" }, { "c", "u", "p" });
69     expectedPolicies.seal();
70
71     auto policies = Cynara::AdminPolicyParser::parse(*input, translatePolicy);
72
73     ASSERT_TRUE(policies.sealed());
74     ASSERT_THAT(policies.data(), AdmPolicyListEq(expectedPolicies.data()));
75 }
76
77 TEST(AdminPolicyParser, parse2) {
78     auto input = std::make_shared<std::stringstream>();
79
80     *input << "b1;c1;u1;p1;0;m1" << std::endl;
81     *input << "b2;c2;u2;p2;0;m2" << std::endl;
82
83     Cynara::CynaraAdminPolicies expectedPolicies;
84     expectedPolicies.add("b1", { 0, "m1" }, { "c1", "u1", "p1" });
85     expectedPolicies.add("b2", { 0, "m2" }, { "c2", "u2", "p2" });
86     expectedPolicies.seal();
87
88     auto policies = Cynara::AdminPolicyParser::parse(*input, translatePolicy);
89
90     ASSERT_TRUE(policies.sealed());
91     ASSERT_THAT(policies.data(), AdmPolicyListEq(expectedPolicies.data()));
92 }