#!/bin/sh

find_file() {
	cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
	find $1 -type f |
	sed -e 1q
}

config() {
	git --git-dir="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" config $1 $2
}

test_expect_success 'setup repository' '
	echo content >file &&
	git add file &&
	git commit -m one &&

	mkdir "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
	(cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
	 git --bare init &&
	 : >objects/info/alternates &&
	 : >objects/info/http-alternates
	) &&
	git remote add public "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
	git push public master:master &&

	(cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
	 git repack -a -d
	) &&

	echo other >file &&
	git add file &&
	git commit -m two &&
	git push public master:master &&

	LOOSE_URL=$(find_file objects/??) &&
	PACK_URL=$(find_file objects/pack/*.pack) &&
	IDX_URL=$(find_file objects/pack/*.idx)
'

get_static_files() {
	GET HEAD "$1" &&
	GET info/refs "$1" &&
	GET objects/info/packs "$1" &&
	GET objects/info/alternates "$1" &&
	GET objects/info/http-alternates "$1" &&
	GET $LOOSE_URL "$1" &&
	GET $PACK_URL "$1" &&
	GET $IDX_URL "$1"
}

SMART=smart
GIT_HTTP_EXPORT_ALL=1 && export GIT_HTTP_EXPORT_ALL
test_expect_success 'direct refs/heads/master not found' '
	GET refs/heads/master "404 Not Found"
'
test_expect_success 'static file is ok' '
	get_static_files "200 OK"
'
SMART=smart_noexport
unset GIT_HTTP_EXPORT_ALL
test_expect_success 'no export by default' '
	get_static_files "404 Not Found"
'
test_expect_success 'export if git-daemon-export-ok' '
        (cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
	 touch git-daemon-export-ok
	) &&
        get_static_files "200 OK"
'
SMART=smart
GIT_HTTP_EXPORT_ALL=1 && export GIT_HTTP_EXPORT_ALL
test_expect_success 'static file if http.getanyfile true is ok' '
	config http.getanyfile true &&
	get_static_files "200 OK"
'
test_expect_success 'static file if http.getanyfile false fails' '
	config http.getanyfile false &&
	get_static_files "403 Forbidden"
'

test_expect_success 'http.uploadpack default enabled' '
	GET info/refs?service=git-upload-pack "200 OK"  &&
	POST git-upload-pack 0000 "200 OK"
'
test_expect_success 'http.uploadpack true' '
	config http.uploadpack true &&
	GET info/refs?service=git-upload-pack "200 OK" &&
	POST git-upload-pack 0000 "200 OK"
'
test_expect_success 'http.uploadpack false' '
	config http.uploadpack false &&
	GET info/refs?service=git-upload-pack "403 Forbidden" &&
	POST git-upload-pack 0000 "403 Forbidden"
'

test_expect_success 'http.receivepack default disabled' '
	GET info/refs?service=git-receive-pack "403 Forbidden"  &&
	POST git-receive-pack 0000 "403 Forbidden"
'
test_expect_success 'http.receivepack true' '
	config http.receivepack true &&
	GET info/refs?service=git-receive-pack "200 OK" &&
	POST git-receive-pack 0000 "200 OK"
'
test_expect_success 'http.receivepack false' '
	config http.receivepack false &&
	GET info/refs?service=git-receive-pack "403 Forbidden" &&
	POST git-receive-pack 0000 "403 Forbidden"
'
