diff --git a/packages/services/auth-service/src/domain/entities/tenant.entity.ts b/packages/services/auth-service/src/domain/entities/tenant.entity.ts index 9c32096..06cdc3a 100644 --- a/packages/services/auth-service/src/domain/entities/tenant.entity.ts +++ b/packages/services/auth-service/src/domain/entities/tenant.entity.ts @@ -17,8 +17,8 @@ export class Tenant { @Column({ type: 'varchar', length: 20, default: 'active' }) status!: 'active' | 'suspended'; - @Column({ type: 'varchar', length: 255 }) - adminEmail!: string; + @Column({ type: 'varchar', length: 255, nullable: true }) + adminEmail?: string; @Column({ type: 'int', default: 10 }) maxServers!: number; diff --git a/scripts/api-test.sh b/scripts/api-test.sh index a94cd32..d13c45d 100644 --- a/scripts/api-test.sh +++ b/scripts/api-test.sh @@ -54,7 +54,7 @@ section "2. Auth — Register (Email)" RESP=$(post_json "${BASE}/api/v1/auth/register" \ -d "{\"email\":\"${TEST_EMAIL}\",\"password\":\"${TEST_PASS}\",\"name\":\"Test User\",\"companyName\":\"${TEST_COMPANY}\"}") -STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) +STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') BODY=$(echo "$RESP" | sed 's/__STATUS__[0-9]*//') if [[ "$STATUS" == "201" || "$STATUS" == "200" ]]; then @@ -73,7 +73,7 @@ section "3. Auth — Register (Phone)" PHONE_COMPANY="PhoneCo${TS}" RESP=$(post_json "${BASE}/api/v1/auth/register" \ -d "{\"phone\":\"${TEST_PHONE}\",\"password\":\"${TEST_PASS}\",\"name\":\"Phone User\",\"companyName\":\"${PHONE_COMPANY}\"}") -STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) +STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') BODY=$(echo "$RESP" | sed 's/__STATUS__[0-9]*//') if [[ "$STATUS" == "201" || "$STATUS" == "200" ]]; then @@ -87,7 +87,7 @@ section "4. Auth — Duplicate registration should fail" RESP=$(post_json "${BASE}/api/v1/auth/register" \ -d "{\"email\":\"${TEST_EMAIL}\",\"password\":\"${TEST_PASS}\",\"name\":\"Dup\",\"companyName\":\"Dup${TS}\"}") -STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) +STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') [[ "$STATUS" == "409" ]] && ok "Duplicate email → 409 Conflict" || fail "Duplicate email → expected 409, got ${STATUS}" # ══════════════════════════════════════════════════════════════════════════════ @@ -95,7 +95,7 @@ section "5. Auth — Login (email)" RESP=$(post_json "${BASE}/api/v1/auth/login" \ -d "{\"email\":\"${TEST_EMAIL}\",\"password\":\"${TEST_PASS}\"}") -STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) +STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') BODY=$(echo "$RESP" | sed 's/__STATUS__[0-9]*//') if [[ "$STATUS" == "200" || "$STATUS" == "201" ]]; then @@ -111,7 +111,7 @@ section "6. Auth — Login (phone)" RESP=$(post_json "${BASE}/api/v1/auth/login" \ -d "{\"phone\":\"${TEST_PHONE}\",\"password\":\"${TEST_PASS}\"}") -STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) +STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') [[ "$STATUS" == "200" || "$STATUS" == "201" ]] && ok "POST /api/v1/auth/login (phone) → ${STATUS}" \ || fail "POST /api/v1/auth/login (phone) → ${STATUS}" @@ -120,7 +120,7 @@ section "7. Auth — Login (identifier field)" RESP=$(post_json "${BASE}/api/v1/auth/login" \ -d "{\"identifier\":\"${TEST_EMAIL}\",\"password\":\"${TEST_PASS}\"}") -STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) +STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') [[ "$STATUS" == "200" || "$STATUS" == "201" ]] && ok "POST /api/v1/auth/login (identifier) → ${STATUS}" \ || fail "POST /api/v1/auth/login (identifier) → ${STATUS}" @@ -129,7 +129,7 @@ section "8. Auth — Wrong password should be 401" RESP=$(post_json "${BASE}/api/v1/auth/login" \ -d "{\"email\":\"${TEST_EMAIL}\",\"password\":\"wrongpass\"}") -STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) +STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') [[ "$STATUS" == "401" ]] && ok "Wrong password → 401" || fail "Wrong password → expected 401, got ${STATUS}" # ══════════════════════════════════════════════════════════════════════════════ @@ -156,7 +156,7 @@ section "11. Auth — Refresh token" if [[ -n "$REFRESH_TOKEN" ]]; then RESP=$(post_json "${BASE}/api/v1/auth/refresh" \ -d "{\"refreshToken\":\"${REFRESH_TOKEN}\"}") - STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) + STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') [[ "$STATUS" == "200" || "$STATUS" == "201" ]] && ok "POST /api/v1/auth/refresh → ${STATUS}" \ || fail "POST /api/v1/auth/refresh → ${STATUS}" else @@ -168,7 +168,7 @@ section "12. Auth — Platform admin login (ops@it0.com)" RESP=$(post_json "${BASE}/api/v1/auth/login" \ -d '{"email":"ops@it0.com","password":"it0ops2024"}') -STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) +STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') BODY=$(echo "$RESP" | sed 's/__STATUS__[0-9]*//') if [[ "$STATUS" == "200" || "$STATUS" == "201" ]]; then @@ -288,7 +288,7 @@ if [[ -n "$TOKEN" ]]; then RESP=$(post_json "${BASE}/api/v1/auth/api-keys" \ -H "Authorization: Bearer ${TOKEN}" \ -d "{\"name\":\"test-key-${TS}\"}") - STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) + STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') [[ "$STATUS" == "200" || "$STATUS" == "201" ]] && ok "POST /api/v1/auth/api-keys → ${STATUS}" \ || fail "POST /api/v1/auth/api-keys → ${STATUS}" fi @@ -301,7 +301,7 @@ if [[ -n "$TOKEN" ]]; then RESP=$(post_json "${BASE}/api/v1/tenants/invites" \ -H "Authorization: Bearer ${TOKEN}" \ -d "{\"email\":\"${INVITE_EMAIL}\",\"role\":\"viewer\"}") - STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | cut -d_ -f3) + STATUS=$(echo "$RESP" | grep -o '__STATUS__[0-9]*' | sed 's/__STATUS__//') BODY=$(echo "$RESP" | sed 's/__STATUS__[0-9]*//') if [[ "$STATUS" == "200" || "$STATUS" == "201" ]]; then ok "POST /api/v1/tenants/invites → ${STATUS}"