diff options
author | Juan J. Martinez <jjm@usebox.net> | 2021-02-28 08:15:55 +0000 |
---|---|---|
committer | Juan J. Martinez <jjm@usebox.net> | 2021-07-22 19:49:51 +0100 |
commit | fc60ea8c4d52c5015edce1e4c6086d80e7a7d830 (patch) | |
tree | 3df752bef15d3a6e3367c8155a4904571e20479b /server/test/src/ServerSpec.scala | |
parent | 71df19c2da98428f52242e274c1d11f1c4c1ecdf (diff) | |
download | spacebeans-fc60ea8c4d52c5015edce1e4c6086d80e7a7d830.tar.gz spacebeans-fc60ea8c4d52c5015edce1e4c6086d80e7a7d830.zip |
Flags per directory, override vhost settings
Diffstat (limited to 'server/test/src/ServerSpec.scala')
-rw-r--r-- | server/test/src/ServerSpec.scala | 79 |
1 files changed, 67 insertions, 12 deletions
diff --git a/server/test/src/ServerSpec.scala b/server/test/src/ServerSpec.scala index d086d2d..c81afa3 100644 --- a/server/test/src/ServerSpec.scala +++ b/server/test/src/ServerSpec.scala @@ -10,6 +10,14 @@ import akka.util.ByteString class ServerSpec extends AnyFlatSpec with Matchers { + def getPath(value: String) = FileSystems.getDefault().getPath(value) + + def getPath(root: String, dir: String) = + FileSystems + .getDefault() + .getPath(root, dir) + .normalize() + behavior of "validPath" it should "return true for the emtpy path" in { @@ -34,7 +42,7 @@ class ServerSpec extends AnyFlatSpec with Matchers { it should "resolve a known MIME type" in { Server(TestData.conf) .guessMimeType( - FileSystems.getDefault().getPath("file.html"), + getPath("file.html"), None ) shouldBe "text/html" } @@ -42,7 +50,7 @@ class ServerSpec extends AnyFlatSpec with Matchers { it should "resolve de default MIME type for unknown types" in { Server(TestData.conf) .guessMimeType( - FileSystems.getDefault().getPath("unknow"), + getPath("unknow"), None ) shouldBe TestData.conf.defaultMimeType } @@ -50,12 +58,12 @@ class ServerSpec extends AnyFlatSpec with Matchers { it should "resolve gemini MIME type" in { Server(TestData.conf) .guessMimeType( - FileSystems.getDefault().getPath("file.gmi"), + getPath("file.gmi"), None ) shouldBe "text/gemini" Server(TestData.conf) .guessMimeType( - FileSystems.getDefault().getPath("file.gemini"), + getPath("file.gemini"), None ) shouldBe "text/gemini" } @@ -63,12 +71,12 @@ class ServerSpec extends AnyFlatSpec with Matchers { it should "resolve gemini MIME type, including parameters" in { Server(TestData.conf) .guessMimeType( - FileSystems.getDefault().getPath("file.gmi"), + getPath("file.gmi"), Some("param") ) shouldBe "text/gemini; param" Server(TestData.conf) .guessMimeType( - FileSystems.getDefault().getPath("file.gemini"), + getPath("file.gemini"), Some("param") ) shouldBe "text/gemini; param" } @@ -76,7 +84,7 @@ class ServerSpec extends AnyFlatSpec with Matchers { it should "gemini MIME type parameters are sanitized" in { Server(TestData.conf) .guessMimeType( - FileSystems.getDefault().getPath("file.gmi"), + getPath("file.gmi"), Some(" ; param") ) shouldBe "text/gemini; param" } @@ -86,7 +94,7 @@ class ServerSpec extends AnyFlatSpec with Matchers { it should "resolve a known MIME type" in { Server(TestData.conf.copy(mimeTypes = TestData.mimeTypes)) .guessMimeType( - FileSystems.getDefault().getPath("file.gmi"), + getPath("file.gmi"), None ) shouldBe "config" } @@ -95,7 +103,7 @@ class ServerSpec extends AnyFlatSpec with Matchers { Server( TestData.conf.copy(mimeTypes = Some(Map("text/gemini" -> List(".gmi")))) ).guessMimeType( - FileSystems.getDefault().getPath("file.gmi"), + getPath("file.gmi"), Some("param") ) shouldBe "text/gemini; param" } @@ -103,7 +111,7 @@ class ServerSpec extends AnyFlatSpec with Matchers { it should "resolve de default MIME type for unknown types" in { Server(TestData.conf.copy(mimeTypes = TestData.mimeTypes)) .guessMimeType( - FileSystems.getDefault().getPath("unknow"), + getPath("unknow"), None ) shouldBe TestData.conf.defaultMimeType } @@ -230,7 +238,53 @@ class ServerSpec extends AnyFlatSpec with Matchers { } } - it should "return not found if directory listing is nt enabled and no index" in { + it should "return a directory listing, directory listing flags: vhost flag false, directories flag true" in { + Server( + TestData.conf.copy(virtualHosts = + List( + TestData.conf + .virtualHosts(0) + .copy( + directoryListing = false, + directories = List( + Directory( + getPath(getClass.getResource("/").getPath(), "dir/") + .toString(), + directoryListing = Some(true) + ) + ) + ) + ) + ) + ).handleReq("gemini://localhost/dir/") should matchPattern { + case _: DirListing => + } + } + + it should "return not found with no index, directory listing flags: vhost flag true, directories flag false" in { + Server( + TestData.conf.copy(virtualHosts = + List( + TestData.conf + .virtualHosts(0) + .copy( + directoryListing = true, + directories = List( + Directory( + getPath(getClass.getResource("/").getPath(), "dir/") + .toString(), + directoryListing = Some(false) + ) + ) + ) + ) + ) + ).handleReq("gemini://localhost/dir/") should matchPattern { + case _: NotFound => + } + } + + it should "return not found if directory listing is not enabled and no index" in { Server( TestData.conf.copy(virtualHosts = List(TestData.conf.virtualHosts(0).copy(directoryListing = false)) @@ -266,7 +320,8 @@ class ServerSpec extends AnyFlatSpec with Matchers { virtualHosts = List( VirtualHost( host = "localhost", - root = getClass.getResource("/").getPath() + root = getClass.getResource("/").getPath(), + directories = Nil ) ), genCertValidFor = 1.day, |