'https://mx1.domena.pl:2222', 'MAIL_LOGIN_SSH_HOST' => 'mx1.domena.pl', 'MAIL_LOGIN_SSH_PORT' => '222', 'MAIL_LOGIN_SSH_USER' => 'root', 'MAIL_LOGIN_SSH_IDENTITY' => '/secure/key', 'MAIL_LOGIN_SSH_KNOWN_HOSTS' => '/secure/known_hosts', 'LOGIN_KEY_TTL' => '30', 'USER_IP_BOUND' => '1', ]); $request = new LoginUrlRequest('mxtest', 'h4.domena.pl', 'h4', 30, true, '198.51.100.10', '/'); $command = RemoteLoginUrlClient::buildCommand($settings, $request); assert_same('ssh', $command[0]); assert_contains('UserKnownHostsFile=/secure/known_hosts', implode(' ', $command)); assert_contains('root@mx1.domena.pl', implode(' ', $command)); assert_same('mail-login-create-url', $command[count($command) - 8]); assert_same('mxtest', $command[count($command) - 7]); assert_same('1', $command[count($command) - 3]); }); test('remote login url client validates helper output before returning it', function (): void { $settings = Settings::fromArray(['MAIL_LOGIN_TARGET_BASE_URL' => 'https://mx1.domena.pl:2222']); $request = new LoginUrlRequest('mxtest', 'h4.domena.pl', 'h4', 30, true, '198.51.100.10', '/'); $client = new RemoteLoginUrlClient(function (array $command, int $timeout): ProcessResult { return new ProcessResult(0, "URL: https://mx1.domena.pl:2222/api/login/url?key=SECRET\n", ''); }); assert_same('https://mx1.domena.pl:2222/api/login/url?key=SECRET', $client->create($settings, $request)); $badClient = new RemoteLoginUrlClient(function (array $command, int $timeout): ProcessResult { return new ProcessResult(0, "https://evil.example/api/login/url?key=SECRET\n", ''); }); try { $badClient->create($settings, $request); throw new RuntimeException('Expected invalid helper URL to fail'); } catch (RuntimeException $e) { assert_contains('login url', strtolower($e->getMessage())); } });