From f577e2dedeebb02512f6ad6a7b415b9fd8716820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reynir=20Bj=C3=B6rnsson?= Date: Fri, 11 Dec 2020 15:59:51 +0100 Subject: [PATCH] Add tests --- cert_service.opam | 2 ++ test/dune | 3 +++ test/test.ml | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 test/dune create mode 100644 test/test.ml diff --git a/cert_service.opam b/cert_service.opam index d9aab65..dde1d8d 100644 --- a/cert_service.opam +++ b/cert_service.opam @@ -14,9 +14,11 @@ depends: [ "lwt" "bos" "mirage-crypto-rng" + "alcotest" {with-test} ] build: [ ["dune" "subst"] {pinned} ["dune" "build" "-p" name "-j" jobs] + ["dune" "runtest" "-p" name "-j" jobs] {with-test} ] synopsis: "ACME-like certificate signing service for shell servers" diff --git a/test/dune b/test/dune new file mode 100644 index 0000000..17105ad --- /dev/null +++ b/test/dune @@ -0,0 +1,3 @@ +(test + (name test) + (libraries cert_service alcotest mirage-crypto-rng.unix)) diff --git a/test/test.ml b/test/test.ml new file mode 100644 index 0000000..f73e4ed --- /dev/null +++ b/test/test.ml @@ -0,0 +1,44 @@ +let () = Mirage_crypto_rng_unix.initialize () + +let csr_privkey = + lazy + (`RSA (Mirage_crypto_pk.Rsa.generate ~bits:1024 ())) + +let dn_of_name name = + [X509.(Distinguished_name.Relative_distinguished_name.singleton + (CN name))] + +let csr name = + X509.Signing_request.create + (dn_of_name name) + (Lazy.force csr_privkey) + +let check_csr_dn_good () = + let name = "reynir" in + let csr = csr name in + Alcotest.(check @@ result unit Alcotest.reject) + "good dn in csr" + (Ok ()) + (Cert_service.check_csr_dn + csr name) + +let check_csr_dn_different () = + let name = "reynir" in + let csr = csr name in + match Cert_service.check_csr_dn csr "notreynir" with + | Ok () -> Alcotest.fail "check succeeded, expected failure" + | Error (`Msg _) -> () + +let cert_tests = [ + "check_csr_dn_good", `Quick, check_csr_dn_good; + "check_csr_dn_different", `Quick, check_csr_dn_different; +] + +let tests : unit Alcotest.test list= [ + "check_csr_dn", cert_tests +] + +let () = + Alcotest.run + "Cert-service tests" + tests