90 lines
2.1 KiB
Bash
Executable File
90 lines
2.1 KiB
Bash
Executable File
#!/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
|