diff --git a/deps.edn b/deps.edn index 1a590996..a29a2bed 100644 --- a/deps.edn +++ b/deps.edn @@ -90,7 +90,9 @@ clj-commons/multigrep {:mvn/version "0.5.0"} amperity/vault-clj {:mvn/version "1.0.4"} java-http-clj/java-http-clj {:mvn/version "0.4.3"} - com.stuartsierra/component {:mvn/version "1.0.0"}} + com.stuartsierra/component {:mvn/version "1.0.0"} + org.clojars.askonomm/ruuter {:mvn/version "1.2.2"} + org.clj-commons/digest {:mvn/version "1.4.100"}} :classpath-overrides {org.clojure/clojure nil org.clojure/spec.alpha nil org.clojure/core.specs.alpha nil}} diff --git a/doc/projects.md b/doc/projects.md index 9da58ce4..2ba4d8fd 100644 --- a/doc/projects.md +++ b/doc/projects.md @@ -48,6 +48,8 @@ The following libraries and projects are known to work with babashka. - [java-http-clj](#java-http-clj) - [component](#component) - [minimallist](#minimallist) + - [ruuter](#ruuter) + - [clj-commons.digest](#clj-commonsdigest) - [Pods](#pods) - [Projects](#projects-1) - [babashka-test-action](#babashka-test-action) @@ -716,6 +718,14 @@ Example partially borrowed from [minimallist's cljdoc](https://cljdoc.org/d/mini ;(tcg/sample (mg/gen (h/fn int?))) ``` +### [ruuter](https://github.com/askonomm/ruuter) + +A zero-dependency router where each route is a map. Works with the httpkit server built into babashka. + +### [clj-commons.digest](https://github.com/clj-commons/digest) + +A message digest library, providing functions for MD5, SHA-1, SHA-256, etc. + ## Pods [Babashka pods](https://github.com/babashka/babashka.pods) are programs that can diff --git a/test-resources/lib_tests/babashka/run_all_libtests.clj b/test-resources/lib_tests/babashka/run_all_libtests.clj index 624f9777..01c215eb 100644 --- a/test-resources/lib_tests/babashka/run_all_libtests.clj +++ b/test-resources/lib_tests/babashka/run_all_libtests.clj @@ -256,6 +256,10 @@ (test-namespaces 'component.component-test) +(test-namespaces 'ruuter.core-test) + +(test-namespaces 'clj-commons.digest-test) + ;;;; final exit code (let [{:keys [:test :fail :error] :as m} @status] diff --git a/test-resources/lib_tests/clj_commons/digest_test.clj b/test-resources/lib_tests/clj_commons/digest_test.clj new file mode 100644 index 00000000..5c29c28c --- /dev/null +++ b/test-resources/lib_tests/clj_commons/digest_test.clj @@ -0,0 +1,18 @@ +(ns clj-commons.digest-test + (:require [clj-commons.digest] + [clojure.java.io :as io] + [clojure.test :refer [deftest is]])) + +(def examples + {"clojure" {'sha-256 "4f3ea34e0a3a6196a18ec24b51c02b41d5f15bd04b4a94aa29e4f6badba0f5b0" + 'md5 "32c0d97f82a20e67c6d184620f6bd322" + 'sha-1 "49c91cf925f70570a72cf406e9b112ce9e32250c"} + nil {'sha-256 nil 'md5 nil 'sha-1 nil} + (io/file "test-resources/babashka/empty.clj") {'sha-256 "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + 'md5 "d41d8cd98f00b204e9800998ecf8427e" + 'sha-1 "da39a3ee5e6b4b0d3255bfef95601890afd80709"}}) + +(deftest digest-examples-test + (doseq [[input algo-result] examples + [algo expected] algo-result] + (is (= ((ns-resolve 'clj-commons.digest algo) input) expected)))) diff --git a/test-resources/lib_tests/ruuter/core_test.clj b/test-resources/lib_tests/ruuter/core_test.clj new file mode 100644 index 00000000..9260b0ab --- /dev/null +++ b/test-resources/lib_tests/ruuter/core_test.clj @@ -0,0 +1,26 @@ +(ns ruuter.core-test + (:require [clojure.test :refer [deftest is testing]] + [org.httpkit.client :as client] + [org.httpkit.server :as server] + [ruuter.core :as ruuter])) + +(def routes [{:path "/" + :method :get + :response {:status 200 + :body "Hi there!"}} + {:path "/hello/:who" + :method :get + :response (fn [req] + {:status 200 + :body (str "Hello, " (:who (:params req)))})}]) + +(def port 8080) + +(deftest ruuter-with-httpkit-test + (let [stop-server (server/run-server #(ruuter/route routes %) {:port port}) + fetch #(:body (deref (client/get (str "http://localhost:" port %) {:as :text}) 500 nil)) + root-result (fetch "/") + hello-result (fetch "/hello/babashka")] + (stop-server) + (is (= "Hi there!" root-result)) + (is (= "Hello, babashka" hello-result))))