#!/bin/bash # Test: Linux user creation and Docker group membership # Phase: GREEN - Tests pass after tutorial completion set -euo pipefail # Helper function for incrementing counters that works with set -e inc_pass() { ((pass_count++)) || true; } inc_fail() { ((fail_count++)) || true; } # Color output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color pass_count=0 fail_count=0 test_user_exists() { local user="lab01_student" if id "$user" &>/dev/null; then echo -e "${GREEN}PASS${NC}: User $user exists" inc_pass return 0 fi echo -e "${RED}FAIL${NC}: User $user does not exist" inc_fail return 1 } test_user_with_docker_group() { local user="lab01_student" # If user doesn't exist, fail this test if ! id "$user" &>/dev/null; then echo -e "${RED}FAIL${NC}: User $user does not exist" inc_fail return 1 fi # Check if user is in docker group if groups "$user" 2>/dev/null | grep -q docker; then echo -e "${GREEN}PASS${NC}: User $user is in docker group" inc_pass return 0 fi echo -e "${RED}FAIL${NC}: User $user is not in docker group" inc_fail return 1 } test_docker_access_granted() { local user="lab01_student" # If user doesn't exist, fail this test if ! id "$user" &>/dev/null; then echo -e "${RED}FAIL${NC}: Test user does not exist" inc_fail return 1 fi # Test that user can access docker socket if sudo -u "$user" docker ps &>/dev/null; then echo -e "${GREEN}PASS${NC}: Docker access granted for $user" inc_pass return 0 fi echo -e "${RED}FAIL${NC}: Docker access denied for $user" inc_fail return 1 } # Run all tests echo "Running user creation tests..." echo "================================" test_user_exists test_user_with_docker_group test_docker_access_granted echo "================================" echo "Tests passed: $pass_count" echo "Tests failed: $fail_count" if [ $fail_count -gt 0 ]; then exit 1 fi exit 0