ServerUrlPolicyTest.kt
74 lignes · 2589 octets
package fr.ebii.card2vcf.sync import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse import org.junit.Assert.assertNull import org.junit.Assert.assertTrue import org.junit.Test /** TDD : HTTPS obligatoire sauf option « autoriser HTTP clair ». */ class ServerUrlPolicyTest { @Test fun https_url_is_allowed_by_default() { assertNull(ServerUrlPolicy.validate("https://api.example.com", allowCleartext = false)) assertNull(ServerUrlPolicy.validate("HTTPS://API.EXAMPLE.COM/v1", allowCleartext = false)) } @Test fun http_url_rejected_when_cleartext_disallowed() { val err = ServerUrlPolicy.validate("http://192.168.1.10:3000", allowCleartext = false) assertEquals(ServerUrlPolicy.ERROR_HTTPS_REQUIRED, err) } @Test fun http_url_allowed_when_cleartext_enabled() { assertNull(ServerUrlPolicy.validate("http://192.168.1.10:3000", allowCleartext = true)) assertNull(ServerUrlPolicy.validate("http://localhost:3000", allowCleartext = true)) } @Test fun blank_or_missing_scheme_rejected() { assertEquals(ServerUrlPolicy.ERROR_INVALID_URL, ServerUrlPolicy.validate(" ", allowCleartext = true)) assertEquals( ServerUrlPolicy.ERROR_INVALID_URL, ServerUrlPolicy.validate("api.example.com", allowCleartext = false), ) assertEquals( ServerUrlPolicy.ERROR_INVALID_URL, ServerUrlPolicy.validate("ftp://api.example.com", allowCleartext = true), ) } @Test fun isHttps_helper() { assertTrue(ServerUrlPolicy.isHttps("https://x")) assertFalse(ServerUrlPolicy.isHttps("http://x")) assertFalse(ServerUrlPolicy.isHttps("x")) } @Test fun lan_https_without_port_rejected() { val err = ServerUrlPolicy.validate("https://192.168.1.35", allowCleartext = false) assertEquals(ServerUrlPolicy.ERROR_LAN_HTTPS_NO_PORT, err) } @Test fun lan_http_without_port_rejected_even_when_cleartext() { val err = ServerUrlPolicy.validate("http://192.168.1.35", allowCleartext = true) assertEquals(ServerUrlPolicy.ERROR_LAN_HTTP_NO_PORT, err) } @Test fun normalizeBaseUrl_strips_version_path() { assertEquals( "http://192.168.1.35:3000", ServerUrlPolicy.normalizeBaseUrl("http://192.168.1.35:3000/version/"), ) } @Test fun public_https_without_port_still_allowed() { assertNull(ServerUrlPolicy.validate("https://api.example.com", allowCleartext = false)) } }
GitRust