Skip to content

Commit eeb8409

Browse files
committed
add tests
1 parent 6b2b238 commit eeb8409

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

test/unit/UtilsTest.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ class UtilsTest extends UnityWebPortalTestCase
88
public static function SSHKeyProvider()
99
{
1010
global $HTTP_HEADER_TEST_INPUTS;
11+
// these key types must all be in CONFIG["ldap"]["allowed_ssh_key_types"]
1112
$validKeys = [
1213
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+XqO25MUB9x/pS04I3JQ7rMGboWyGXh0GUzkOrTi7a",
1314
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+XqO25MUB9x/pS04I3JQ7rMGboWyGXh0GUzkOrTi7a foobar",
15+
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+XqO25MUB9x/pS04I3JQ7rMGboWyGXh0GUzkOrTi7a foo bar baz",
1416
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBF/dSI9/7YWeyB8wa4rEWRdeb9pQbrGxZwYFV2ulr0agXdbiJIApp0MWDYlIc9XI+4Y+cVAj66PQ2YaRz44BV+o=",
1517
"ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBOr8ZnJPs/mP/1c74P8NsiPL2pq/vKo6u0vtkgqgyZjqJJpPS5rP6EFJkT8DI0Fx9/70jvyH8wGK6tx+/gNElMlZ6P2RyHbDvL4Nh2LAEW3BQ2lbULyElP/ZeXIEQzPxng==",
1618
"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAFmNNrz+B6exxuReTXQJzXUzJ4zB5JTuB8Xtcr79P4tk4SlA5a5ufQlsqMdPRhA76KFaLmONGF1e+vwcQWsj/MbRQE0H56tkZRNa+ch5/YI6iKSffkzpRKogl/uTP4rlpRb1vppsURRYxQ2JBzLYolj8VUV+N0sCwM+8maiOGJYuc4dlQ==",
@@ -66,18 +68,27 @@ public static function SSHKeyProvider()
6668
]),
6769
];
6870
$validKeysArgs = array_map(function ($x) {
69-
return [true, $x];
71+
return [true, $x, "/^$/"];
7072
}, $validKeys);
71-
$invalidKeysArgs = array_map(function ($x) {
72-
return [false, $x];
73+
$garbageKeysArgs = array_map(function ($x) {
74+
return [false, $x, "/.*/"];
7375
}, $HTTP_HEADER_TEST_INPUTS);
74-
return $validKeysArgs + $invalidKeysArgs;
76+
$invalidKeysArgs = [
77+
[false, "foo ", "/leading or trailing whitespace/"],
78+
[false, "foo\n", "/leading or trailing whitespace/"],
79+
[false, "foo\nbar", "/multiple lines/"],
80+
[false, "foo", "/at least 2 words/"],
81+
[false, "foo bar", "/key type 'foo' not allowed/"],
82+
[false, "ssh-rsa deadbeef", "/Unity admin/"],
83+
];
84+
return $validKeysArgs + $garbageKeysArgs + $invalidKeysArgs;
7585
}
7686

7787
#[DataProvider("SSHKeyProvider")]
78-
public function testTestValidSSHKey(bool $expected, string $key)
88+
public function testTestValidSSHKey(bool $expected, string $key, string $explanation_regex)
7989
{
8090
[$is_valid, $explanation] = testValidSSHKey($key);
91+
$this->assertMatchesRegularExpression($explanation_regex, $explanation);
8192
$this->assertEquals($expected, $is_valid);
8293
}
8394

0 commit comments

Comments
 (0)