#!/bin/sh

set -eu

if [ -n "${http_proxy-}" ]; then
    echo "Test is not compatible with pre-existing proxy config"
    exit 77
fi

export http_proxy=http://localhost:3563/

CURL="curl --silent --head --output /dev/null --write-out %{http_code}"
count=0
failure=0

assert_ok() {
    code=$($CURL "$1")
    if [ "$code" != 200 ]; then
        echo "ASSERT FAILURE for '$*', assumed 200, got $code"
        failure=$((failure + 1))
    fi
    count=$((count + 1))
}

assert_forbidden() {
    code=$($CURL "$1")
    if [ "$code" != 403 ]; then
        echo "ASSERT FAILURE for '$*', assumed 403, got $code"
        failure=$((failure + 1))
    fi
    count=$((count + 1))
}

echo "Starting tests for $http_proxy"

if dpkg-vendor --is debian; then
    assert_ok "http://deb.debian.org/debian/"
    assert_ok "http://ftp.de.debian.org/debian/"
    assert_forbidden "http://ftp.de.debian.org:21"
    assert_forbidden "http://github.com"
elif dpkg-vendor --is ubuntu; then
    assert_ok "http://archive.ubuntu.com"
    assert_ok "http://de.archive.ubuntu.com/ubuntu/"
    assert_ok "http://changelogs.ubuntu.com/meta-release"
    assert_forbidden "http://wiki.ubuntu.com"
    assert_forbidden "http://www.ubuntu.com"
    assert_forbidden "http://archive.ubuntu.com:21"
    assert_forbidden "http://github.com"
else
    vendor=$(dpkg-query --query vendor)
    echo "Test does not cover distribution vendor: $vendor"
    exit 77
fi

echo "Test finished, tests failed: $failure, tests run: $count"

if [ "$failure" -ne 0 ]; then
    exit 1
fi
