/pcsd/test/test_permissions.rb

https://github.com/feist/pcs · Ruby · 498 lines · 420 code · 78 blank · 0 comment · 0 complexity · b1393f360c65da13249ff600b0b32486 MD5 · raw file

  1. require 'test/unit'
  2. require 'pcsd_test_utils.rb'
  3. require 'permissions.rb'
  4. class TestPermissions < Test::Unit::TestCase
  5. def test_is_user_type()
  6. assert_equal(true, Permissions::is_user_type(Permissions::TYPE_USER))
  7. assert_equal(true, Permissions::is_user_type(Permissions::TYPE_GROUP))
  8. assert_equal(false, Permissions::is_user_type(''))
  9. assert_equal(false, Permissions::is_user_type('nonsense'))
  10. end
  11. def test_is_permission_type()
  12. assert_equal(true, Permissions::is_permission_type(Permissions::READ))
  13. assert_equal(true, Permissions::is_permission_type(Permissions::WRITE))
  14. assert_equal(true, Permissions::is_permission_type(Permissions::GRANT))
  15. assert_equal(true, Permissions::is_permission_type(Permissions::FULL))
  16. assert_equal(false, Permissions::is_permission_type(''))
  17. assert_equal(false, Permissions::is_permission_type('nonsense'))
  18. end
  19. end
  20. class TestEntityPermissions < Test::Unit::TestCase
  21. def setup
  22. $logger = MockLogger.new
  23. end
  24. def test_applies_to()
  25. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [])
  26. assert_equal(true, ep.applies_to(Permissions::TYPE_USER, 'user'))
  27. assert_equal(false, ep.applies_to(Permissions::TYPE_USER, 'group'))
  28. assert_equal(false, ep.applies_to(Permissions::TYPE_GROUP, 'user'))
  29. assert_equal(false, ep.applies_to(Permissions::TYPE_GROUP, 'group'))
  30. ep = Permissions::EntityPermissions.new(Permissions::TYPE_GROUP, 'group', [])
  31. assert_equal(false, ep.applies_to(Permissions::TYPE_USER, 'user'))
  32. assert_equal(false, ep.applies_to(Permissions::TYPE_USER, 'user'))
  33. assert_equal(false, ep.applies_to(Permissions::TYPE_GROUP, 'user'))
  34. assert_equal(true, ep.applies_to(Permissions::TYPE_GROUP, 'group'))
  35. end
  36. def test_allows()
  37. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [])
  38. assert_equal(false, ep.allows?(Permissions::FULL))
  39. assert_equal(false, ep.allows?(Permissions::GRANT))
  40. assert_equal(false, ep.allows?(Permissions::WRITE))
  41. assert_equal(false, ep.allows?(Permissions::READ))
  42. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [
  43. Permissions::READ
  44. ])
  45. assert_equal(false, ep.allows?(Permissions::FULL))
  46. assert_equal(false, ep.allows?(Permissions::GRANT))
  47. assert_equal(false, ep.allows?(Permissions::WRITE))
  48. assert_equal(true, ep.allows?(Permissions::READ))
  49. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [
  50. Permissions::WRITE
  51. ])
  52. assert_equal(false, ep.allows?(Permissions::FULL))
  53. assert_equal(false, ep.allows?(Permissions::GRANT))
  54. assert_equal(true, ep.allows?(Permissions::WRITE))
  55. assert_equal(true, ep.allows?(Permissions::READ))
  56. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [
  57. Permissions::GRANT
  58. ])
  59. assert_equal(false, ep.allows?(Permissions::FULL))
  60. assert_equal(true, ep.allows?(Permissions::GRANT))
  61. assert_equal(false, ep.allows?(Permissions::WRITE))
  62. assert_equal(false, ep.allows?(Permissions::READ))
  63. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [
  64. Permissions::FULL
  65. ])
  66. assert_equal(true, ep.allows?(Permissions::FULL))
  67. assert_equal(true, ep.allows?(Permissions::GRANT))
  68. assert_equal(true, ep.allows?(Permissions::WRITE))
  69. assert_equal(true, ep.allows?(Permissions::READ))
  70. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [
  71. Permissions::READ, Permissions::WRITE
  72. ])
  73. assert_equal(false, ep.allows?(Permissions::FULL))
  74. assert_equal(false, ep.allows?(Permissions::GRANT))
  75. assert_equal(true, ep.allows?(Permissions::WRITE))
  76. assert_equal(true, ep.allows?(Permissions::READ))
  77. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [
  78. Permissions::READ, Permissions::WRITE, Permissions::GRANT
  79. ])
  80. assert_equal(false, ep.allows?(Permissions::FULL))
  81. assert_equal(true, ep.allows?(Permissions::GRANT))
  82. assert_equal(true, ep.allows?(Permissions::WRITE))
  83. assert_equal(true, ep.allows?(Permissions::READ))
  84. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [
  85. Permissions::READ, Permissions::WRITE, Permissions::GRANT, Permissions::FULL
  86. ])
  87. assert_equal(true, ep.allows?(Permissions::FULL))
  88. assert_equal(true, ep.allows?(Permissions::GRANT))
  89. assert_equal(true, ep.allows?(Permissions::WRITE))
  90. assert_equal(true, ep.allows?(Permissions::READ))
  91. end
  92. def test_merge!()
  93. ep = Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [
  94. Permissions::READ
  95. ])
  96. assert_equal(false, ep.allows?(Permissions::FULL))
  97. assert_equal(false, ep.allows?(Permissions::GRANT))
  98. assert_equal(false, ep.allows?(Permissions::WRITE))
  99. assert_equal(true, ep.allows?(Permissions::READ))
  100. ep.merge!(Permissions::EntityPermissions.new(Permissions::TYPE_USER, 'user', [
  101. Permissions::GRANT
  102. ]))
  103. assert_equal(false, ep.allows?(Permissions::FULL))
  104. assert_equal(true, ep.allows?(Permissions::GRANT))
  105. assert_equal(false, ep.allows?(Permissions::WRITE))
  106. assert_equal(true, ep.allows?(Permissions::READ))
  107. end
  108. end
  109. class TestPermissionsSet < Test::Unit::TestCase
  110. def setup
  111. $logger = MockLogger.new
  112. end
  113. def test_allows_empty
  114. perms = Permissions::PermissionsSet.new([])
  115. assert_equal(true, perms.allows?('hacluster', [], Permissions::FULL))
  116. assert_equal(true, perms.allows?('hacluster', [], Permissions::GRANT))
  117. assert_equal(true, perms.allows?('hacluster', [], Permissions::WRITE))
  118. assert_equal(true, perms.allows?('hacluster', [], Permissions::READ))
  119. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  120. assert_equal(false, perms.allows?('user1', [], Permissions::GRANT))
  121. assert_equal(false, perms.allows?('user1', [], Permissions::WRITE))
  122. assert_equal(false, perms.allows?('user1', [], Permissions::READ))
  123. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::FULL))
  124. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::GRANT))
  125. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::WRITE))
  126. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::READ))
  127. end
  128. def test_allows_user
  129. perms = Permissions::PermissionsSet.new([
  130. Permissions::EntityPermissions.new(
  131. Permissions::TYPE_USER, 'user1', []
  132. ),
  133. ])
  134. assert_equal(true, perms.allows?('hacluster', [], Permissions::FULL))
  135. assert_equal(true, perms.allows?('hacluster', [], Permissions::GRANT))
  136. assert_equal(true, perms.allows?('hacluster', [], Permissions::WRITE))
  137. assert_equal(true, perms.allows?('hacluster', [], Permissions::READ))
  138. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  139. assert_equal(false, perms.allows?('user1', [], Permissions::GRANT))
  140. assert_equal(false, perms.allows?('user1', [], Permissions::WRITE))
  141. assert_equal(false, perms.allows?('user1', [], Permissions::READ))
  142. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::FULL))
  143. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::GRANT))
  144. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::WRITE))
  145. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::READ))
  146. perms = Permissions::PermissionsSet.new([
  147. Permissions::EntityPermissions.new(
  148. Permissions::TYPE_USER, 'user1', [Permissions::WRITE]
  149. ),
  150. ])
  151. assert_equal(true, perms.allows?('hacluster', [], Permissions::FULL))
  152. assert_equal(true, perms.allows?('hacluster', [], Permissions::GRANT))
  153. assert_equal(true, perms.allows?('hacluster', [], Permissions::WRITE))
  154. assert_equal(true, perms.allows?('hacluster', [], Permissions::READ))
  155. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  156. assert_equal(false, perms.allows?('user1', [], Permissions::GRANT))
  157. assert_equal(true, perms.allows?('user1', [], Permissions::WRITE))
  158. assert_equal(true, perms.allows?('user1', [], Permissions::READ))
  159. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::FULL))
  160. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::GRANT))
  161. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::WRITE))
  162. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::READ))
  163. assert_equal(false, perms.allows?('user2', [], Permissions::FULL))
  164. assert_equal(false, perms.allows?('user2', [], Permissions::GRANT))
  165. assert_equal(false, perms.allows?('user2', [], Permissions::WRITE))
  166. assert_equal(false, perms.allows?('user2', [], Permissions::READ))
  167. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::FULL))
  168. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::GRANT))
  169. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::WRITE))
  170. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::READ))
  171. perms = Permissions::PermissionsSet.new([
  172. Permissions::EntityPermissions.new(
  173. Permissions::TYPE_USER, 'user1', [Permissions::WRITE]
  174. ),
  175. Permissions::EntityPermissions.new(
  176. Permissions::TYPE_USER, 'user2', [Permissions::GRANT]
  177. ),
  178. ])
  179. assert_equal(true, perms.allows?('hacluster', [], Permissions::FULL))
  180. assert_equal(true, perms.allows?('hacluster', [], Permissions::GRANT))
  181. assert_equal(true, perms.allows?('hacluster', [], Permissions::WRITE))
  182. assert_equal(true, perms.allows?('hacluster', [], Permissions::READ))
  183. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  184. assert_equal(false, perms.allows?('user1', [], Permissions::GRANT))
  185. assert_equal(true, perms.allows?('user1', [], Permissions::WRITE))
  186. assert_equal(true, perms.allows?('user1', [], Permissions::READ))
  187. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::FULL))
  188. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::GRANT))
  189. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::WRITE))
  190. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::READ))
  191. assert_equal(false, perms.allows?('user2', [], Permissions::FULL))
  192. assert_equal(true, perms.allows?('user2', [], Permissions::GRANT))
  193. assert_equal(false, perms.allows?('user2', [], Permissions::WRITE))
  194. assert_equal(false, perms.allows?('user2', [], Permissions::READ))
  195. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::FULL))
  196. assert_equal(true, perms.allows?('user2', ['group1'], Permissions::GRANT))
  197. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::WRITE))
  198. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::READ))
  199. end
  200. def test_allows_group
  201. perms = Permissions::PermissionsSet.new([
  202. Permissions::EntityPermissions.new(
  203. Permissions::TYPE_GROUP, 'group1', []
  204. ),
  205. ])
  206. assert_equal(true, perms.allows?('hacluster', [], Permissions::FULL))
  207. assert_equal(true, perms.allows?('hacluster', [], Permissions::GRANT))
  208. assert_equal(true, perms.allows?('hacluster', [], Permissions::WRITE))
  209. assert_equal(true, perms.allows?('hacluster', [], Permissions::READ))
  210. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  211. assert_equal(false, perms.allows?('user1', [], Permissions::GRANT))
  212. assert_equal(false, perms.allows?('user1', [], Permissions::WRITE))
  213. assert_equal(false, perms.allows?('user1', [], Permissions::READ))
  214. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::FULL))
  215. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::GRANT))
  216. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::WRITE))
  217. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::READ))
  218. perms = Permissions::PermissionsSet.new([
  219. Permissions::EntityPermissions.new(
  220. Permissions::TYPE_GROUP, 'group1', [Permissions::WRITE]
  221. ),
  222. ])
  223. assert_equal(true, perms.allows?('hacluster', [], Permissions::FULL))
  224. assert_equal(true, perms.allows?('hacluster', [], Permissions::GRANT))
  225. assert_equal(true, perms.allows?('hacluster', [], Permissions::WRITE))
  226. assert_equal(true, perms.allows?('hacluster', [], Permissions::READ))
  227. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  228. assert_equal(false, perms.allows?('user1', [], Permissions::GRANT))
  229. assert_equal(false, perms.allows?('user1', [], Permissions::WRITE))
  230. assert_equal(false, perms.allows?('user1', [], Permissions::READ))
  231. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::FULL))
  232. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::GRANT))
  233. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::WRITE))
  234. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::READ))
  235. assert_equal(false, perms.allows?('user2', [], Permissions::FULL))
  236. assert_equal(false, perms.allows?('user2', [], Permissions::GRANT))
  237. assert_equal(false, perms.allows?('user2', [], Permissions::WRITE))
  238. assert_equal(false, perms.allows?('user2', [], Permissions::READ))
  239. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::FULL))
  240. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::GRANT))
  241. assert_equal(true, perms.allows?('user2', ['group1'], Permissions::WRITE))
  242. assert_equal(true, perms.allows?('user2', ['group1'], Permissions::READ))
  243. perms = Permissions::PermissionsSet.new([
  244. Permissions::EntityPermissions.new(
  245. Permissions::TYPE_GROUP, 'group1', [Permissions::WRITE]
  246. ),
  247. Permissions::EntityPermissions.new(
  248. Permissions::TYPE_GROUP, 'group2', [Permissions::GRANT]
  249. ),
  250. ])
  251. assert_equal(true, perms.allows?('hacluster', [], Permissions::FULL))
  252. assert_equal(true, perms.allows?('hacluster', [], Permissions::GRANT))
  253. assert_equal(true, perms.allows?('hacluster', [], Permissions::WRITE))
  254. assert_equal(true, perms.allows?('hacluster', [], Permissions::READ))
  255. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  256. assert_equal(false, perms.allows?('user1', [], Permissions::GRANT))
  257. assert_equal(false, perms.allows?('user1', [], Permissions::WRITE))
  258. assert_equal(false, perms.allows?('user1', [], Permissions::READ))
  259. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::FULL))
  260. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::GRANT))
  261. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::WRITE))
  262. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::READ))
  263. assert_equal(false, perms.allows?('user1', ['group2'], Permissions::FULL))
  264. assert_equal(true, perms.allows?('user1', ['group2'], Permissions::GRANT))
  265. assert_equal(false, perms.allows?('user1', ['group2'], Permissions::WRITE))
  266. assert_equal(false, perms.allows?('user1', ['group2'], Permissions::READ))
  267. assert_equal(false, perms.allows?('user1', ['group1', 'group2'], Permissions::FULL))
  268. assert_equal(true, perms.allows?('user1', ['group1', 'group2'], Permissions::GRANT))
  269. assert_equal(true, perms.allows?('user1', ['group1', 'group2'], Permissions::WRITE))
  270. assert_equal(true, perms.allows?('user1', ['group1', 'group2'], Permissions::READ))
  271. end
  272. def test_allows_user_group
  273. perms = Permissions::PermissionsSet.new([
  274. Permissions::EntityPermissions.new(
  275. Permissions::TYPE_USER, 'user1', []
  276. ),
  277. Permissions::EntityPermissions.new(
  278. Permissions::TYPE_GROUP, 'group1', []
  279. ),
  280. ])
  281. assert_equal(true, perms.allows?('hacluster', [], Permissions::FULL))
  282. assert_equal(true, perms.allows?('hacluster', [], Permissions::GRANT))
  283. assert_equal(true, perms.allows?('hacluster', [], Permissions::WRITE))
  284. assert_equal(true, perms.allows?('hacluster', [], Permissions::READ))
  285. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  286. assert_equal(false, perms.allows?('user1', [], Permissions::GRANT))
  287. assert_equal(false, perms.allows?('user1', [], Permissions::WRITE))
  288. assert_equal(false, perms.allows?('user1', [], Permissions::READ))
  289. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::FULL))
  290. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::GRANT))
  291. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::WRITE))
  292. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::READ))
  293. assert_equal(
  294. [
  295. ['debug', 'permission check action=full username=hacluster groups='],
  296. ['debug', 'permission granted for superuser'],
  297. ['debug', 'permission check action=grant username=hacluster groups='],
  298. ['debug', 'permission granted for superuser'],
  299. ['debug', 'permission check action=write username=hacluster groups='],
  300. ['debug', 'permission granted for superuser'],
  301. ['debug', 'permission check action=read username=hacluster groups='],
  302. ['debug', 'permission granted for superuser'],
  303. ['debug', 'permission check action=full username=user1 groups='],
  304. ['debug', 'permission denied'],
  305. ['debug', 'permission check action=grant username=user1 groups='],
  306. ['debug', 'permission denied'],
  307. ['debug', 'permission check action=write username=user1 groups='],
  308. ['debug', 'permission denied'],
  309. ['debug', 'permission check action=read username=user1 groups='],
  310. ['debug', 'permission denied'],
  311. ['debug', 'permission check action=full username=user1 groups=group1'],
  312. ['debug', 'permission denied'],
  313. ['debug', 'permission check action=grant username=user1 groups=group1'],
  314. ['debug', 'permission denied'],
  315. ['debug', 'permission check action=write username=user1 groups=group1'],
  316. ['debug', 'permission denied'],
  317. ['debug', 'permission check action=read username=user1 groups=group1'],
  318. ['debug', 'permission denied'],
  319. ],
  320. $logger.log
  321. )
  322. $logger.clean
  323. perms = Permissions::PermissionsSet.new([
  324. Permissions::EntityPermissions.new(
  325. Permissions::TYPE_USER, 'user1', [Permissions::GRANT]
  326. ),
  327. Permissions::EntityPermissions.new(
  328. Permissions::TYPE_GROUP, 'group1', [Permissions::WRITE]
  329. ),
  330. Permissions::EntityPermissions.new(
  331. Permissions::TYPE_USER, 'user3', [Permissions::FULL]
  332. ),
  333. Permissions::EntityPermissions.new(
  334. Permissions::TYPE_GROUP, 'group3', [Permissions::FULL]
  335. ),
  336. ])
  337. assert_equal(true, perms.allows?('hacluster', [], Permissions::FULL))
  338. assert_equal(true, perms.allows?('hacluster', [], Permissions::GRANT))
  339. assert_equal(true, perms.allows?('hacluster', [], Permissions::WRITE))
  340. assert_equal(true, perms.allows?('hacluster', [], Permissions::READ))
  341. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  342. assert_equal(true, perms.allows?('user1', [], Permissions::GRANT))
  343. assert_equal(false, perms.allows?('user1', [], Permissions::WRITE))
  344. assert_equal(false, perms.allows?('user1', [], Permissions::READ))
  345. assert_equal(false, perms.allows?('user1', ['group1'], Permissions::FULL))
  346. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::GRANT))
  347. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::WRITE))
  348. assert_equal(true, perms.allows?('user1', ['group1'], Permissions::READ))
  349. assert_equal(false, perms.allows?('user2', [], Permissions::FULL))
  350. assert_equal(false, perms.allows?('user2', [], Permissions::GRANT))
  351. assert_equal(false, perms.allows?('user2', [], Permissions::WRITE))
  352. assert_equal(false, perms.allows?('user2', [], Permissions::READ))
  353. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::FULL))
  354. assert_equal(false, perms.allows?('user2', ['group1'], Permissions::GRANT))
  355. assert_equal(true, perms.allows?('user2', ['group1'], Permissions::WRITE))
  356. assert_equal(true, perms.allows?('user2', ['group1'], Permissions::READ))
  357. assert_equal(
  358. [
  359. ['debug', 'permission check action=full username=hacluster groups='],
  360. ['debug', 'permission granted for superuser'],
  361. ['debug', 'permission check action=grant username=hacluster groups='],
  362. ['debug', 'permission granted for superuser'],
  363. ['debug', 'permission check action=write username=hacluster groups='],
  364. ['debug', 'permission granted for superuser'],
  365. ['debug', 'permission check action=read username=hacluster groups='],
  366. ['debug', 'permission granted for superuser'],
  367. ['debug', 'permission check action=full username=user1 groups='],
  368. ['debug', 'permission denied'],
  369. ['debug', 'permission check action=grant username=user1 groups='],
  370. ['debug', 'permission granted for user user1'],
  371. ['debug', 'permission check action=write username=user1 groups='],
  372. ['debug', 'permission denied'],
  373. ['debug', 'permission check action=read username=user1 groups='],
  374. ['debug', 'permission denied'],
  375. ['debug', 'permission check action=full username=user1 groups=group1'],
  376. ['debug', 'permission denied'],
  377. ['debug', 'permission check action=grant username=user1 groups=group1'],
  378. ['debug', 'permission granted for user user1'],
  379. ['debug', 'permission check action=write username=user1 groups=group1'],
  380. ['debug', 'permission granted for group group1'],
  381. ['debug', 'permission check action=read username=user1 groups=group1'],
  382. ['debug', 'permission granted for group group1'],
  383. ['debug', 'permission check action=full username=user2 groups='],
  384. ['debug', 'permission denied'],
  385. ['debug', 'permission check action=grant username=user2 groups='],
  386. ['debug', 'permission denied'],
  387. ['debug', 'permission check action=write username=user2 groups='],
  388. ['debug', 'permission denied'],
  389. ['debug', 'permission check action=read username=user2 groups='],
  390. ['debug', 'permission denied'],
  391. ['debug', 'permission check action=full username=user2 groups=group1'],
  392. ['debug', 'permission denied'],
  393. ['debug', 'permission check action=grant username=user2 groups=group1'],
  394. ['debug', 'permission denied'],
  395. ['debug', 'permission check action=write username=user2 groups=group1'],
  396. ['debug', 'permission granted for group group1'],
  397. ['debug', 'permission check action=read username=user2 groups=group1'],
  398. ['debug', 'permission granted for group group1'],
  399. ],
  400. $logger.log
  401. )
  402. end
  403. def test_merge!
  404. perms = Permissions::PermissionsSet.new([
  405. Permissions::EntityPermissions.new(
  406. Permissions::TYPE_USER, 'user1', [Permissions::GRANT]
  407. ),
  408. Permissions::EntityPermissions.new(
  409. Permissions::TYPE_GROUP, 'user2', [Permissions::FULL]
  410. ),
  411. Permissions::EntityPermissions.new(
  412. Permissions::TYPE_USER, 'user1', [Permissions::READ]
  413. ),
  414. ])
  415. assert_equal(false, perms.allows?('user1', [], Permissions::FULL))
  416. assert_equal(true, perms.allows?('user1', [], Permissions::GRANT))
  417. assert_equal(false, perms.allows?('user1', [], Permissions::WRITE))
  418. assert_equal(true, perms.allows?('user1', [], Permissions::READ))
  419. end
  420. end