|
| 1 | +module D = Debug.Make (struct let name = __MODULE__ end) |
| 2 | + |
| 3 | +let test_identity () = |
| 4 | + let specs = |
| 5 | + [ |
| 6 | + ((Some "XenCenter2024", "u1000"), "u1000/XenCenter2024") |
| 7 | + ; ((None, "u1001"), "u1001") |
| 8 | + ; ((None, "Special!@#"), "Special") |
| 9 | + ; ((Some "With-Hyphen", "123"), "123/WithHyphen") |
| 10 | + ; ((Some "", ""), "root") |
| 11 | + ; ((Some " Xen Center 2024 ", ", u 1000 "), "u1000/XenCenter2024") |
| 12 | + ; ((Some "Xen Center ,/@.~# 2024", "root"), "root/XenCenter2024") |
| 13 | + ; ((Some "XenCenter 2024.3.18", ""), "root/XenCenter2024318") |
| 14 | + ; ((Some "", "S-R-X-Y1-Y2-Yn-1-Yn"), "SRXY1Y2Yn1Yn") |
| 15 | + ; ( (Some "XenCenter2024", "S-R-X-Y1-Y2-Yn-1-Yn") |
| 16 | + , "SRXY1Y2Yn1Yn/XenCenter2024" |
| 17 | + ) |
| 18 | + ] |
| 19 | + in |
| 20 | + |
| 21 | + let test_make ((user_agent, subject_sid), expected_identity) = |
| 22 | + let actual_identity = |
| 23 | + Tgroup.Group.Identity.(make ?user_agent subject_sid |> to_string) |
| 24 | + in |
| 25 | + Alcotest.(check string) |
| 26 | + "Check expected identity" expected_identity actual_identity |
| 27 | + in |
| 28 | + List.iter test_make specs |
| 29 | + |
| 30 | +let test_of_creator () = |
| 31 | + let dummy_identity = |
| 32 | + Tgroup.Group.Identity.make ~user_agent:"XenCenter2024" "root" |
| 33 | + in |
| 34 | + let specs = |
| 35 | + [ |
| 36 | + ((None, None, None, None), "external/unauthenticated") |
| 37 | + ; ((Some true, None, None, None), "external/intrapool") |
| 38 | + ; ( ( Some true |
| 39 | + , Some Tgroup.Group.Endpoint.External |
| 40 | + , Some dummy_identity |
| 41 | + , Some "sm" |
| 42 | + ) |
| 43 | + , "external/intrapool" |
| 44 | + ) |
| 45 | + ; ( ( Some true |
| 46 | + , Some Tgroup.Group.Endpoint.Internal |
| 47 | + , Some dummy_identity |
| 48 | + , Some "sm" |
| 49 | + ) |
| 50 | + , "external/intrapool" |
| 51 | + ) |
| 52 | + ; ( ( None |
| 53 | + , Some Tgroup.Group.Endpoint.Internal |
| 54 | + , Some dummy_identity |
| 55 | + , Some "cli" |
| 56 | + ) |
| 57 | + , "internal/cli" |
| 58 | + ) |
| 59 | + ; ( (None, None, Some dummy_identity, Some "sm") |
| 60 | + , "external/authenticated/root/XenCenter2024" |
| 61 | + ) |
| 62 | + ] |
| 63 | + in |
| 64 | + let test_make ((intrapool, endpoint, identity, originator), expected_group) = |
| 65 | + let originator = Option.map Tgroup.Group.Originator.of_string originator in |
| 66 | + let actual_group = |
| 67 | + Tgroup.Group.( |
| 68 | + Creator.make ?intrapool ?endpoint ?identity ?originator () |
| 69 | + |> of_creator |
| 70 | + |> to_string |
| 71 | + ) |
| 72 | + in |
| 73 | + Alcotest.(check string) "Check expected group" expected_group actual_group |
| 74 | + in |
| 75 | + List.iter test_make specs |
| 76 | + |
| 77 | +let tests = |
| 78 | + [ |
| 79 | + ("identity make", `Quick, test_identity) |
| 80 | + ; ("group of creator", `Quick, test_of_creator) |
| 81 | + ] |
| 82 | + |
| 83 | +let () = Alcotest.run "Tgroup library" [("Thread classification", tests)] |
0 commit comments