PageRenderTime 27ms CodeModel.GetById 44ms RepoModel.GetById 0ms app.codeStats 0ms

/Test/control/PU_test_dcp_role.php

https://github.com/CircleCode/dynacase-core
PHP | 432 lines | 380 code | 17 blank | 35 comment | 1 complexity | 3a76c0296efa14b5c07d7465642b579e MD5 | raw file
  1. <?php
  2. /*
  3. * @author Anakeen
  4. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License
  5. * @package FDL
  6. */
  7. namespace Dcp\Pu;
  8. /**
  9. * @author Anakeen
  10. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License
  11. * @package Dcp\Pu
  12. */
  13. require_once 'PU_testcase_dcp_commonfamily.php';
  14. class TestRole extends TestCaseDcpCommonFamily
  15. {
  16. protected static $outputDir;
  17. /**
  18. * import TST_FAMSETVALUE family
  19. * @static
  20. * @return string
  21. */
  22. protected static function getCommonImportFile()
  23. {
  24. return array(
  25. "PU_data_dcp_role_family.ods"
  26. );
  27. }
  28. /**
  29. * @dataProvider dataRoleByGroup
  30. */
  31. public function testRoleByGroup(array $addTo, array $expectedRoles)
  32. {
  33. $u = new \User(self::$dbaccess, "");
  34. $u->login = "tst_jd1";
  35. $u->password_new = 'a';
  36. $err = $u->add();
  37. $this->assertEmpty($err, "cannot create user");
  38. $du = new_doc(self::$dbaccess, $u->fid);
  39. $this->assertTrue($du->isAlive() , "cannot create user document");
  40. foreach ($addTo as $aGroupName) {
  41. /**
  42. * @var \_IGROUP $dg
  43. */
  44. $dg = new_doc(self::$dbaccess, $aGroupName);
  45. $err = $dg->insertDocument($du->id);
  46. $this->assertEmpty($err, "cannot add user to $aGroupName");
  47. }
  48. $u->setLoginName("tst_jd1");
  49. $uRoles = $u->getAllRoles();
  50. $uRoleLogins = array();
  51. foreach ($uRoles as $aRole) {
  52. $uRoleLogins[] = $aRole["login"];
  53. }
  54. foreach ($expectedRoles as $roleLogin) {
  55. $this->assertTrue(in_array($roleLogin, $uRoleLogins) , sprintf("role %s must be present", $roleLogin));
  56. }
  57. foreach ($uRoleLogins as $roleLogin) {
  58. $this->assertTrue(in_array($roleLogin, $expectedRoles) , sprintf("role %s must not be present", $roleLogin));
  59. }
  60. }
  61. /**
  62. * test from import
  63. * @dataProvider dataDirectRole
  64. */
  65. public function testDirectRole($login, array $expectedRoles)
  66. {
  67. $u = new \User(self::$dbaccess);
  68. $u->setLoginName($login);
  69. $this->assertTrue($u->isAffected() , "cannot find $login user");
  70. $uRoleIds = $u->getRoles();
  71. simpleQuery(self::$dbaccess, sprintf("select login from users where id in (%s)", implode(',', $uRoleIds)) , $uRoleLogins, true);
  72. foreach ($expectedRoles as $roleLogin) {
  73. $this->assertTrue(in_array($roleLogin, $uRoleLogins) , sprintf("role %s must be present", $roleLogin));
  74. }
  75. foreach ($uRoleLogins as $roleLogin) {
  76. $this->assertTrue(in_array($roleLogin, $expectedRoles) , sprintf("role %s must not be present", $roleLogin));
  77. }
  78. }
  79. /**
  80. * test from import
  81. * @dataProvider dataRoleMail
  82. */
  83. public function testRoleMail($roleLogin, $expectRawMail, $expectCompleteMail)
  84. {
  85. $r = new \User(self::$dbaccess);
  86. $r->setLoginName($roleLogin);
  87. $this->assertTrue($r->isAffected() , "cannot find $roleLogin role");
  88. $rawMail = $r->getMail(true);
  89. $completeMail = $r->getMail(false);
  90. $this->assertEquals($expectRawMail, $rawMail, "role raw mail test");
  91. $this->assertEquals($expectCompleteMail, $completeMail, "role complete mail test");
  92. /**
  93. * @var \_ROLE $dr
  94. */
  95. $dr = new_doc(self::$dbaccess, $r->fid);
  96. $this->assertTrue($dr->isAlive() , "cannot find $roleLogin document role");
  97. $rawMail = $dr->getMail(true);
  98. $completeMail = $dr->getMail(false);
  99. $this->assertEquals($expectRawMail, $rawMail, "document role raw mail test");
  100. $this->assertEquals($expectCompleteMail, $completeMail, "document role complete mail test");
  101. }
  102. /**
  103. * @dataProvider dataAccessByRole
  104. */
  105. public function testAccessByRole($docid, $login, array $expectedAccesses)
  106. {
  107. $this->sudo($login);
  108. $d = new_doc(self::$dbaccess, $docid);
  109. $this->assertTrue($d->isAlive() , "document $docid not found");
  110. foreach ($expectedAccesses as $aName => $aAccess) {
  111. $err = $d->control($aName);
  112. $this->assertEquals($aAccess, ($err == "") , "error in access $aName : $err");
  113. }
  114. }
  115. public function dataAccessByRole()
  116. {
  117. return array(
  118. array(
  119. "docName" => "TST_BASERED1",
  120. "login" => "ublue",
  121. "access" => array(
  122. "view" => true,
  123. "edit" => true,
  124. "delete" => false
  125. )
  126. ) ,
  127. array(
  128. "docName" => "TST_BASERED1",
  129. "login" => "ugreen",
  130. "access" => array(
  131. "view" => false,
  132. "edit" => false,
  133. "delete" => false
  134. )
  135. ) ,
  136. array(
  137. "docName" => "TST_BASERED2",
  138. "login" => "ublue",
  139. "access" => array(
  140. "view" => true,
  141. "edit" => true,
  142. "delete" => false
  143. )
  144. ) ,
  145. array(
  146. "docName" => "TST_BASERED2",
  147. "login" => "ugreen",
  148. "access" => array(
  149. "view" => false,
  150. "edit" => false,
  151. "delete" => false
  152. )
  153. ) ,
  154. array(
  155. "docName" => "TST_BASEBLUE1",
  156. "login" => "ublue",
  157. "access" => array(
  158. "view" => true,
  159. "edit" => true,
  160. "delete" => false
  161. )
  162. ) ,
  163. array(
  164. "docName" => "TST_BASEBLUE1",
  165. "login" => "ugreen",
  166. "access" => array(
  167. "view" => false,
  168. "edit" => false,
  169. "delete" => false
  170. )
  171. ) ,
  172. array(
  173. "docName" => "TST_BASEBLUE2",
  174. "login" => "ublue",
  175. "access" => array(
  176. "view" => true,
  177. "edit" => true,
  178. "delete" => false
  179. )
  180. ) ,
  181. array(
  182. "docName" => "TST_BASEBLUE2",
  183. "login" => "ugreen",
  184. "access" => array(
  185. "view" => true,
  186. "edit" => true,
  187. "delete" => false
  188. )
  189. ) ,
  190. array(
  191. "docName" => "TST_BASEYELLOW1",
  192. "login" => "ublue",
  193. "access" => array(
  194. "view" => false,
  195. "edit" => false,
  196. "delete" => false
  197. )
  198. ) ,
  199. array(
  200. "docName" => "TST_BASEYELLOW1",
  201. "login" => "ugreen",
  202. "access" => array(
  203. "view" => false,
  204. "edit" => false,
  205. "delete" => false
  206. )
  207. ) ,
  208. array(
  209. "docName" => "TST_BASEYELLOW2",
  210. "login" => "ublue",
  211. "access" => array(
  212. "view" => false,
  213. "edit" => false,
  214. "delete" => false
  215. )
  216. ) ,
  217. array(
  218. "docName" => "TST_BASEYELLOW2",
  219. "login" => "ugreen",
  220. "access" => array(
  221. "view" => true,
  222. "edit" => true,
  223. "delete" => false
  224. )
  225. ) ,
  226. array(
  227. "docName" => "TST_BASEYELLOW2",
  228. "login" => "uryellow",
  229. "access" => array(
  230. "view" => true,
  231. "edit" => true,
  232. "delete" => false
  233. )
  234. ) ,
  235. array(
  236. "docName" => "TST_BASEYELLOW2",
  237. "login" => "urgreen",
  238. "access" => array(
  239. "view" => true,
  240. "edit" => true,
  241. "delete" => false
  242. )
  243. ) ,
  244. array(
  245. "docName" => "TST_BASEYELLOW2",
  246. "login" => "uggreen",
  247. "access" => array(
  248. "view" => true,
  249. "edit" => true,
  250. "delete" => false
  251. )
  252. ) ,
  253. array(
  254. "docName" => "TST_BASEGREEN",
  255. "login" => "ublue",
  256. "access" => array(
  257. "view" => true,
  258. "edit" => false,
  259. "delete" => false
  260. )
  261. ) ,
  262. array(
  263. "docName" => "TST_BASEGREEN",
  264. "login" => "ugreen",
  265. "access" => array(
  266. "view" => true,
  267. "edit" => true,
  268. "delete" => false
  269. )
  270. ) ,
  271. array(
  272. "docName" => "TST_BASEGREEN",
  273. "login" => "uryellow",
  274. "access" => array(
  275. "view" => true,
  276. "edit" => false,
  277. "delete" => false
  278. )
  279. ) ,
  280. array(
  281. "docName" => "TST_BASEGREEN",
  282. "login" => "urgreen",
  283. "access" => array(
  284. "view" => true,
  285. "edit" => false,
  286. "delete" => false
  287. )
  288. ) ,
  289. array(
  290. "docName" => "TST_BASEGREEN",
  291. "login" => "uggreen",
  292. "access" => array(
  293. "view" => true,
  294. "edit" => true,
  295. "delete" => false
  296. )
  297. )
  298. );
  299. }
  300. public function dataRoleMail()
  301. {
  302. return array(
  303. array(
  304. "login" => "rblue",
  305. "rawMail" => "blue@anakeen.com, green@anakeen.com, green@group.org, green@role.org",
  306. "completeMail" => '"John Bleu" <blue@anakeen.com>, "Jane Vert" <green@anakeen.com>, "John Vert" <green@group.org>, "John Blue-Yellow" <green@role.org>'
  307. ) ,
  308. array(
  309. "login" => "rred",
  310. "rawMail" => "blue@anakeen.com",
  311. "completeMail" => '"John Bleu" <blue@anakeen.com>'
  312. ) ,
  313. array(
  314. "login" => "ryellow",
  315. "rawMail" => "green@anakeen.com, green@group.org, green@role.org, yellow@role.org",
  316. "completeMail" => '"Jane Vert" <green@anakeen.com>, "John Vert" <green@group.org>, "John Blue-Yellow" <green@role.org>, "Jane Jaune" <yellow@role.org>'
  317. )
  318. );
  319. }
  320. public function dataDirectRole()
  321. {
  322. return array(
  323. array(
  324. "login" => "ublue",
  325. "expectRoles" => array(
  326. "rblue"
  327. )
  328. ) ,
  329. array(
  330. "login" => "ugreen",
  331. "expectRoles" => array(
  332. "ryellow",
  333. "rblue"
  334. )
  335. )
  336. );
  337. }
  338. public function dataRoleByGroup()
  339. {
  340. return array(
  341. array(
  342. "addTo" => array(
  343. "TST_GRPRED"
  344. ) ,
  345. "expectRoles" => array(
  346. "rred"
  347. )
  348. ) ,
  349. array(
  350. "addTo" => array(
  351. "TST_GRPGREEN"
  352. ) ,
  353. "expectRoles" => array(
  354. "rblue",
  355. "ryellow"
  356. )
  357. ) ,
  358. array(
  359. "addTo" => array(
  360. "TST_GRPYELLOW"
  361. ) ,
  362. "expectRoles" => array(
  363. "rred",
  364. "ryellow"
  365. )
  366. ) ,
  367. array(
  368. "addTo" => array(
  369. "TST_GRPBLUE"
  370. ) ,
  371. "expectRoles" => array(
  372. "rred",
  373. "rblue"
  374. )
  375. ) ,
  376. array(
  377. "addTo" => array(
  378. "TST_GRPBLUE",
  379. "TST_GRPRED"
  380. ) ,
  381. "expectRoles" => array(
  382. "rred",
  383. "rblue"
  384. )
  385. ) ,
  386. array(
  387. "addTo" => array(
  388. "TST_GRPBLUE",
  389. "TST_GRPGREEN"
  390. ) ,
  391. "expectRoles" => array(
  392. "rred",
  393. "ryellow",
  394. "rblue"
  395. )
  396. ) ,
  397. array(
  398. "addTo" => array(
  399. "TST_GRPBLUE",
  400. "TST_GRPGREEN",
  401. "TST_GRPYELLOW"
  402. ) ,
  403. "expectRoles" => array(
  404. "rred",
  405. "ryellow",
  406. "rblue"
  407. )
  408. ) ,
  409. array(
  410. "addTo" => array() ,
  411. "expectRoles" => array()
  412. )
  413. );
  414. }
  415. }