git.iko.soy/typeable/openapi3
on master help sign in
Merge pull request #32 from serokell/use-security-definitions

Use `SecurityDefinitions` type for `_componentsSecuritySchemes`

commitb71892dc4106682dd832f729abea005bde64aafd authorMaxim Koltsov <kolmax94@gmail.com> dateSun 12 Dec 2021, 23:59 (5 years ago) parentdd20446a2e6895
3 files changed+26−4
CHANGELOG.md+3 src/Data/OpenApi/Internal.hs+6−3 test/Data/OpenApiSpec.hs+17−1
CHANGELOG.md+3
@@ -1,6 +1,9 @@
11Unreleased
22----------
33
4+- Use `SecurityDefinitions` type for `_componentsSecuritySchemes`
5+ [#32](https://github.com/biocad/openapi3/pull/32)).
6+
473.1.0
58-----
69
src/Data/OpenApi/Internal.hs+6−3
@@ -46,7 +46,8 @@ import Data.HashMap.Strict.InsOrd (InsOrdHashMap)
4646import qualified Data.HashMap.Strict.InsOrd as InsOrdHashMap
4747
4848import Generics.SOP.TH (deriveGeneric)
49−import Data.OpenApi.Internal.AesonUtils (sopSwaggerGenericToJSON
49+import Data.OpenApi.Internal.AesonUtils (sopSwaggerGenericToEncoding
50+ ,sopSwaggerGenericToJSON
5051 ,sopSwaggerGenericToJSONWithOpts
5152 ,sopSwaggerGenericParseJSON
5253 ,HasSwaggerAesonOptions(..)
@@ -55,7 +56,6 @@ import Data.OpenApi.Internal.AesonUtils (sopSwaggerGenericToJSON
5556 ,saoAdditionalPairs
5657 ,saoSubObject)
5758import Data.OpenApi.Internal.Utils
58−import Data.OpenApi.Internal.AesonUtils (sopSwaggerGenericToEncoding)
5959
6060-- $setup
6161-- >>> :seti -XDataKinds
@@ -196,7 +196,7 @@ data Components = Components
196196 , _componentsExamples :: Definitions Example
197197 , _componentsRequestBodies :: Definitions RequestBody
198198 , _componentsHeaders :: Definitions Header
199− , _componentsSecuritySchemes :: Definitions SecurityScheme
199+ , _componentsSecuritySchemes :: SecurityDefinitions
200200 , _componentsLinks :: Definitions Link
201201 , _componentsCallbacks :: Definitions Callback
202202 } deriving (Eq, Show, Generic, Data, Typeable)
@@ -1125,6 +1125,7 @@ instance SwaggerMonoid Response
11251125instance SwaggerMonoid ExternalDocs
11261126instance SwaggerMonoid Operation
11271127instance (Eq a, Hashable a) => SwaggerMonoid (InsOrdHashSet a)
1128+instance SwaggerMonoid SecurityDefinitions
11281129
11291130instance SwaggerMonoid MimeList
11301131deriving instance SwaggerMonoid URL
@@ -1614,3 +1615,5 @@ instance AesonDefaultValue MimeList where defaultValue = Just mempty
16141615instance AesonDefaultValue Info
16151616instance AesonDefaultValue ParamLocation
16161617instance AesonDefaultValue Link
1618+instance AesonDefaultValue SecurityDefinitions where
1619+ defaultValue = Just mempty
test/Data/OpenApiSpec.hs+17−1
@@ -45,6 +45,10 @@ spec = do
4545 fromJSON petstoreExampleJSON `shouldSatisfy` (\x -> case x of Success (_ :: OpenApi) -> True; _ -> False)
4646 it "roundtrips: fmap toJSON . fromJSON" $ do
4747 (toJSON :: OpenApi -> Value) <$> fromJSON petstoreExampleJSON `shouldBe` Success petstoreExampleJSON
48+ context "Security schemes" $ do
49+ it "merged correctly" $ do
50+ let merged = oAuth2SecurityDefinitionsReadOpenApi <> oAuth2SecurityDefinitionsWriteOpenApi
51+ merged `shouldBe` oAuth2SecurityDefinitionsOpenApi
4852
4953main :: IO ()
5054main = hspec spec
@@ -441,7 +445,7 @@ responsesDefinitionExampleJSON = [aesonQQ|
441445|]
442446
443447-- =======================================================================
444−-- Responses Definition object
448+-- Security Definition object
445449-- =======================================================================
446450
447451securityDefinitionsExample :: SecurityDefinitions
@@ -527,6 +531,18 @@ oAuth2SecurityDefinitionsExampleJSON = [aesonQQ|
527531}
528532|]
529533
534+oAuth2SecurityDefinitionsReadOpenApi :: OpenApi
535+oAuth2SecurityDefinitionsReadOpenApi =
536+ mempty & components . securitySchemes .~ oAuth2SecurityDefinitionsReadExample
537+
538+oAuth2SecurityDefinitionsWriteOpenApi :: OpenApi
539+oAuth2SecurityDefinitionsWriteOpenApi =
540+ mempty & components . securitySchemes .~ oAuth2SecurityDefinitionsWriteExample
541+
542+oAuth2SecurityDefinitionsOpenApi :: OpenApi
543+oAuth2SecurityDefinitionsOpenApi =
544+ mempty & components . securitySchemes .~ oAuth2SecurityDefinitionsExample
545+
530546-- =======================================================================
531547-- Swagger object
532548-- =======================================================================