diff --git a/test/possum_test/did_test.gleam b/test/possum_test/did_test.gleam new file mode 100644 index 0000000..41ec437 --- /dev/null +++ b/test/possum_test/did_test.gleam @@ -0,0 +1,58 @@ +import gleam/list +import possum/did + +pub fn parse_test() -> Nil { + let assert Ok(_) = + "did:plc:ewvi7nxzyoun6zhxrhs64oiz" + |> did.parse + + let assert Ok(_) = + "did:plc:ewvi7nxzyoun6zhxrhs64oiz" + |> did.parse + + let assert Ok(_) = + "did:web:user.example.com" + |> did.parse + + // valid identifier syntax, invalid method + let assert Error(did.InvalidDidMethod(_)) = + list.try_fold( + [ + "did:method:val:two", + "did:m:v", + "did:method::::val", + "did:method:-:_:.", + "did:key:zQ3shZc2QzApp2oymGvQbzP8eKheVshBHbU4ZYjeXqwSKEn6N", + ], + Nil, + fn(_, item) { + case did.parse(item) { + Ok(_) -> Ok(Nil) + Error(err) -> Error(err) + } + }, + ) + + // invalid identifier syntax + let assert Error(did.InvalidFormat(_)) = + list.try_fold( + [ + "did:METHOD:val", + "did:m123:val", + "DID:method:val", + "did:method:", + "did:method:val/two", + "did:method:val?two", + "did:method:val#two", + ], + Nil, + fn(_, item) { + case did.parse(item) { + Ok(_) -> Ok(Nil) + Error(err) -> Error(err) + } + }, + ) + + Nil +}