(ns dda.backup.postgresql.domain-test (:require [clojure.test :refer [deftest is are testing run-tests]] [clojure.spec.test.alpha :as st] [dda.backup.postgresql.domain :as cut])) (st/instrument `cut/pgpass) (st/instrument `cut/db-drop-create-command) (st/instrument `cut/backup-role-command) (deftest should-calculate-pgpass (is (= "localhost:mydb:user:password" (cut/pgpass {:restic-repository "repo" :backup-path "dir-at-repo" :pg-host "localhost" :pg-port 5432 :pg-db "mydb" :pg-user "user" :pg-password "password"})))) (deftest should-calculate-db-drop-create-command (is (= [["psql" "-d" "template1" "-h" "localhost" "-p" "5432" "-U" "user" "--no-password" "-c" "\"DROP DATABASE \\\"mydb\\\";\""] ["psql" "-d" "template1" "-h" "localhost" "-p" "5432" "-U" "user" "--no-password" "-c" "\"CREATE DATABASE \\\"mydb\\\";\""]] (cut/db-drop-create-command {:restic-repository "repo" :backup-path "dir-at-repo" :pg-host "localhost" :pg-port 5432 :pg-db "mydb" :pg-user "user" :pg-password "password"})))) (deftest should-calculate-backup-role-command (is (= [["bash" "-c" "pg_dumpall -h localhost -p 5432 -U user --no-password --roles-only | grep prefix | restic -r repo/dir-at-repo -v backup --stdin"]] (cut/backup-role-command {:restic-repository "repo" :backup-path "dir-at-repo" :days-to-keep 39 :months-to-keep 3 :pg-host "localhost" :pg-port 5432 :pg-db "mydb" :pg-role-prefix "prefix" :pg-user "user" :pg-password "password"}))))