test/form-parser-test.lisp

DOWNLOAD
(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))