a039e6637e
CI Feature / Load example-gitea-env.conf to pipeline env (push) Successful in 19s
acc-tests Cucumber test report
CI Feature / Cucumber tests (push) Failing after 2m11s
unit-tests Bats test report
CI Feature / Bats tests (push) Failing after 7m10s
CI Feature / Report Summary (push) Successful in 5s
106 lines
3.3 KiB
Bash
106 lines
3.3 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
setup() {
|
|
source tests/helpers/mock-api.sh
|
|
export GITEA_API_URL="http://localhost:18080"
|
|
export GITEA_TOKEN="test-token-abc123"
|
|
export GIT_PAGES_URL="https://reports.example.com"
|
|
export GITHUB_REPOSITORY="test-owner/test-repo"
|
|
export GITHUB_SHA="abc123def456789012345678901234567890abcd"
|
|
export GITHUB_RUN_ID="42"
|
|
}
|
|
|
|
teardown() {
|
|
mock_stop
|
|
}
|
|
|
|
@test "pending status is POSTed with correct payload" {
|
|
mock_start
|
|
run bash scripts/report-status.sh pending "Building project"
|
|
[ "$status" -eq 0 ]
|
|
path=$(mock_get_request_path)
|
|
[[ "$path" == "/api/v1/repos/test-owner/test-repo/statuses/abc123def456789012345678901234567890abcd" ]]
|
|
body=$(mock_get_request_body)
|
|
[[ "$body" == *'"state":"pending"'* ]]
|
|
[[ "$body" == *'"description":"Building project"'* ]]
|
|
expected_url="${GITEA_API_URL}/test-owner/test-repo/actions/runs/42"
|
|
[[ "$body" == *"\"target_url\":\"${expected_url}\""* ]]
|
|
method=$(mock_get_request_method)
|
|
[[ "$method" == "POST" ]]
|
|
}
|
|
|
|
@test "success status with custom key and suite builds report URL" {
|
|
mock_start
|
|
run bash scripts/report-status.sh success "Unit tests OK" unit-test cucumber
|
|
[ "$status" -eq 0 ]
|
|
body=$(mock_get_request_body)
|
|
[[ "$body" == *'"state":"success"'* ]]
|
|
[[ "$body" == *'"context":"unit-test"'* ]]
|
|
[[ "$body" == *'"target_url":"https://reports.example.com/test-owner/test-repo/reports/abc123de/cucumber/"'* ]]
|
|
}
|
|
|
|
@test "failure status constructs run URL when no suite" {
|
|
mock_start
|
|
run bash scripts/report-status.sh failure "Tests failed: 3 of 10"
|
|
[ "$status" -eq 0 ]
|
|
body=$(mock_get_request_body)
|
|
[[ "$body" == *'"state":"failure"'* ]]
|
|
expected_url="${GITEA_API_URL}/test-owner/test-repo/actions/runs/42"
|
|
[[ "$body" == *"\"target_url\":\"${expected_url}\""* ]]
|
|
}
|
|
|
|
@test "default key when not provided" {
|
|
mock_start
|
|
run bash scripts/report-status.sh pending "Build started"
|
|
[ "$status" -eq 0 ]
|
|
body=$(mock_get_request_body)
|
|
[[ "$body" == *'"context":"commit-abc123de"'* ]]
|
|
}
|
|
|
|
@test "API returns 500 causes exit 1" {
|
|
mock_set_response 500
|
|
mock_start
|
|
run bash scripts/report-status.sh success "Should fail"
|
|
[ "$status" -eq 1 ]
|
|
}
|
|
|
|
@test "cross-repo: ROOT_COMMIT and ROOT_REPO override target" {
|
|
export ROOT_COMMIT="rootabc123"
|
|
export ROOT_REPO="services/temperature-store"
|
|
mock_start
|
|
run bash scripts/report-status.sh success "Deployed to staging" deploy-staging
|
|
[ "$status" -eq 0 ]
|
|
path=$(mock_get_request_path)
|
|
[[ "$path" == "/api/v1/repos/services/temperature-store/statuses/rootabc123" ]]
|
|
body=$(mock_get_request_body)
|
|
[[ "$body" == *'"state":"success"'* ]]
|
|
[[ "$body" == *'"context":"deploy-staging"'* ]]
|
|
unset ROOT_COMMIT ROOT_REPO
|
|
}
|
|
|
|
@test "missing GITEA_API_URL causes exit 1 with error message" {
|
|
unset GITEA_API_URL
|
|
run bash scripts/report-status.sh pending "Test"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" == *"ERROR"* || "$output" == *"GITEA_API_URL"* ]]
|
|
}
|
|
|
|
@test "missing GITEA_TOKEN causes exit 1 with error message" {
|
|
unset GITEA_TOKEN
|
|
run bash scripts/report-status.sh pending "Test"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" == *"ERROR"* || "$output" == *"GITEA_TOKEN"* ]]
|
|
}
|
|
|
|
@test "missing required state argument causes exit 1" {
|
|
mock_start
|
|
run bash scripts/report-status.sh "" "desc"
|
|
[ "$status" -eq 1 ]
|
|
}
|
|
|
|
@test "missing required description argument causes exit 1" {
|
|
mock_start
|
|
run bash scripts/report-status.sh pending ""
|
|
[ "$status" -eq 1 ]
|
|
}
|