-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtests.joke
33 lines (27 loc) · 1.01 KB
/
tests.joke
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
(ns joker-cgi-guestbook.test
(:require [joker.test :refer [deftest is run-tests]]))
(def joker-executable (joker.os/executable))
(def guestbook-file "guestbook.joke")
(defn guestbook
[& {:keys [stdin]}]
(joker.os/exec joker-executable {:args [guestbook-file]
:stdin stdin}))
(deftest front-page
(joker.os/set-env "REQUEST_METHOD" "GET")
(let [res (guestbook)]
(is (zero? (:exit res)))
(is (re-find #"Guestbook" (:out res)))))
(deftest post-no-name
(joker.os/set-env "CONTENT_LENGTH" "0")
(joker.os/set-env "REQUEST_METHOD" "POST")
(let [res (guestbook)]
(is (zero? (:exit res)))
(is (re-find #"a name and a message are required" (:out res)))))
(deftest post-no-captcha
(joker.os/set-env "REQUEST_METHOD" "POST")
(let [query "name=foo&message=bar"]
(joker.os/set-env "CONTENT_LENGTH" (str (count query)))
(let [res (guestbook :stdin query)]
(is (zero? (:exit res)))
(is (re-find #"you must solve the challenge" (:out res))))))
(run-tests)