(ns dda.build.c4k.domain-test (:require [clojure.test :refer [deftest is]] [clojure.spec.test.alpha :as st] [dda.build.c4k.domain :as cut])) (st/instrument `cut/config-path) (st/instrument `cut/auth-path) (st/instrument `cut/output-path) (st/instrument `cut/clean-build-dir-command) (st/instrument `cut/c4k-uberjar-command) (st/instrument `cut/c4k-graalvm-command) (st/instrument `cut/create-c4k-config) (deftest should-calculate-config-path (is (= "../../target/dda-backup/config.yaml" (cut/config-path {:name "dda-backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"}))) (is (= "../../target/dda/backup/config.yaml" (cut/config-path {:name "dda" :module "backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"})))) (deftest should-calculate-auth-path (is (= "../../target/dda-backup/auth.yaml" (cut/auth-path {:name "dda-backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"}))) (is (= "../../target/dda/backup/auth.yaml" (cut/auth-path {:name "dda" :module "backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"})))) (deftest should-calculate-output-path (is (= "../../target/dda-backup/out.yaml" (cut/output-path {:name "dda-backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"}))) (is (= "../../target/dda/backup/out.yaml" (cut/output-path {:name "dda" :module "backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"})))) (deftest should-calculate-clean-build-dir-command (is (= ["rm" "-rf" "../../target/dda-backup"] (cut/clean-build-dir-command {:name "dda-backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"})))) (deftest should-calculate-c4k-uberjar-command (is (= [["bash" "-c" "c4k-backup-standalone.jar ../../target/dda-backup/backup/config.yaml ../../target/dda-backup/backup/auth.yaml > ../../target/dda-backup/backup/out.yaml"]] (cut/c4k-uberjar-command {:name "dda-backup" :module "backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"})))) (deftest should-calculate-c4k-graalvm-command (is (= [["bash" "-c" "c4k-backup ../../target/dda-backup/backup/config.yaml ../../target/dda-backup/backup/auth.yaml > ../../target/dda-backup/backup/out.yaml"]] (cut/c4k-graalvm-command {:name "dda-backup" :module "backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"})))) (deftest should-create-c4k-config (is (= {:fqdn "cloud.test.meissa.de", :issue "staging", :restic-repository "restic-repo", :pv-storage-size-gb 40, :pvc-storage-class-name "hcloud-volumes-encrypted"} (cut/create-c4k-config {:issue "staging" :restic-repository "restic-repo" :pv-storage-size-gb 40 :pvc-storage-class-name "hcloud-volumes-encrypted"} {:name "dda" :module "backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"} {:out {:sensitive false, :type [], :value {:fqdn "cloud.test.meissa.de", :ipv4 "91.107.220.172", :ipv6 "2a01:4f8:c17:86c6::1"}}}))) (is (= {:fqdn "cloud.test.meissa.de", :issue "staging", :restic-repository "restic-repo", :pv-storage-size-gb 40, :pvc-storage-class-name "hcloud-volumes-encrypted" :mon-cfg {:grafana-cloud-url "https://prometheus-endpoint", :cluster-name "dda-backup", :cluster-stage "dev"}} (cut/create-c4k-config {:issue "staging" :restic-repository "restic-repo" :pv-storage-size-gb 40 :pvc-storage-class-name "hcloud-volumes-encrypted"} {:name "dda" :module "backup" :project-root-path "../.." :build-dir-name "target" :version "4.11.8-dev" :stage "dev" :debug false :dry-run false :grafana-cloud-url "https://prometheus-endpoint" :c4k-app-name "backup" :c4k-config-input "config.yaml" :c4k-auth-input "auth.yaml" :c4k-output "out.yaml"} {:out {:sensitive false, :type [], :value {:fqdn "cloud.test.meissa.de", :ipv4 "91.107.220.172", :ipv6 "2a01:4f8:c17:86c6::1"}}}))))