Merge branch 'tizen' into security-manager
[platform/core/test/security-tests.git] / src / cynara-tests / common / cynara_test_admin.h
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 #ifndef CYNARA_TEST_ADMIN_H
18 #define CYNARA_TEST_ADMIN_H
19
20 #include <cynara_test_commons.h>
21 #include <plugins.h>
22
23 #include <cynara-admin.h>
24 #include <ostream>
25 #include <vector>
26
27 namespace CynaraTestAdmin {
28
29 class Admin;
30
31 class CynaraPoliciesContainer
32 {
33 public:
34     CynaraPoliciesContainer();
35
36 /**
37  * \par Description:
38  * A special constructor stealing all data from all structures cynara_admin_policy
39  * arranged in a null-terminated list.
40  * It moves all data from inside structures to own vector,
41  * but release input list by freeing memory of list elements and list itself.
42  */
43     CynaraPoliciesContainer(struct cynara_admin_policy **policies);
44     CynaraPoliciesContainer(const CynaraPoliciesContainer&) = delete;
45     CynaraPoliciesContainer(const CynaraPoliciesContainer&&) = delete;
46     virtual ~CynaraPoliciesContainer();
47
48     void add(const char *bucket,
49              const char *client,
50              const char *user,
51              const char *privilege,
52              const int result,
53              const char *resultExtra);
54     void add(const char *bucket,
55              const CheckKey &checkKey,
56              const int result,
57              const char *resultExtra = nullptr);
58     void sort();
59
60     friend std::ostream& operator<<(std::ostream& os, const CynaraPoliciesContainer &policies);
61
62 private:
63     friend class Admin;
64
65     std::vector<struct cynara_admin_policy> m_policies;
66 };
67
68 class Admin
69 {
70 public:
71     Admin();
72     virtual ~Admin();
73
74     void setPolicies(const CynaraPoliciesContainer &policiesContainer,
75                      int expectedResult = CYNARA_API_SUCCESS);
76     void setBucket(const char *bucket, int operation, const char *extra,
77                    int expectedResult = CYNARA_API_SUCCESS);
78     void adminCheck(const char *startBucket, int recursive,
79                     const char *client, const char *user, const char *privilege,
80                     int expectedCheckResult, const char *expectedCheckResultExtra,
81                     int expectedResult = CYNARA_API_SUCCESS);
82     void listPolicies(const char *startBucket,
83                       const char *client, const char *user, const char *privilege,
84                       CynaraPoliciesContainer &expectedPolicyList,
85                       int expectedResult = CYNARA_API_SUCCESS);
86     void erasePolicies(const char *startBucket, int recursive,
87                        const char *client, const char *user, const char *privilege,
88                        int expectedResult = CYNARA_API_SUCCESS);
89     void listPoliciesDescriptions(CynaraTestPlugins::Descriptions &expectedDescriptions,
90                                   int expectedResult = CYNARA_API_SUCCESS);
91 private:
92     struct cynara_admin *m_admin;
93 };
94
95 } // namespace CynaraTestAdmin
96
97 #endif // CYNARA_TEST_ADMIN_H