Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use SecurityDefinitions type for _componentsSecuritySchemes #32

Merged
merged 3 commits into from
Dec 12, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
Unreleased
----------

- Use `SecurityDefinitions` type for `_componentsSecuritySchemes`
[#32](https://github.com/biocad/openapi3/pull/32)).

3.1.0
-----

Expand Down
9 changes: 6 additions & 3 deletions src/Data/OpenApi/Internal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ import Data.HashMap.Strict.InsOrd (InsOrdHashMap)
import qualified Data.HashMap.Strict.InsOrd as InsOrdHashMap

import Generics.SOP.TH (deriveGeneric)
import Data.OpenApi.Internal.AesonUtils (sopSwaggerGenericToJSON
import Data.OpenApi.Internal.AesonUtils (sopSwaggerGenericToEncoding
,sopSwaggerGenericToJSON
,sopSwaggerGenericToJSONWithOpts
,sopSwaggerGenericParseJSON
,HasSwaggerAesonOptions(..)
Expand All @@ -55,7 +56,6 @@ import Data.OpenApi.Internal.AesonUtils (sopSwaggerGenericToJSON
,saoAdditionalPairs
,saoSubObject)
import Data.OpenApi.Internal.Utils
import Data.OpenApi.Internal.AesonUtils (sopSwaggerGenericToEncoding)

-- $setup
-- >>> :seti -XDataKinds
Expand Down Expand Up @@ -196,7 +196,7 @@ data Components = Components
, _componentsExamples :: Definitions Example
, _componentsRequestBodies :: Definitions RequestBody
, _componentsHeaders :: Definitions Header
, _componentsSecuritySchemes :: Definitions SecurityScheme
, _componentsSecuritySchemes :: SecurityDefinitions
, _componentsLinks :: Definitions Link
, _componentsCallbacks :: Definitions Callback
} deriving (Eq, Show, Generic, Data, Typeable)
Expand Down Expand Up @@ -1125,6 +1125,7 @@ instance SwaggerMonoid Response
instance SwaggerMonoid ExternalDocs
instance SwaggerMonoid Operation
instance (Eq a, Hashable a) => SwaggerMonoid (InsOrdHashSet a)
instance SwaggerMonoid SecurityDefinitions

instance SwaggerMonoid MimeList
deriving instance SwaggerMonoid URL
Expand Down Expand Up @@ -1614,3 +1615,5 @@ instance AesonDefaultValue MimeList where defaultValue = Just mempty
instance AesonDefaultValue Info
instance AesonDefaultValue ParamLocation
instance AesonDefaultValue Link
instance AesonDefaultValue SecurityDefinitions where
defaultValue = Just mempty
18 changes: 17 additions & 1 deletion test/Data/OpenApiSpec.hs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ spec = do
fromJSON petstoreExampleJSON `shouldSatisfy` (\x -> case x of Success (_ :: OpenApi) -> True; _ -> False)
it "roundtrips: fmap toJSON . fromJSON" $ do
(toJSON :: OpenApi -> Value) <$> fromJSON petstoreExampleJSON `shouldBe` Success petstoreExampleJSON
context "Security schemes" $ do
it "merged correctly" $ do
let merged = oAuth2SecurityDefinitionsReadOpenApi <> oAuth2SecurityDefinitionsWriteOpenApi
merged `shouldBe` oAuth2SecurityDefinitionsOpenApi

main :: IO ()
main = hspec spec
Expand Down Expand Up @@ -441,7 +445,7 @@ responsesDefinitionExampleJSON = [aesonQQ|
|]

-- =======================================================================
-- Responses Definition object
-- Security Definition object
-- =======================================================================

securityDefinitionsExample :: SecurityDefinitions
Expand Down Expand Up @@ -527,6 +531,18 @@ oAuth2SecurityDefinitionsExampleJSON = [aesonQQ|
}
|]

oAuth2SecurityDefinitionsReadOpenApi :: OpenApi
oAuth2SecurityDefinitionsReadOpenApi =
mempty & components . securitySchemes .~ oAuth2SecurityDefinitionsReadExample

oAuth2SecurityDefinitionsWriteOpenApi :: OpenApi
oAuth2SecurityDefinitionsWriteOpenApi =
mempty & components . securitySchemes .~ oAuth2SecurityDefinitionsWriteExample

oAuth2SecurityDefinitionsOpenApi :: OpenApi
oAuth2SecurityDefinitionsOpenApi =
mempty & components . securitySchemes .~ oAuth2SecurityDefinitionsExample

-- =======================================================================
-- Swagger object
-- =======================================================================
Expand Down