# Extract values with fallbacks using `jq` and shell fallbacks USER_POOL_ID := `jq -r '.RustyLocksStack.userPoolId // "NOT_DEPLOYED"' outputs.json 2>/dev/null || echo "NOT_DEPLOYED"` CLIENT_ID := `jq -r '.RustyLocksStack.userPoolClientId // "NOT_DEPLOYED"' outputs.json 2>/dev/null || echo "NOT_DEPLOYED"` API_URL := `jq -r '.RustyLocksStack.apiUrl // "NOT_DEPLOYED"' outputs.json 2>/dev/null || echo "NOT_DEPLOYED"` DISTRIBUTION_ID := `jq -r '.RustyLocksStack.distributionId // "NOT_DEPLOYED"' outputs.json 2>/dev/null || echo "NOT_DEPLOYED"` # User credentials EMAIL := "test@jugokozmos.net" PASSWORD := "TestPass123!#" # Deploy and save outputs deploy: @echo "⏳Deploying the CDK stack..." npx cdk deploy --outputs-file outputs.json # Generate the config file for JavaScript generate-config: #!/usr/bin/env bash set -euo pipefail if [ "{{USER_POOL_ID}}" = "NOT_DEPLOYED" ]; then echo "❌ Stack not deployed. Run 'just deploy' first." exit 1 fi echo "⏳Generating config.js" cat > dist/config.js << EOF const CONFIG = { region: 'us-west-2', userPoolId: '{{USER_POOL_ID}}', clientId: '{{CLIENT_ID}}', }; EOF echo "✅ Generated dist/config.js" # Deploy with config.js deploy-with-config: deploy generate-config npx cdk deploy @echo "✅ Deployed with fresh config.js" # Invalidate CDN Cache invalidate-cache: @echo "⏳Clearing the CDN Cache..." aws cloudfront create-invalidation --distribution-id {{DISTRIBUTION_ID}} --paths "/*" # Create the test user create-user: #!/usr/bin/env bash set -euo pipefail echo "⏳Creating test user" if [ "{{USER_POOL_ID}}" = "NOT_DEPLOYED" ]; then echo "❌ Stack not deployed. Run 'just deploy' first." exit 1 fi aws cognito-idp admin-create-user \ --user-pool-id {{USER_POOL_ID}} \ --username {{EMAIL}} \ --user-attributes Name=email,Value={{EMAIL}} Name=email_verified,Value=true \ --temporary-password TempPass123! \ --message-action SUPPRESS echo "✅ Test user created." # Set a permanent password to the test user set-password: #!/usr/bin/env bash set -euo pipefail echo "⏳Setting password" if [ "{{USER_POOL_ID}}" = "NOT_DEPLOYED" ]; then echo "❌ Stack not deployed. Run 'just deploy' first." exit 1 fi aws cognito-idp admin-set-user-password \ --user-pool-id {{USER_POOL_ID}} \ --username {{EMAIL}} \ --password {{PASSWORD}} \ --permanent echo "✅ Test user password set." # Delete the test user delete-user: #!/usr/bin/env bash set -euo pipefail echo "⏳Deleting test user" if [ "{{USER_POOL_ID}}" = "NOT_DEPLOYED" ]; then echo "❌ Stack not deployed. Run 'just deploy' first." exit 1 fi aws cognito-idp admin-delete-user \ --user-pool-id {{USER_POOL_ID}} \ --username {{EMAIL}} echo "✅ Test user deleted." # Generate JWT token (with check) get-token: #!/usr/bin/env bash set -euo pipefail echo "⏳Getting Token" if [ "{{USER_POOL_ID}}" = "NOT_DEPLOYED" ]; then echo "❌ Stack not deployed. Run 'just deploy' first." exit 1 fi aws cognito-idp admin-initiate-auth \ --user-pool-id {{USER_POOL_ID}} \ --client-id {{CLIENT_ID}} \ --auth-flow ADMIN_NO_SRP_AUTH \ --auth-parameters USERNAME={{EMAIL}},PASSWORD={{PASSWORD}} \ --query 'AuthenticationResult.IdToken' \ --output text > .token echo "✅ Token aquired." # Run the auth prep steps auth-prep: create-user set-password get-token @echo "⏳Preparing auth for test" @echo "✅ Auth ready. Run your tests." # Test GET /locks (with check) test-get: #!/usr/bin/env bash set -euo pipefail if [ "{{API_URL}}" = "NOT_DEPLOYED" ]; then echo "❌ Stack not deployed. Run 'just deploy' first." exit 1 fi http GET {{API_URL}}/api/locks Authorization:"Bearer $(cat .token)" # Clean up clean: rm -rf ".token" && rm -rf "outputs.json" bye: clean cdk destroy --force