aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Ángel Moreno <mail@migalmoreno.com>2022-12-16 22:40:08 +0100
committerMiguel Ángel Moreno <mail@migalmoreno.com>2022-12-16 22:40:08 +0100
commit250e35c346731d4a8df3b5b060ed7984d512c40f (patch)
tree0665523f0203b0dc47c3723b6e7e095103cea629
parentb7af9695931a7fb355c23cd5e3816e06f88696e5 (diff)
tests: Add more.
-rw-r--r--tests/package.lisp5
-rw-r--r--tests/router.lisp103
2 files changed, 73 insertions, 35 deletions
diff --git a/tests/package.lisp b/tests/package.lisp
new file mode 100644
index 0000000..7d98ac0
--- /dev/null
+++ b/tests/package.lisp
@@ -0,0 +1,5 @@
+(uiop:define-package #:nx-router/tests
+ (:use #:cl #:lisp-unit2)
+ (:import-from #:nx-router)
+ (:import-from #:nyxt
+ #:match-domain))
diff --git a/tests/router.lisp b/tests/router.lisp
index 9a0629e..5057d30 100644
--- a/tests/router.lisp
+++ b/tests/router.lisp
@@ -1,90 +1,123 @@
-(in-package #:cl-user)
-(uiop:define-package #:nx-router/tests
- (:use #:cl #:lisp-unit2)
- (:import-from :nx-router))
-
(in-package #:nx-router/tests)
(nyxt:use-nyxt-package-nicknames)
-(defmethod asdf:perform ((op asdf:test-op) (c (eql (asdf:find-system :nx-router))))
- (asdf:oos 'asdf:load-op :nx-router/tests)
- (let ((*package* (find-package :nx-router/tests)))
- (uiop:symbol-call :lisp-unit2 :run-tests
- :package :nx-router/tests
- :name :nx-router
- :run-context (find-symbol "WITH-SUMMARY-CONTEXT" :lisp-unit2))))
-
(defvar *url* "https://example.org/")
(defparameter *redirector-with-list-rule*
(make-instance 'router:redirector
- :trigger (nyxt:match-domain *url*)
+ :trigger (match-domain *url*)
:redirect-url "atlas.engineer"
- :redirect-rule '(("/about/" . (not "/" "/v/"))
- ("/contact" . "/c/"))))
+ :redirect-rule '(("/community/" . "/c/")
+ ("/about/" . (not "/" "/v/")))))
+
+(defparameter *redirector-with-regexp-trigger*
+ (make-instance 'router:redirector
+ :trigger "https://(\\w+)\\.atlas.engineer/(.*)"
+ :redirect-url "https://atlas.engineer/\\1/\\2"))
(defparameter *redirector-with-regexp-rule*
(make-instance 'router:redirector
- :trigger (nyxt:match-domain *url*)
+ :trigger (match-domain *url*)
:redirect-url "https://atlas.engineer/\\1/\\2"
:redirect-rule "https://(\\w+)\\.atlas.engineer/(.*)"))
+(defparameter *redirector-with-nonstandard-port-and-scheme*
+ (make-instance 'router:redirector
+ :trigger (match-domain *url*)
+ :redirect-url (quri:uri "http://atlas.engineer:8080")))
+
(defparameter *blocker-with-list-blocklist*
(make-instance 'router:blocker
- :trigger (nyxt:match-domain *url*)
- :blocklist '(:path (:contains ("work"))
- :host (:starts ("/nyxt")))))
+ :trigger (match-domain *url*)
+ :blocklist '(:path (:starts "/about" :ends "/work")
+ :host (:starts "nyxt" :contains "atlas"))))
+
+(defparameter *blocker-with-list-blocklist-or-rules*
+ (make-instance 'router:blocker
+ :trigger (match-domain *url*)
+ :blocklist '(:or
+ (:path (:or (:starts "/about") (:ends "/work")))
+ (:host (:or (:starts "nyxt") (:contains "atlas"))))))
(defparameter *blocker-with-regexp-blocklist*
(make-instance 'router:blocker
- :trigger (nyxt:match-domain *url*)
- :blocklist "(^/nyxt)|work"))
+ :trigger (match-domain *url*)
+ :blocklist "/(^nyxt)|work"))
(define-test redirector-with-list-rule ()
(assert-equality #'quri:uri=
(quri:uri "https://atlas.engineer/")
(nx-router::compute-route *redirector-with-list-rule* (quri:uri *url*)))
(assert-equality #'quri:uri=
- (quri:uri"https://atlas.engineer/articles")
+ (quri:uri "https://atlas.engineer/")
(nx-router::compute-route *redirector-with-list-rule*
- (quri:make-uri :defaults *url* :path "/articles")))
+ (quri:make-uri :defaults *url* :path "/")))
(assert-equality #'quri:uri=
- (quri:uri "https://atlas.engineer/about")
+ (quri:uri "https://atlas.engineer/about/example")
(nx-router::compute-route *redirector-with-list-rule*
(quri:make-uri :defaults *url* :path "/example")))
(assert-equality #'quri:uri=
- (quri:uri "https://atlas.engineer/contact/1234")
+ (quri:uri "https://atlas.engineer/community/1234")
(nx-router::compute-route *redirector-with-list-rule*
(quri:make-uri :defaults *url* :path "/c/1234")))
(assert-equality #'quri:uri=
- (quri:uri "http://atlas.engineer/v/1234")
+ (quri:uri "https://atlas.engineer/v/1234")
(nx-router::compute-route *redirector-with-list-rule*
(quri:make-uri :defaults *url* :path "/v/1234"))))
+(define-test redirector-with-nonstandard-port-and-schema ()
+ (assert-equality #'quri:uri=
+ (quri:uri "http://atlas.engineer:8080/articles")
+ (nx-router::compute-route *redirector-with-nonstandard-port-and-scheme*
+ (quri:make-uri :defaults *url* :path "/articles"))))
+
+(define-test redirector-with-regexp-trigger ()
+ (assert-equality #'quri:uri=
+ (quri:uri "https://atlas.engineer/nyxt/contact")
+ (nx-router::compute-route *redirector-with-regexp-trigger*
+ (quri:make-uri :defaults *url*
+ :host "nyxt.atlas.engineer"
+ :path "/contact"))))
+
(define-test redirector-with-regexp-rule ()
(assert-equality #'quri:uri=
- (quri:uri "https://atlas.engineer/nyxt")
+ (quri:uri "https://atlas.engineer/nyxt/contact")
(nx-router::compute-route *redirector-with-regexp-rule*
(quri:make-uri :defaults *url*
:host "nyxt.atlas.engineer"
:path "/contact"))))
(define-test blocker-with-list-rule ()
+ (assert-false (nx-router::compute-route *blocker-with-list-blocklist*
+ (quri:make-uri :defaults *url*
+ :path "/about/work")))
+ (assert-false (nx-router::compute-route *blocker-with-list-blocklist*
+ (quri:make-uri :defaults *url*
+ :host "nyxt.atlas.engineer")))
(assert-true (nx-router::compute-route *blocker-with-list-blocklist*
(quri:make-uri :defaults *url*
- :path "/work")))
- (assert-true (nx-router::compute-route *blocker-with-list-blocklist*
- (quri:make-uri :defaults *url*
- :path "/nyxt")))
- (assert-false (nx-router::compute-route *blocker-with-list-blocklist*
+ :host "nyxt.atlas.engineer"
+ :path "/about/work"))))
+
+(define-test blocker-with-list-rule-or-rules ()
+ (assert-true (nx-router::compute-route *blocker-with-list-blocklist-or-rules*
(quri:make-uri :defaults *url*
- :path "/contact"))))
+ :path "/about/work")))
+ (assert-true (nx-router::compute-route *blocker-with-list-blocklist-or-rules*
+ (quri:make-uri :defaults *url*
+ :host "nyxt.atlas.engineer")))
+ (assert-true (nx-router::compute-route *blocker-with-list-blocklist-or-rules*
+ (quri:make-uri :defaults *url*
+ :host "nyxt.atlas.engineer"
+ :path "/about/work")))
+ (assert-false (nx-router::compute-route *blocker-with-list-blocklist-or-rules*
+ (quri:make-uri :defaults *url*))))
(define-test blocker-with-regexp-rule ()
(assert-true (nx-router::compute-route *blocker-with-regexp-blocklist*
(quri:make-uri :defaults *url*
:path "/work")))
- (assert-true (nx-router::compute-route *blocker-with-regexp-blocklist*
+ (assert-false (nx-router::compute-route *blocker-with-regexp-blocklist*
(quri:make-uri :defaults *url*
:path "/nyxt")))
(assert-false (nx-router::compute-route *blocker-with-regexp-blocklist*