4c121027737624324fa5800de735049d3f339604
[platform/core/test/security-tests.git] / src / common / sm_policy_request.h
1 /*
2  * Copyright (c) 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 SECURITY_MANAGER_TEST_POLICYREQUEST
18 #define SECURITY_MANAGER_TEST_POLICYREQUEST
19
20 #include <iostream>
21 #include <sys/types.h>
22 #include <utility>
23 #include <vector>
24
25 #include <security-manager.h>
26
27 namespace SecurityManagerTest {
28
29 class PolicyEntry
30 {
31 public:
32     PolicyEntry();
33
34     PolicyEntry(const std::string &appId,
35                 const std::string &user,
36                 const std::string &privilege
37                 );
38     ~PolicyEntry();
39
40     PolicyEntry(policy_entry &entry);
41
42     policy_entry *get() const { return m_entry; }
43     std::string getUser() const         { return m_user.second; }
44     std::string getAppId() const        { return m_appId.second; }
45     std::string getPrivilege() const    { return m_privilege.second; }
46     std::string getCurrentLevel() const { return m_currentLevel.second; }
47     std::string getMaxLevel() const     { return m_maxLevel.second; }
48     void setLevel(const std::string &level);
49     void setMaxLevel(const std::string &level);
50     void free(void);
51
52     friend std::ostream& operator<<(std::ostream &, const PolicyEntry&);
53     bool operator==(const PolicyEntry &) const;
54     std::string toString() const;
55
56 private:
57     policy_entry *m_entry;
58     std::pair<bool, std::string> m_appId;
59     std::pair<bool, std::string> m_user;
60     std::pair<bool, std::string> m_privilege;
61     std::pair<bool, std::string> m_currentLevel;
62     std::pair<bool, std::string> m_maxLevel;
63 };
64
65 std::ostream& operator<<(std::ostream &os, const SecurityManagerTest::PolicyEntry &request);
66
67 class PolicyRequest
68 {
69 public:
70     PolicyRequest();
71     PolicyRequest(const PolicyRequest&) = delete;
72     PolicyRequest& operator=(const PolicyRequest&) = delete;
73     ~PolicyRequest();
74
75     void addEntry(PolicyEntry &entry, lib_retcode expectedResult = SECURITY_MANAGER_SUCCESS);
76
77     policy_update_req *get() const { return m_req; }
78     friend std::ostream& operator<<(std::ostream &, const PolicyRequest&);
79
80 private:
81     policy_update_req *m_req;
82     std::vector<PolicyEntry> m_entries;
83 };
84
85 std::ostream& operator<<(std::ostream &os, const SecurityManagerTest::PolicyRequest &request);
86
87 } // namespace SecurityManagerTest
88
89 namespace std {
90
91 template<>
92 struct hash<SecurityManagerTest::PolicyEntry> {
93     size_t operator()(const SecurityManagerTest::PolicyEntry &x) const { return hash<string>()(x.toString()); }
94 };
95
96 } // namespace std
97
98 #endif // SECURITY_MANAGER_TEST_USERREQUEST