7022a81664779c747c5d8b234ce22cf5e4e8d98b
[aaf/authz.git] / authz-cass / src / test / java / com / att / dao / aaf / test / JU_PermDAO.java
1 /*******************************************************************************\r
2  * ============LICENSE_START====================================================\r
3  * * org.onap.aai\r
4  * * ===========================================================================\r
5  * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
6  * * Copyright © 2017 Amdocs\r
7  * * ===========================================================================\r
8  * * Licensed under the Apache License, Version 2.0 (the "License");\r
9  * * you may not use this file except in compliance with the License.\r
10  * * You may obtain a copy of the License at\r
11  * * \r
12  *  *      http://www.apache.org/licenses/LICENSE-2.0\r
13  * * \r
14  *  * Unless required by applicable law or agreed to in writing, software\r
15  * * distributed under the License is distributed on an "AS IS" BASIS,\r
16  * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17  * * See the License for the specific language governing permissions and\r
18  * * limitations under the License.\r
19  * * ============LICENSE_END====================================================\r
20  * *\r
21  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.\r
22  * *\r
23  ******************************************************************************/\r
24 package com.att.dao.aaf.test;\r
25 \r
26 import static junit.framework.Assert.assertEquals;\r
27 import static junit.framework.Assert.assertTrue;\r
28 \r
29 import java.io.IOException;\r
30 import java.nio.ByteBuffer;\r
31 import java.util.List;\r
32 import java.util.Set;\r
33 \r
34 import org.junit.Test;\r
35 \r
36 import com.att.authz.layer.Result;\r
37 import com.att.dao.aaf.cass.PermDAO;\r
38 import com.att.dao.aaf.cass.PermDAO.Data;\r
39 import com.att.dao.aaf.cass.RoleDAO;\r
40 import com.att.inno.env.APIException;\r
41 \r
42 /**\r
43  * Test the PermissionDAO\r
44  * \r
45  * Utilize AbsJUCass to initialize and pre-load Cass\r
46  * \r
47  *\r
48  */\r
49 public class JU_PermDAO extends AbsJUCass{\r
50 \r
51         @Test\r
52         public void test() throws APIException, IOException {\r
53                 PermDAO pd = new PermDAO(trans,cluster,"authz");\r
54                 try {\r
55                         PermDAO.Data data = new PermDAO.Data();\r
56                         data.ns = "com.test.ju_perm";\r
57                         data.type = "MyType";\r
58                         data.instance = "MyInstance";\r
59                         data.action = "MyAction";\r
60                         data.roles(true).add(data.ns + ".dev");\r
61                         \r
62 \r
63 \r
64                         // CREATE\r
65                         Result<Data> rpdc = pd.create(trans,data);\r
66                         assertTrue(rpdc.isOK());\r
67 \r
68                         Result<List<PermDAO.Data>> rlpd;\r
69                         try {\r
70 //                      Bytification\r
71                         ByteBuffer bb = data.bytify();\r
72                         Data bdata = new PermDAO.Data();\r
73                         bdata.reconstitute(bb);\r
74                         compare(data, bdata);\r
75 \r
76                                 // Validate Read with key fields in Data\r
77                                 if((rlpd = pd.read(trans,data)).isOK())\r
78                                   for(PermDAO.Data d : rlpd.value) {\r
79                                         checkData1(data,d);\r
80                                 }\r
81                                 \r
82                                 // Validate readByName\r
83                                 if((rlpd = pd.readByType(trans,data.ns, data.type)).isOK())\r
84                                   for(PermDAO.Data d : rlpd.value) {\r
85                                         checkData1(data,d);\r
86                                 }\r
87                                 \r
88                                 // Add Role\r
89                                 RoleDAO.Data role = new RoleDAO.Data();\r
90                                 role.ns = data.ns;\r
91                                 role.name = "test";\r
92                                 \r
93                                 Result<Void> rvpd = pd.addRole(trans, data, role.fullName());\r
94                                 assertTrue(rvpd.isOK());\r
95                                 // Validate Read with key fields in Data\r
96                                 if((rlpd = pd.read(trans,data)).isOK())\r
97                                   for(PermDAO.Data d : rlpd.value) {\r
98                                         checkData2(data,d);\r
99                                   }\r
100                                 \r
101                                 // Remove Role\r
102                                 rvpd = pd.delRole(trans, data, role.fullName());\r
103                                 assertTrue(rvpd.isOK());\r
104                                 if((rlpd = pd.read(trans,data)).isOK())\r
105                                         for(PermDAO.Data d : rlpd.value) {\r
106                                                 checkData1(data,d);\r
107                                         }\r
108                                 \r
109                                 // Add Child\r
110                                 Data data2 = new Data();\r
111                                 data2.ns = data.ns;\r
112                                 data2.type = data.type + ".2";\r
113                                 data2.instance = data.instance;\r
114                                 data2.action = data.action;\r
115                                 \r
116                                 rpdc = pd.create(trans, data2);\r
117                                 assertTrue(rpdc.isOK());\r
118                                 try {\r
119                                         rlpd = pd.readChildren(trans, data.ns,data.type);\r
120                                         assertTrue(rlpd.isOKhasData());\r
121                                         assertEquals(rlpd.value.size(),1);\r
122                                         assertEquals(rlpd.value.get(0).fullType(),data2.fullType());\r
123                                 } finally {\r
124                                         // Delete Child\r
125                                         pd.delete(trans, data2,true);\r
126 \r
127                                 }\r
128                         } catch (IOException e) {\r
129                                 e.printStackTrace();\r
130                         } finally {\r
131                                 // DELETE\r
132                                 Result<Void> rpdd = pd.delete(trans,data,true);\r
133                                 assertTrue(rpdd.isOK());\r
134                                 rlpd = pd.read(trans, data);\r
135                                 assertTrue(rlpd.isOK() && rlpd.isEmpty());\r
136                                 assertEquals(rlpd.value.size(),0);\r
137                         }\r
138                 } finally {\r
139                         pd.close(trans);\r
140                 }\r
141         }\r
142 \r
143         private void compare(Data a, Data b) {\r
144                 assertEquals(a.ns,b.ns);\r
145                 assertEquals(a.type,b.type);\r
146                 assertEquals(a.instance,b.instance);\r
147                 assertEquals(a.action,b.action);\r
148                 assertEquals(a.roles(false).size(),b.roles(false).size());\r
149                 for(String s: a.roles(false)) {\r
150                         assertTrue(b.roles(false).contains(s));\r
151                 }\r
152         }\r
153         private void checkData1(Data data, Data d) {\r
154                 assertEquals(data.ns,d.ns);\r
155                 assertEquals(data.type,d.type);\r
156                 assertEquals(data.instance,d.instance);\r
157                 assertEquals(data.action,d.action);\r
158                 \r
159                 Set<String> ss = d.roles(true);\r
160                 assertEquals(1,ss.size());\r
161                 assertTrue(ss.contains(data.ns+".dev"));\r
162         }\r
163         \r
164         private void checkData2(Data data, Data d) {\r
165                 assertEquals(data.ns,d.ns);\r
166                 assertEquals(data.type,d.type);\r
167                 assertEquals(data.instance,d.instance);\r
168                 assertEquals(data.action,d.action);\r
169                 \r
170                 Set<String> ss = d.roles(true);\r
171                 assertEquals(2,ss.size());\r
172                 assertTrue(ss.contains(data.ns+".dev"));\r
173                 assertTrue(ss.contains(data.ns+".test"));\r
174         }\r
175 \r
176 \r
177 }\r