Move all tests into sub folders for a more clear structure
This commit is contained in:
162
4dev/tests/Get/CoreLibsGetDotEnvTest.php
Normal file
162
4dev/tests/Get/CoreLibsGetDotEnvTest.php
Normal file
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace tests;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use CoreLibs\Get\DotEnv;
|
||||
|
||||
/**
|
||||
* Test class for ACL\Login
|
||||
* @coversDefaultClass \CoreLibs\Get\DotEnv
|
||||
* @testdox \CoreLibs\Get\DotEnv method tests
|
||||
*/
|
||||
final class CoreLibsGetDotEnvTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function envFileProvider(): array
|
||||
{
|
||||
$dot_env_content = [
|
||||
'SOMETHING' => 'A',
|
||||
'OTHER' => 'B IS B',
|
||||
'Complex' => 'A B \"D is F',
|
||||
'HAS_SPACE' => 'ABC',
|
||||
'HAS_COMMENT_QUOTES_SPACE' => 'Comment at end with quotes and space',
|
||||
'HAS_COMMENT_QUOTES_NO_SPACE' => 'Comment at end with quotes no space',
|
||||
'HAS_COMMENT_NO_QUOTES_SPACE' => 'Comment at end no quotes and space',
|
||||
'HAS_COMMENT_NO_QUOTES_NO_SPACE' => 'Comment at end no quotes no space',
|
||||
'COMMENT_IN_TEXT_QUOTES' => 'Foo bar # comment in here',
|
||||
'FAILURE' => 'ABC',
|
||||
'SIMPLEBOX' => 'A B C',
|
||||
'TITLE' => '1',
|
||||
'FOO' => '1.2',
|
||||
'SOME.TEST' => 'Test Var',
|
||||
'SOME.LIVE' => 'Live Var',
|
||||
'A_TEST1' => 'foo',
|
||||
'A_TEST2' => '${TEST1:-bar}',
|
||||
'A_TEST3' => '${TEST4:-bar}',
|
||||
'A_TEST5' => 'null',
|
||||
'A_TEST6' => '${TEST5-bar}',
|
||||
'A_TEST7' => '${TEST6:-bar}',
|
||||
'B_TEST1' => 'foo',
|
||||
'B_TEST2' => '${TEST1:=bar}',
|
||||
'B_TEST3' => '${TEST4:=bar}',
|
||||
'B_TEST5' => 'null',
|
||||
'B_TEST6' => '${TEST5=bar}',
|
||||
'B_TEST7' => '${TEST6=bar}',
|
||||
'Test' => 'A',
|
||||
'TEST' => 'B',
|
||||
'LINE' => "ABC\nDEF",
|
||||
'OTHERLINE' => "ABC\nAF\"ASFASDF\nMORESHIT",
|
||||
'SUPERLINE' => '',
|
||||
'__FOO_BAR_1' => 'b',
|
||||
'__FOOFOO' => 'f ',
|
||||
123123 => 'number',
|
||||
'EMPTY' => '',
|
||||
];
|
||||
// 0: folder relative to test folder, if unset __DIR__
|
||||
// 1: file, if unset .env
|
||||
// 2: status to be returned
|
||||
// 3: _ENV file content to be set
|
||||
// 4: override chmod as octect in string
|
||||
return [
|
||||
'default' => [
|
||||
'folder' => null,
|
||||
'file' => null,
|
||||
'status' => 3,
|
||||
'content' => [],
|
||||
'chmod' => null,
|
||||
],
|
||||
'cannot open file' => [
|
||||
'folder' => __DIR__ . DIRECTORY_SEPARATOR . 'dotenv',
|
||||
'file' => 'cannot_read.env',
|
||||
'status' => 2,
|
||||
'content' => [],
|
||||
'chmod' => '000',
|
||||
],
|
||||
'empty file' => [
|
||||
'folder' => __DIR__ . DIRECTORY_SEPARATOR . 'dotenv',
|
||||
'file' => 'empty.env',
|
||||
'status' => 1,
|
||||
'content' => [],
|
||||
'chmod' => null,
|
||||
],
|
||||
'override all' => [
|
||||
'folder' => __DIR__ . DIRECTORY_SEPARATOR . 'dotenv',
|
||||
'file' => 'test.env',
|
||||
'status' => 0,
|
||||
'content' => $dot_env_content,
|
||||
'chmod' => null,
|
||||
],
|
||||
'override directory' => [
|
||||
'folder' => __DIR__ . DIRECTORY_SEPARATOR . 'dotenv',
|
||||
'file' => null,
|
||||
'status' => 0,
|
||||
'content' => $dot_env_content,
|
||||
'chmod' => null,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* test read .env file
|
||||
*
|
||||
* @covers ::readEnvFile
|
||||
* @dataProvider envFileProvider
|
||||
* @testdox Read _ENV file from $folder / $file with expected status: $expected_status and chmod $chmod [$_dataName]
|
||||
*
|
||||
* @param string|null $folder
|
||||
* @param string|null $file
|
||||
* @param int $expected_status
|
||||
* @param array $expected_env
|
||||
* @param string|null $chmod
|
||||
* @return void
|
||||
*/
|
||||
public function testReadEnvFile(
|
||||
?string $folder,
|
||||
?string $file,
|
||||
int $expected_status,
|
||||
array $expected_env,
|
||||
?string $chmod
|
||||
): void {
|
||||
// if we have file + chmod set
|
||||
$old_chmod = null;
|
||||
if (
|
||||
is_file($folder . DIRECTORY_SEPARATOR . $file) &&
|
||||
!empty($chmod)
|
||||
) {
|
||||
// get the old permissions
|
||||
$old_chmod = fileperms($folder . DIRECTORY_SEPARATOR . $file);
|
||||
chmod($folder . DIRECTORY_SEPARATOR . $file, octdec($chmod));
|
||||
}
|
||||
if ($folder !== null && $file !== null) {
|
||||
$status = DotEnv::readEnvFile($folder, $file);
|
||||
} elseif ($folder !== null) {
|
||||
$status = DotEnv::readEnvFile($folder);
|
||||
} else {
|
||||
$status = DotEnv::readEnvFile();
|
||||
}
|
||||
$this->assertEquals(
|
||||
$status,
|
||||
$expected_status,
|
||||
'Assert returned status equal'
|
||||
);
|
||||
// now assert read data
|
||||
$this->assertEquals(
|
||||
$_ENV,
|
||||
$expected_env,
|
||||
'Assert _ENV correct'
|
||||
);
|
||||
// if we have file and chmod unset
|
||||
if ($old_chmod !== null) {
|
||||
chmod($folder . DIRECTORY_SEPARATOR . $file, $old_chmod);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// __END__
|
||||
221
4dev/tests/Get/CoreLibsGetSystemTest.php
Normal file
221
4dev/tests/Get/CoreLibsGetSystemTest.php
Normal file
@@ -0,0 +1,221 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace tests;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
/**
|
||||
* Test class for Get\System
|
||||
* @coversDefaultClass \CoreLibs\Get\System
|
||||
* @testdox \CoreLibs\Get\System method tests
|
||||
*/
|
||||
final class CoreLibsGetSystemTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function fileUploadErrorMessageProvider(): array
|
||||
{
|
||||
return [
|
||||
'upload err init size' => [
|
||||
0 => UPLOAD_ERR_INI_SIZE,
|
||||
1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
|
||||
],
|
||||
'upload err from size' => [
|
||||
0 => UPLOAD_ERR_FORM_SIZE,
|
||||
1 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'
|
||||
],
|
||||
'upload err partial' => [
|
||||
0 => UPLOAD_ERR_PARTIAL,
|
||||
1 => 'The uploaded file was only partially uploaded'
|
||||
],
|
||||
'upload err no file' => [
|
||||
0 => UPLOAD_ERR_NO_FILE,
|
||||
1 => 'No file was uploaded'
|
||||
],
|
||||
'upload err no tmp dir' => [
|
||||
0 => UPLOAD_ERR_NO_TMP_DIR,
|
||||
1 => 'Missing a temporary folder'
|
||||
],
|
||||
'upload err cant write' => [
|
||||
0 => UPLOAD_ERR_CANT_WRITE,
|
||||
1 => 'Failed to write file to disk'
|
||||
],
|
||||
'upload err extension' => [
|
||||
0 => UPLOAD_ERR_EXTENSION,
|
||||
1 => 'File upload stopped by extension'
|
||||
],
|
||||
'unkown error' => [
|
||||
0 => 99999,
|
||||
1 => 'Unknown upload error'
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getHostNameProvider(): array
|
||||
{
|
||||
return [
|
||||
'original set' => [
|
||||
0 => null,
|
||||
1 => 'NOHOST',
|
||||
2 => 'NOPORT',
|
||||
],
|
||||
'override set no port' => [
|
||||
0 => 'foo.org',
|
||||
1 => 'foo.org',
|
||||
2 => '80'
|
||||
],
|
||||
'override set with port' => [
|
||||
0 => 'foo.org:443',
|
||||
1 => 'foo.org',
|
||||
2 => '443'
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getPageNameProvider(): array
|
||||
{
|
||||
return [
|
||||
// 0: input
|
||||
// 1: expected default/WITH_EXTENSION
|
||||
// 2: expected NO_EXTENSION
|
||||
// 3: expected FULL_PATH, if first and last character are / use regex
|
||||
'original set' => [
|
||||
0 => null,
|
||||
1 => 'phpunit',
|
||||
2 => 'phpunit',
|
||||
// NOTE: this can change, so it is a regex check
|
||||
3 => "/^(\/?.*\/?)?vendor\/bin\/phpunit$/",
|
||||
],
|
||||
'some path with extension' => [
|
||||
0 => '/some/path/to/file.txt',
|
||||
1 => 'file.txt',
|
||||
2 => 'file',
|
||||
3 => '/some/path/to/file.txt',
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::fileUploadErrorMessage
|
||||
* @dataProvider fileUploadErrorMessageProvider
|
||||
* @testdox fileUploadErrorMessage $input error matches $expected [$_dataName]
|
||||
*
|
||||
* @param integer $input
|
||||
* @param string $expected
|
||||
* @return void
|
||||
*/
|
||||
public function testFileUploadErrorMessage(int $input, string $expected): void
|
||||
{
|
||||
$this->assertEquals(
|
||||
$expected,
|
||||
\CoreLibs\Get\System::fileUploadErrorMessage($input)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::getHostName
|
||||
* @dataProvider getHostNameProvider
|
||||
* @testdox getHostName $input must match $expected_host:$expected_port [$_dataName]
|
||||
*
|
||||
* @param string|null $input
|
||||
* @param string $expected_host
|
||||
* @param string $expected_port
|
||||
* @return void
|
||||
*/
|
||||
public function testGetHostNanme(?string $input, string $expected_host, string $expected_port): void
|
||||
{
|
||||
// print "HOSTNAME: " . $_SERVER['HTTP_HOST'] . "<br>";
|
||||
// print "SERVER: " . print_r($_SERVER, true) . "\n";
|
||||
// print "SELF: " . $_SERVER['PHP_SELF'] . "\n";
|
||||
if ($input !== null) {
|
||||
$_SERVER['HTTP_HOST'] = $input;
|
||||
}
|
||||
list ($host, $port) = \CoreLibs\Get\System::getHostName();
|
||||
$this->assertEquals(
|
||||
$expected_host,
|
||||
$host,
|
||||
'failed expected host assert'
|
||||
);
|
||||
$this->assertEquals(
|
||||
$expected_port,
|
||||
$port,
|
||||
'faile expected port assert'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @covers ::getPageName
|
||||
* @dataProvider getPageNameProvider
|
||||
* @testdox getPageName $input will match 0: $expected_0, 1: $expected_1, 2: $expected_2 [$_dataName]
|
||||
*
|
||||
* @param string|null $input
|
||||
* @param string $expected_0 default with extension
|
||||
* @param string $expected_1 no extension
|
||||
* @param string $expected_2 full path
|
||||
* @return void
|
||||
*/
|
||||
public function testGetPageName(?string $input, string $expected_0, string $expected_1, string $expected_2)
|
||||
{
|
||||
if ($input !== null) {
|
||||
$_SERVER['PHP_SELF'] = $input;
|
||||
}
|
||||
// default 0,
|
||||
$this->assertEquals(
|
||||
$expected_0,
|
||||
\CoreLibs\Get\System::getPageName(),
|
||||
'failed default assert'
|
||||
);
|
||||
$this->assertEquals(
|
||||
$expected_0,
|
||||
\CoreLibs\Get\System::getPageName(\CoreLibs\Get\System::WITH_EXTENSION),
|
||||
'failed WITH_EXTESION assert'
|
||||
);
|
||||
$this->assertEquals(
|
||||
$expected_1,
|
||||
\CoreLibs\Get\System::getPageName(\CoreLibs\Get\System::NO_EXTENSION),
|
||||
'failed NO_EXTENSION assert'
|
||||
);
|
||||
// FULL PATH check can be equals or regex
|
||||
$page_name_full_path = \CoreLibs\Get\System::getPageName(\CoreLibs\Get\System::FULL_PATH);
|
||||
if (
|
||||
substr($expected_2, 0, 1) == '/' &&
|
||||
substr($expected_2, -1, 1) == '/'
|
||||
) {
|
||||
// this is regex
|
||||
$this->assertMatchesRegularExpression(
|
||||
$expected_2,
|
||||
$page_name_full_path,
|
||||
'failed FULL_PATH assert regex'
|
||||
);
|
||||
} else {
|
||||
$this->assertEquals(
|
||||
$expected_2,
|
||||
$page_name_full_path,
|
||||
'failed FULL_PATH assert equals'
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// __END__
|
||||
0
4dev/tests/Get/dotenv/cannot_read.env
Normal file
0
4dev/tests/Get/dotenv/cannot_read.env
Normal file
0
4dev/tests/Get/dotenv/empty.env
Normal file
0
4dev/tests/Get/dotenv/empty.env
Normal file
49
4dev/tests/Get/dotenv/test.env
Normal file
49
4dev/tests/Get/dotenv/test.env
Normal file
@@ -0,0 +1,49 @@
|
||||
# enviroment file
|
||||
SOMETHING=A
|
||||
OTHER="B IS B"
|
||||
Complex="A B \"D is F"
|
||||
# COMMENT
|
||||
HAS_SPACE= "ABC";
|
||||
# COMMENT AT END
|
||||
HAS_COMMENT_QUOTES_SPACE="Comment at end with quotes and space" # Comment QE
|
||||
HAS_COMMENT_QUOTES_NO_SPACE="Comment at end with quotes no space"# Comment QES
|
||||
HAS_COMMENT_NO_QUOTES_SPACE=Comment at end no quotes and space # Comment NQE
|
||||
HAS_COMMENT_NO_QUOTES_NO_SPACE=Comment at end no quotes no space# Comment NQES
|
||||
COMMENT_IN_TEXT_QUOTES="Foo bar # comment in here"
|
||||
FAILURE = ABC
|
||||
SIMPLEBOX= A B C
|
||||
TITLE=1
|
||||
FOO=1.2
|
||||
SOME.TEST=Test Var
|
||||
SOME.LIVE=Live Var
|
||||
# VAR TESTS -
|
||||
A_TEST1 = foo
|
||||
A_TEST2 = ${TEST1:-bar} # TEST1 is set so the value of TEST2 = foo
|
||||
A_TEST3 = ${TEST4:-bar} # TEST4 is not set so the value of TEST3 = bar
|
||||
A_TEST5 = null
|
||||
A_TEST6 = ${TEST5-bar} # TEST5 is set but empty so the value of TEST6 = null
|
||||
A_TEST7 = ${TEST6:-bar} # TEST5 is set and empty so the value of TEST7 = bar
|
||||
# VAR TESTS =
|
||||
B_TEST1 = foo
|
||||
B_TEST2 = ${TEST1:=bar} # TEST1 is set so the value of TEST2 = foo
|
||||
B_TEST3 = ${TEST4:=bar} # TEST4 is not set so the value of TEST3 = bar and TEST4 = bar
|
||||
B_TEST5 = null
|
||||
B_TEST6 = ${TEST5=bar} # TEST5 is set but emtpy so the value of TEST6 = null
|
||||
B_TEST7 = ${TEST6=bar} # TEST5 is set and empty so the value of TEST7 = bar and TEST5 = bar
|
||||
# VAR TEST END
|
||||
Test="A"
|
||||
TEST="B"
|
||||
TEST="D"
|
||||
LINE="ABC
|
||||
DEF"
|
||||
OTHERLINE="ABC
|
||||
AF\"ASFASDF
|
||||
MORESHIT"
|
||||
SUPERLINE=
|
||||
"asfasfasf"
|
||||
__FOO_BAR_1 = b
|
||||
__FOOFOO = f
|
||||
123123=number
|
||||
EMPTY=
|
||||
= flase
|
||||
asfasdf
|
||||
Reference in New Issue
Block a user