test/form-parser-test.lisp
(defpackage murja.tests.form-parser-test
(:use :cl :fiveam)
(:import-from :murja.tests :main-suite)
(:import-from :murja.routes.login-routes :formdata->hashmap))
(in-package :murja.tests.form-parser-test)
(in-suite main-suite)
(def-test form-parser-test ()
(let* ((easy-test "username=testi&password=testi")
(harder-test "username=aaaa%3Daaaa&password=heh%26%3D%3AD")
(hardest-test "username=testi%26&password=j%C3%A4nni%C3%A4+urli+merkkej%C3%A4%26%26%26%26"))
(let ((easy-form (formdata->hashmap easy-test)))
(is (string= "testi"
(gethash "username" easy-form)))
(is (string= "testi"
(gethash "password" easy-form))))
(let ((harder-form (formdata->hashmap harder-test)))
(is (string= "aaaa=aaaa"
(gethash "username" harder-form)))
(is (string= "heh&=:D"
(gethash "password" harder-form))))
(let ((hardest-form (formdata->hashmap hardest-test)))
(is (string= "testi&"
(gethash "username" hardest-form)))
(is (string= "jänniä urli merkkejä&&&&"
(gethash "password" hardest-form))))))
;; (fiveam:explain!
;; (fiveam:run 'form-parser-test))