(ns dda.c4k-website.website-test (:require #?(:clj [clojure.test :refer [deftest is are testing run-tests]] :cljs [cljs.test :refer-macros [deftest is are testing run-tests]]) [clojure.spec.test.alpha :as st] [dda.c4k-common.test-helper :as th] [dda.c4k-common.base64 :as b64] [dda.c4k-website.website :as cut])) (st/instrument `cut/generate-certificate) (st/instrument `cut/generate-ingress) (st/instrument `cut/generate-nginx-configmap) (st/instrument `cut/generate-website-content-volume) (deftest should-generate-certificate (is (= {:name-c2 "prod", :name-c1 "staging"} (th/map-diff (cut/generate-certificate {:fqdn "test.de"}) (cut/generate-certificate {:issuer "prod" :fqdn "test.de"}))))) (deftest should-generate-ingress (is (= {:hosts-c1 "test.de", :hosts-c2 "test.com", :host-c1 "test.de", :host-c2 "test.com"} (th/map-diff (cut/generate-ingress {:fqdn "test.de" }) (cut/generate-ingress {:fqdn "test.com" }))))) (deftest should-generate-nginx-configmap (is (= {:website.conf-c1 "server {\n listen 80 default_server;\n listen [::]:80 default_server;\n listen 443 ssl;\n ssl_certificate /etc/certs/tls.crt;\n ssl_certificate_key /etc/certs/tls.key;\n server_name test.de;\n # security headers\n add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';\n add_header Content-Security-Policy \"default-src 'self'; font-src *;img-src * data:; script-src *; style-src *\";\n add_header X-XSS-Protection \"1; mode=block\";\n add_header X-Frame-Options \"SAMEORIGIN\";\n add_header X-Content-Type-Options nosniff;\n add_header Referrer-Policy \"strict-origin\";\n # maybe need to add:\n # add_header Permissions-Policy \"permissions here\";\n root /var/www/html/website/;\n # root /usr/share/nginx/html/; # testing purposes\n index index.html;\n try_files $uri /index.html;\n}", :website.conf-c2 "server {\n listen 80 default_server;\n listen [::]:80 default_server;\n listen 443 ssl;\n ssl_certificate /etc/certs/tls.crt;\n ssl_certificate_key /etc/certs/tls.key;\n server_name test.com;\n # security headers\n add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';\n add_header Content-Security-Policy \"default-src 'self'; font-src *;img-src * data:; script-src *; style-src *\";\n add_header X-XSS-Protection \"1; mode=block\";\n add_header X-Frame-Options \"SAMEORIGIN\";\n add_header X-Content-Type-Options nosniff;\n add_header Referrer-Policy \"strict-origin\";\n # maybe need to add:\n # add_header Permissions-Policy \"permissions here\";\n root /var/www/html/website/;\n # root /usr/share/nginx/html/; # testing purposes\n index index.html;\n try_files $uri /index.html;\n}"} (th/map-diff (cut/generate-nginx-configmap {:fqdn "test.de" }) (cut/generate-nginx-configmap {:fqdn "test.com" }))))) (deftest should-generate-website-content-volume (is (= {:storage-c1 "2Gi", :storage-c2 "10Gi"} (th/map-diff (cut/generate-website-content-volume {:volume-total-storage-size 10 :number-of-websites 5}) (cut/generate-website-content-volume {:volume-total-storage-size 50 :number-of-websites 5})))))