|
47 | 47 |
|
48 | 48 | (defn- generate-query-map-for-group-permissions |
49 | 49 | "Returns a query map generated from group permission pairs. |
50 | | - group-permissions should be a seqeuence of group/user-identifer permission pairs such as |
| 50 | + group-permissions should be a sequence of group/user-identifer permission pairs such as |
51 | 51 | [\"guest\" \"read\" \"AG10000-PROV1\" \"create\" \"registered\" \"order\"]" |
52 | 52 | [group-permissions] |
53 | | - (first (reduce (fn [[m count] [group permission]] |
54 | | - [(assoc-in m |
55 | | - [:group-permission (keyword (str count))] |
56 | | - {:permitted-group group |
57 | | - :permission permission}) |
58 | | - (inc count)]) |
59 | | - [{} 0] |
60 | | - (partition 2 group-permissions)))) |
| 53 | + (reduce (fn [query-map [index [group permission]]] |
| 54 | + (assoc query-map |
| 55 | + (str "group-permission[" index "][permitted-group]") group |
| 56 | + (str "group-permission[" index "][permission]") permission)) |
| 57 | + {} |
| 58 | + (map-indexed vector (partition 2 group-permissions)))) |
61 | 59 |
|
62 | 60 | (deftest acl-search-order-test |
63 | 61 | ;; Conforms to requirements set out in CMR-3590, alphabetical order regardless of case |
|
415 | 413 | ;; CMR-3154 acceptance criterium 3 |
416 | 414 | (testing "Search ACLs by group permission just group or permission" |
417 | 415 | (are3 [query-map acls] |
418 | | - (let [response (ac/search-for-acls (u/conn-context) |
419 | | - {:group-permission {:0 query-map} :page_size 20} |
| 416 | + (let [flat-query (into {} |
| 417 | + (for [[k v] query-map] |
| 418 | + [(str "group-permission[0][" (name k) "]") v])) |
| 419 | + ;; Merge the flattened query with the page_size parameter |
| 420 | + response (ac/search-for-acls (u/conn-context) |
| 421 | + (merge flat-query {:page_size 20}) |
420 | 422 | {:token token})] |
421 | 423 | (is (= (u/acls->search-response (count acls) acls) |
422 | 424 | (dissoc response :took)))) |
| 425 | + |
423 | 426 | "Just user type" |
424 | 427 | {:permitted-group "guest"} guest-acls |
425 | 428 |
|
|
434 | 437 |
|
435 | 438 | ;; CMR-3154 acceptance criterium 4 |
436 | 439 | (testing "Search ACLS by group permission with non integer index is an error" |
437 | | - (let [query {:group-permission {:foo {:permitted-group "guest" :permission "read"}}}] |
| 440 | + (let [query {"group-permission[foo][permitted-group]" "guest" |
| 441 | + "group-permission[foo][permission]" "read"}] |
438 | 442 | (is (= {:status 400 |
439 | 443 | :body {:errors ["Parameter group_permission has invalid index value [foo]. Only integers greater than or equal to zero may be specified."]} |
440 | 444 | :content-type :json} |
441 | 445 | (ac/search-for-acls (u/conn-context) query {:token token :raw? true}))))) |
442 | 446 |
|
443 | 447 | ;; CMR-3154 acceptance criterium 5 |
444 | 448 | (testing "Search ACLS by group permission with subfield other than permitted_group or permission is an error" |
445 | | - (let [query {:group-permission {:0 {:allowed-group "guest" :permission "read"}}}] |
| 449 | + (let [query {"group-permission[0][allowed-group]" "guest" |
| 450 | + "group-permission[0][permission]" "read"}] |
446 | 451 | (is (= {:status 400 |
447 | 452 | :body {:errors ["Parameter group_permission has invalid subfield [allowed_group]. Only 'permitted_group' and 'permission' are allowed."]} |
448 | 453 | :content-type :json} |
449 | 454 | (ac/search-for-acls (u/conn-context) query {:token token :raw? true}))))) |
450 | 455 |
|
451 | 456 | (testing "Searching ACLS by group permission with permission values other than read, create, update, delete, or order is an error" |
452 | | - (let [query {:group-permission {:0 {:permitted_group "guest" :permission "foo"}}}] |
| 457 | + (let [query {"group-permission[0][permitted_group]" "guest" |
| 458 | + "group-permission[0][permission]" "foo"}] |
453 | 459 | (is (= {:status 400 |
454 | 460 | :body {:errors ["Sub-parameter permission of parameter group_permissions has invalid values [foo]. Only 'read', 'update', 'create', 'delete', or 'order' may be specified."]} |
455 | 461 | :content-type :json} |
|
0 commit comments