Added basic orchestration script, apply defaults before checking for missing fields

master
Brady McDonough 2 years ago
parent 35221b979e
commit 8f49c8815d

5
.gitignore vendored

@ -2,4 +2,7 @@
\#*\#
.\#*
.projectile
TAGS
TAGS
composer.lock
vendor/

@ -0,0 +1,47 @@
#!/bin/bash
function tidy {
rm -vf {./,tests/,src/{./,AntiCSRF/,Clock/,Hash/,Request/,Required/,RFC/,Session/,URI/,Workflow/}}*~
rm -vf {./,tests/,src/{./,AntiCSRF/,Clock/,Hash/,Request/,Required/,RFC/,Session/,URI/,Workflow/}}#*#
}
function clean {
if [[ ! -d "vendor/" ]]; then
echo "No vendor/ folder to remove."
else
echo "Removing ./vendor/ ..."
rm -rf "vendor/"
echo "Done"
fi
rm -fv "composer.lock"
}
function update {
composer update
composer dumpautoload -v
}
if [[ $# -ne 1 ]]; then
echo "This script requires a verb."
echo "VERBS:"
echo " update - Update dependencies with composer"
echo " test - If no vendor/ folder Update, then run phpunit tests."
echo " clean - Remove all buildfiles and editor artifacts."
echo " tidy - Remove all editor artifacts."
fi
cmd=$1
if [[ $cmd == "update" ]]; then
update
elif [[ $cmd == "test" ]]; then
if [[ ! -d "vendor/" ]]; then
update
fi
./vendor/bin/phpunit --testdox tests
elif [[ $cmd == "tidy" ]]; then
tidy
elif [[ $cmd == "clean" ]]; then
tidy && clean
else
echo "Unrecognized verb: ${cmd}"
fi

@ -55,11 +55,6 @@ class Otpauth
{ return \array_key_exists('secret', $que);},
$parsedUri['query'] . "has no secret key."],
];
$parsedQuery = [];
\parse_str($parsedUri['query'], $parsedQuery);
$runCheck($queryChecks, $parsedQuery);
$labelChecks = [
[ function($lab)
{ return \count($lab) === 2;},
@ -69,6 +64,9 @@ class Otpauth
$label = \explode(":", $parsedUri['path']);
$runCheck($labelChecks, $label);
$parsedQuery = [];
\parse_str($parsedUri['query'], $parsedQuery);
$queryDefaults = [
"algorithm" => "SHA1",
"period" => "30",
@ -76,6 +74,7 @@ class Otpauth
"issuer" => \rawurldecode(\ltrim($label[0], "/")),
];
$parsedQuery = \array_merge($queryDefaults, $parsedQuery);
$runCheck($queryChecks, $parsedQuery);
$convertFields = function(array $conversion, array &$target) {
foreach ($conversion as $k => $v)

@ -7,7 +7,7 @@ use BradyMcD\TAATP\URI\Otpauth;
/** @SuppressWarnings(PHPMD.StaticAccess)*/
final class URITest extends TestCase
{
public function testExampleURI(): void
public function testPreservesAllUriFields(): void
{
// Sourced from Google's otpauth URI specification
// https://github.com/google/google-authenticator/wiki/Key-Uri-Format
@ -48,9 +48,9 @@ final class URITest extends TestCase
$this->assertEqualsCanonicalizing($parsedOtpQuery, $parsedTestQuery);
}
public function testIncompleteURI(): void
public function testCanFallbackToDefaults(): void
{
$string = 'otpauth://totp/Example:john.doe@email.com?secret=HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ&issuer=Example';
$string = 'otpauth://totp/Example:john.doe@email.com?secret=HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ';
$queryComponents = [ "secret" => "HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ",
"issuer" => "Example",
"algorithm" => "SHA1",
@ -65,6 +65,7 @@ final class URITest extends TestCase
$this->assertSame($provisioningUri->algorithm, $queryComponents['algorithm']);
$this->assertSame($provisioningUri->digits, $queryComponents['digits']);
$this->assertSame($provisioningUri->period, $queryComponents['period']);
$this->assertSame($provisioningUri->issuer, $queryComponents['issuer']);
}
}

Loading…
Cancel
Save