@@ -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