cl-scopes/test/test-web.lisp

53 lines
1.8 KiB
Common Lisp

;;;; cl-scopes/test-web - test web (client and server) functionality
(defpackage :scopes/test-web
(:use :common-lisp)
(:local-nicknames (:config :scopes/config)
(:core :scopes/core)
(:client :scopes/web/client)
(:logging :scopes/logging)
(:message :scopes/core/message)
(:server :scopes/web/server)
(:t :scopes/testing))
(:export #:run)
(:import-from :scopes/testing #:deftest #:== #:has-prefix))
(in-package :scopes/test-web)
;;;; dummy / test / demo action handlers
(defun demo (ctx msg)
(let ((resp (message:sender msg)))
(if (null resp)
(log:warn "sender missing: ~s" msg)
(setf (server:content resp) "Hello Demo-World!"))))
;;;; test runner
(defun run ()
(let ((t:*test-suite* (t:test-suite "web")))
(load (t:test-path "config-web" "etc"))
(unwind-protect
(progn
(core:setup-services)
(let ((server (core:find-service :server))
(client (core:find-service :client)))
(test-server-config server)
(sleep 0.1)
(test-fileserver client)
(test-message client)
(sleep 0.1)))
(core:shutdown)
(t:show-result))))
(deftest test-server-config (server)
(== (parse-integer (server:port (core:config server))) 8899))
(deftest test-fileserver (client)
(let ((msg (message:make-message '(:test :get-page) :data '(:path "demo.html"))))
(== (client:base-url (core:config client)) "http://localhost:8899")
(has-prefix (client:get-page client msg) "Hello Fileserver!")))
(deftest test-message (client)
(let ((msg (message:make-message '(:test :data) :data '(:info "test data"))))
(== (client:send-message client msg) "Hello Demo-World!")))