60 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
test_description='external credential helper tests
 | 
						|
 | 
						|
This is a tool for authors of external helper tools to sanity-check
 | 
						|
their helpers. If you have written the "git-credential-foo" helper,
 | 
						|
you check it with:
 | 
						|
 | 
						|
  make GIT_TEST_CREDENTIAL_HELPER=foo t0303-credential-external.sh
 | 
						|
 | 
						|
This assumes that your helper is capable of both storing and
 | 
						|
retrieving credentials (some helpers may be read-only, and they will
 | 
						|
fail these tests).
 | 
						|
 | 
						|
Please note that the individual tests do not verify all of the
 | 
						|
preconditions themselves, but rather build on each other. A failing
 | 
						|
test means that tests later in the sequence can return false "OK"
 | 
						|
results.
 | 
						|
 | 
						|
If your helper supports time-based expiration with a configurable
 | 
						|
timeout, you can test that feature with:
 | 
						|
 | 
						|
  make GIT_TEST_CREDENTIAL_HELPER=foo \
 | 
						|
       GIT_TEST_CREDENTIAL_HELPER_TIMEOUT="foo --timeout=1" \
 | 
						|
       t0303-credential-external.sh
 | 
						|
 | 
						|
If your helper requires additional setup before the tests are started,
 | 
						|
you can set GIT_TEST_CREDENTIAL_HELPER_SETUP to a sequence of shell
 | 
						|
commands.
 | 
						|
'
 | 
						|
 | 
						|
. ./test-lib.sh
 | 
						|
. "$TEST_DIRECTORY"/lib-credential.sh
 | 
						|
 | 
						|
if test -z "$GIT_TEST_CREDENTIAL_HELPER"; then
 | 
						|
	skip_all="used to test external credential helpers"
 | 
						|
	test_done
 | 
						|
fi
 | 
						|
 | 
						|
test -z "$GIT_TEST_CREDENTIAL_HELPER_SETUP" ||
 | 
						|
	eval "$GIT_TEST_CREDENTIAL_HELPER_SETUP"
 | 
						|
 | 
						|
# clean before the test in case there is cruft left
 | 
						|
# over from a previous run that would impact results
 | 
						|
helper_test_clean "$GIT_TEST_CREDENTIAL_HELPER"
 | 
						|
 | 
						|
helper_test "$GIT_TEST_CREDENTIAL_HELPER"
 | 
						|
 | 
						|
if test -z "$GIT_TEST_CREDENTIAL_HELPER_TIMEOUT"; then
 | 
						|
	say "# skipping timeout tests (GIT_TEST_CREDENTIAL_HELPER_TIMEOUT not set)"
 | 
						|
else
 | 
						|
	helper_test_timeout "$GIT_TEST_CREDENTIAL_HELPER_TIMEOUT"
 | 
						|
fi
 | 
						|
 | 
						|
# clean afterwards so that we are good citizens
 | 
						|
# and don't leave cruft in the helper's storage, which
 | 
						|
# might be long-term system storage
 | 
						|
helper_test_clean "$GIT_TEST_CREDENTIAL_HELPER"
 | 
						|
 | 
						|
test_done
 |