Odyssey
admGroupSupportTest.php
1 <?php
2 
3 use PHPUnit\Framework\TestCase;
4 
5 /**
6  * @var BankingCalendarTest
7  * Contains all the test cases for the aBankingCalendar.i include file.
8  */
9 class GroupSupportTest extends TestCase {
10  protected static $env;
11  protected static $group;
12 
13  function setup() {
14  $admLibrary= "/var/www/html/admcom/library";
15  require_once("$admLibrary/aGroupSupport.i");
16 
17  $sharedLibrary= "/var/www/html/shared/library";
18  require_once("$sharedLibrary/hcuEnv.i");
19  require_once("$sharedLibrary/hcuCommon.i");
20  require_once("$sharedLibrary/db.postgres.i");
21 
22  self::$env = LoadSystemEnv("admin");
23  self::$env['Cu'] = "scrubcu";
24  self::$group = array(
25  "group" => array(
26  "g_id" => 11,
27  "g_name" => "1314",
28  "p_id" => 5,
29  "g_profile" => "Member",
30  "g_count" => 1,
31  "g_primary" => array(
32  array(
33  "p_name" => "Bonso",
34  "p_payload" => "UNfNneDSFqRUEt7YSJGHF9NH%2FWbsaE1V5NshWV6lNbttBHkK1MVV2eSvcnrG31gJ5gIwpzMf32evctR%2F%2FZbevGG2epTfxvc%2FgJwP2l22FXQAvAjf2%2FksiMBdmCwPgwRi9qEX2rpz%2Fh0oWqpQ%2FZvywTA9hBvunx2OAyu9XS4nNgDCgNBCtT6CkWpaW6uxX417VEtU7GPjfszDMxZTvrS1UNmAA5OVX6YUDYKZ6rzTmYF0VNecbgZ0mJuEPmjjyjA6hFmdRKfRWgyaTRGrSS6vIINcC%2FxscwOFpWLmxGT8UjF8KnwqfCp8aUKVlQwGZhQ7l4J8NG7sRH8osfw%3D"
35  )
36  )
37  )
38  );
39  }
40 
41  function test_GroupContext() {
42  // test cu code
43  $context = GroupContext(self::$env, self::$env['Cu']);
44  $this->assertArrayHasKey("cu_table", $context);
45  $this->assertArrayHasKey("cu_code", $context);
46  $this->assertArrayHasKey("p_id", $context);
47  $this->assertArrayHasKey("g_id", $context);
48  $this->assertEquals($context['cu_table'], "scrubcu");
49  $this->assertEquals($context['cu_code'], "SCRUBCU");
50  $this->assertEquals($context['p_id'], null);
51  $this->assertEquals($context['g_id'], null);
52 
53  // test p_id and g_id
54  $context = GroupContext(self::$env, self::$env['Cu'], self::$group['group']);
55  $this->assertArrayHasKey("cu_table", $context);
56  $this->assertArrayHasKey("cu_code", $context);
57  $this->assertArrayHasKey("p_id", $context);
58  $this->assertArrayHasKey("g_id", $context);
59  $this->assertArrayNotHasKey("g_name", $context);
60  $this->assertEquals($context['cu_table'], "scrubcu");
61  $this->assertEquals($context['cu_code'], "SCRUBCU");
62  $this->assertEquals($context['p_id'], 5);
63  $this->assertEquals($context['g_id'], 11);
64  $this->assertNotEquals($context['p_id'], null);
65  $this->assertNotEquals($context['g_id'], null);
66  }
67 
68  function test_GroupValidate() {
69  // test array with g_name
70  $validate = GroupValidate(self::$env, self::$group['group']);
71  $this->assertNotEmpty($validate);
72  $this->assertArrayHasKey("g_name", $validate);
73  $this->assertNotNull($validate['g_name']);
74  $this->assertEquals($validate['g_name'], "1314");
75  $this->assertLessThanOrEqual($validate['g_name'], 50);
76 
77  // validate empty from json
78  $validateGroup = HCU_JsonEncode(self::$group['group']);
79  $validate = GroupValidate(self::$env, $validateGroup);
80  $this->assertEmpty($validate);
81 
82  // validate non-empty from json
83  $validateGroup = HCU_JsonEncode(self::$group['group']);
84  $validate = GroupValidate(self::$env, $validateGroup, true);
85  $this->assertNotEmpty($validate);
86  $this->assertArrayHasKey("g_name", $validate);
87  $this->assertNotNull($validate['g_name']);
88  $this->assertEquals($validate['g_name'], "1314");
89  $this->assertLessThanOrEqual($validate['g_name'], 50);
90  }
91 
92  function test_GroupEncryptNonJson() {
93  // test encrypt / decrypt non-json
94  $encrypt = GroupEncrypt(self::$env, self::$env['Cu'], self::$group);
95  $this->assertNotInternalType("array", $encrypt);
96  $this->assertInternalType("string", $encrypt);
97 
98  $decrypt = GroupDecrypt(self::$env, self::$env['Cu'], $encrypt);
99  $this->assertNotInternalType("string", $decrypt);
100  $this->assertInternalType("array", $decrypt);
101 
102  // assert data
103  $this->assertArrayHasKey("group", $decrypt);
104  $this->assertInternalType("array", $decrypt['group']);
105  $this->assertNotEmpty($decrypt['group']);
106 
107  $this->assertArrayHasKey("g_id", $decrypt['group']);
108  $this->assertNotNull($decrypt['group']['g_id']);
109  $this->assertEquals($decrypt['group']['g_id'], 11);
110 
111  $this->assertArrayHasKey("g_name", $decrypt['group']);
112  $this->assertNotNull($decrypt['group']['g_name']);
113  $this->assertEquals($decrypt['group']['g_name'], "1314");
114 
115  $this->assertArrayHasKey("g_profile", $decrypt['group']);
116  $this->assertNotNull($decrypt['group']['g_profile']);
117  $this->assertEquals($decrypt['group']['g_profile'], "Member");
118 
119  $this->assertArrayHasKey("g_count", $decrypt['group']);
120  $this->assertNotNull($decrypt['group']['g_count']);
121  $this->assertEquals($decrypt['group']['g_count'], 1);
122 
123  $this->assertArrayHasKey("p_id", $decrypt['group']);
124  $this->assertNotNull($decrypt['group']['p_id']);
125  $this->assertEquals($decrypt['group']['p_id'], 5);
126 
127  $this->assertArrayHasKey("g_primary", $decrypt['group']);
128  $this->assertInternalType("array", $decrypt['group']['g_primary']);
129  $this->assertNotEmpty($decrypt['group']['g_primary']);
130  $this->assertCount(1, $decrypt['group']['g_primary']);
131 
132  $this->assertArrayHasKey("p_name", $decrypt['group']['g_primary'][0]);
133  $this->assertNotNull($decrypt['group']['g_primary'][0]['p_name']);
134  $this->assertEquals($decrypt['group']['g_primary'][0]['p_name'], "Bonso");
135 
136  $this->assertArrayHasKey("p_payload", $decrypt['group']['g_primary'][0]);
137  $this->assertNotNull($decrypt['group']['g_primary'][0]['p_payload']);
138  $this->assertEquals(
139  $decrypt['group']['g_primary'][0]['p_payload'],
140  self::$group['group']['g_primary'][0]['p_payload']
141  );
142  }
143 
144  function test_GroupEncryptJson() {
145  // test encrypt / decrypt non-json
146  $encryptGroup = HCU_JsonEncode(self::$group);
147  $encrypt = GroupEncrypt(self::$env, self::$env['Cu'], $encryptGroup, true);
148  $this->assertNotInternalType("array", $encrypt);
149  $this->assertInternalType("string", $encrypt);
150 
151  $decrypt = GroupDecrypt(self::$env, self::$env['Cu'], $encrypt);
152  $this->assertNotInternalType("string", $decrypt);
153  $this->assertInternalType("array", $decrypt);
154 
155  // assert data
156  $this->assertArrayHasKey("group", $decrypt);
157  $this->assertInternalType("array", $decrypt['group']);
158  $this->assertNotEmpty($decrypt['group']);
159 
160  $this->assertArrayHasKey("g_id", $decrypt['group']);
161  $this->assertNotNull($decrypt['group']['g_id']);
162  $this->assertEquals($decrypt['group']['g_id'], 11);
163 
164  $this->assertArrayHasKey("g_name", $decrypt['group']);
165  $this->assertNotNull($decrypt['group']['g_name']);
166  $this->assertEquals($decrypt['group']['g_name'], "1314");
167 
168  $this->assertArrayHasKey("g_profile", $decrypt['group']);
169  $this->assertNotNull($decrypt['group']['g_profile']);
170  $this->assertEquals($decrypt['group']['g_profile'], "Member");
171 
172  $this->assertArrayHasKey("g_count", $decrypt['group']);
173  $this->assertNotNull($decrypt['group']['g_count']);
174  $this->assertEquals($decrypt['group']['g_count'], 1);
175 
176  $this->assertArrayHasKey("p_id", $decrypt['group']);
177  $this->assertNotNull($decrypt['group']['p_id']);
178  $this->assertEquals($decrypt['group']['p_id'], 5);
179 
180  $this->assertArrayHasKey("g_primary", $decrypt['group']);
181  $this->assertInternalType("array", $decrypt['group']['g_primary']);
182  $this->assertNotEmpty($decrypt['group']['g_primary']);
183  $this->assertCount(1, $decrypt['group']['g_primary']);
184 
185  $this->assertArrayHasKey("p_name", $decrypt['group']['g_primary'][0]);
186  $this->assertNotNull($decrypt['group']['g_primary'][0]['p_name']);
187  $this->assertEquals($decrypt['group']['g_primary'][0]['p_name'], "Bonso");
188 
189  $this->assertArrayHasKey("p_payload", $decrypt['group']['g_primary'][0]);
190  $this->assertNotNull($decrypt['group']['g_primary'][0]['p_payload']);
191  $this->assertEquals(
192  $decrypt['group']['g_primary'][0]['p_payload'],
193  self::$group['group']['g_primary'][0]['p_payload']
194  );
195  }
196 }