@@ -2,6 +2,7 @@ module Test.BearerAuthTest where
22
33import Prelude
44
5+import Data.Array as Array
56import Data.Maybe (Maybe(..))
67import Data.String as String
78import Effect (Effect)
@@ -9,6 +10,7 @@ import Yoga.HTTP.API.Path (Path, Lit)
910import Yoga.HTTP.API.Route (GET, Route, Request, buildOpenAPISpec)
1011import Yoga.HTTP.API.Route.Auth (BearerToken, BasicAuth, ApiKeyHeader, DigestAuth)
1112import Yoga.JSON (writeJSON)
13+import Test.OpenAPIValidation (validate)
1214import ViTest (ViTest, describe, test)
1315import ViTest.Expect (expectToBe)
1416
@@ -56,12 +58,17 @@ testBearerTokenAuth = describe "BearerToken Authentication" do
5658 let hasBearerAuth = String.contains (String.Pattern "bearerAuth") json
5759 expectToBe true hasBearerAuth
5860
59− test "BearerToken security scheme has correct structure" do
61+ _ <- test "BearerToken security scheme has correct structure" do
6062 let spec = buildOpenAPISpec @BearerAuthAPI { title: "Auth API", version: "1.0.0", description: Nothing, contact: Nothing, license: Nothing }
6163 let json = writeJSON spec
6264 expectToBe true (String.contains (String.Pattern "\"type\":\"http\"") json)
6365 expectToBe true (String.contains (String.Pattern "\"scheme\":\"bearer\"") json)
6466
67+ test "BearerToken API generates valid OpenAPI 3.0 schema" do
68+ let spec = buildOpenAPISpec @BearerAuthAPI { title: "Auth API", version: "1.0.0", description: Nothing, contact: Nothing, license: Nothing }
69+ let result = validate spec
70+ expectToBe true (Array.null result.errors)
71+
6572testBasicAuth :: Effect ViTest
6673testBasicAuth = describe "BasicAuth Authentication" do
6774 _ <- test "BasicAuth does not appear as a regular header parameter" do