From dc8c359bfca2454b85ce974174160c84c2577f17 Mon Sep 17 00:00:00 2001 From: sjdonado Date: Wed, 27 Nov 2024 22:49:53 +0100 Subject: [PATCH] test: admin env variables cases --- app/services/cli.cr | 4 ++-- spec/services/cli_spec.cr | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/app/services/cli.cr b/app/services/cli.cr index 0a72e69..c45858d 100644 --- a/app/services/cli.cr +++ b/app/services/cli.cr @@ -37,8 +37,8 @@ module App::Services::Cli end def self.setup_admin_user - admin_name = ENV["ADMIN_NAME"] - admin_api_key = ENV["ADMIN_API_KEY"] + admin_name = ENV["ADMIN_NAME"]? + admin_api_key = ENV["ADMIN_API_KEY"]? if admin_name && admin_api_key # Query to check if admin user already exists diff --git a/spec/services/cli_spec.cr b/spec/services/cli_spec.cr index 26e0ffd..fe45b35 100644 --- a/spec/services/cli_spec.cr +++ b/spec/services/cli_spec.cr @@ -34,4 +34,29 @@ describe "App::Services::Cli" do output.should contain "Failed to delete user" end + + it "sets up an admin user if environment variables are present" do + ENV["ADMIN_NAME"] = "adminuser" + ENV["ADMIN_API_KEY"] = "secure_admin_key" + + App::Services::Cli.setup_admin_user + + admin_user = App::Lib::Database.all(App::Models::User).find { |u| u.name == "adminuser" } + admin_user.should_not be_nil + admin_user = admin_user.not_nil! + + admin_user.api_key.should eq "secure_admin_key" + + App::Services::Cli.delete_user(admin_user.id) + end + + it "skips admin setup if environment variables are missing" do + ENV.delete("ADMIN_NAME") + ENV.delete("ADMIN_API_KEY") + + App::Services::Cli.setup_admin_user + + users = App::Lib::Database.all(App::Models::User) + users.none? { |u| u.name == "adminuser" }.should be_true + end end