35 lines
1.9 KiB
PHP
35 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Deployment;
|
|
|
|
use Tests\TestCase;
|
|
|
|
class DingTalkCallbackNginxTest extends TestCase
|
|
{
|
|
public function test_plain_http_redirects_to_domain_before_laravel_reads_session(): void
|
|
{
|
|
$config = file_get_contents(base_path('deploy/host-nginx-8442-dingtalk.conf'));
|
|
|
|
$this->assertStringContainsString('error_page 497 = @plain_http_request;', $config);
|
|
$this->assertStringContainsString('return 302 https://caiwu.jiansuntuzhi.cn:8442$request_uri;', $config);
|
|
$this->assertStringContainsString('add_header Cache-Control "no-store" always;', $config);
|
|
$this->assertStringNotContainsString('proxy_set_header Host caiwu.jiansuntuzhi.cn;', $config);
|
|
$this->assertStringNotContainsString('proxy_set_header X-Forwarded-Proto http;', $config);
|
|
$this->assertSame(1, substr_count($config, 'proxy_set_header X-Forwarded-Proto https;'));
|
|
$this->assertStringContainsString('return 308 https://caiwu.jiansuntuzhi.cn:8442$request_uri;', $config);
|
|
$this->assertStringContainsString('ssl_certificate /etc/nginx/caiwu-jiansuntuzhi-fullchain.pem;', $config);
|
|
$this->assertStringNotContainsString('caiwuxitong-backend.crt', $config);
|
|
}
|
|
|
|
public function test_configuration_script_validates_and_restores_on_failure(): void
|
|
{
|
|
$script = file_get_contents(base_path('deploy/configure-dingtalk-callback.sh'));
|
|
|
|
$this->assertStringContainsString('nginx -t', $script);
|
|
$this->assertStringContainsString('the previous configuration was restored', $script);
|
|
$this->assertStringContainsString("expected_redirect=\"https://caiwu.jiansuntuzhi.cn:8442/auth/dingtalk/callback?state=configuration-probe\"", $script);
|
|
$this->assertStringContainsString("[ \"\$status\" != \"302\" ] || [ \"\$redirect_url\" != \"\$expected_redirect\" ]", $script);
|
|
$this->assertStringContainsString('DINGTALK_HTTP_CALLBACK_READY=', $script);
|
|
}
|
|
}
|