[haskell-http-client] fixes for fake-endpoints (#6597)

* fix compile errors / sanitization for petstore-with-fake-endpoints-models-for-testing.yaml
* correct mimetype logic
* add makefile
This commit is contained in:
Jon Schoning
2017-10-01 05:18:46 -05:00
committed by wing328
parent c32281cd02
commit 8bd7d3912b
59 changed files with 6972 additions and 2013 deletions

View File

@@ -5,11 +5,11 @@ module Instances where
import Data.Text (Text, pack)
import Data.Char (isSpace)
import Data.List (sort)
import Data.Time.Calendar (Day(..))
import Data.Time.Clock (UTCTime(..), secondsToDiffTime)
import qualified Data.Time as TI
import Test.QuickCheck
import qualified Data.HashMap.Strict as HM
import qualified Data.Set as Set
import qualified Data.ByteString.Lazy as BL
import ApproxEq
import SwaggerPetstore.Model
@@ -17,13 +17,33 @@ import SwaggerPetstore.Model
instance Arbitrary Text where
arbitrary = pack <$> arbitrary
instance Arbitrary Day where
arbitrary = ModifiedJulianDay . (2000 +) <$> arbitrary
shrink = (ModifiedJulianDay <$>) . shrink . toModifiedJulianDay
instance Arbitrary TI.Day where
arbitrary = TI.ModifiedJulianDay . (2000 +) <$> arbitrary
shrink = (TI.ModifiedJulianDay <$>) . shrink . TI.toModifiedJulianDay
instance Arbitrary UTCTime where
instance Arbitrary TI.UTCTime where
arbitrary =
UTCTime <$> arbitrary <*> (secondsToDiffTime <$> choose (0, 86401))
TI.UTCTime <$> arbitrary <*> (TI.secondsToDiffTime <$> choose (0, 86401))
instance Arbitrary BL.ByteString where
arbitrary = BL.pack <$> arbitrary
shrink xs = BL.pack <$> shrink (BL.unpack xs)
instance Arbitrary ByteArray where
arbitrary = ByteArray <$> arbitrary
shrink (ByteArray xs) = ByteArray <$> shrink xs
instance Arbitrary Binary where
arbitrary = Binary <$> arbitrary
shrink (Binary xs) = Binary <$> shrink xs
instance Arbitrary DateTime where
arbitrary = DateTime <$> arbitrary
shrink (DateTime xs) = DateTime <$> shrink xs
instance Arbitrary Date where
arbitrary = Date <$> arbitrary
shrink (Date xs) = Date <$> shrink xs
-- | Checks if a given list has no duplicates in _O(n log n)_.
hasNoDups
@@ -37,66 +57,280 @@ hasNoDups = go Set.empty
, Set.size s' > Set.size s = go s' xs
| otherwise = False
instance ApproxEq Day where
instance ApproxEq TI.Day where
(=~) = (==)
-- * Models
instance Arbitrary AdditionalPropertiesClass where
arbitrary =
AdditionalPropertiesClass
<$> arbitrary -- additionalPropertiesClassMapProperty :: Maybe (Map.Map String Text)
<*> arbitrary -- additionalPropertiesClassMapOfMapProperty :: Maybe (Map.Map String (Map.Map String Text))
instance Arbitrary Animal where
arbitrary =
Animal
<$> arbitrary -- animalClassName :: Text
<*> arbitrary -- animalColor :: Maybe Text
instance Arbitrary AnimalFarm where
arbitrary =
pure AnimalFarm
instance Arbitrary ApiResponse where
arbitrary =
ApiResponse
<$> arbitrary -- apiResponseCode :: Maybe Int
<*> arbitrary -- apiResponseType :: Maybe Text
<*> arbitrary -- apiResponseMessage :: Maybe Text
<$> arbitrary -- apiResponseCode :: Maybe Int
<*> arbitrary -- apiResponseType :: Maybe Text
<*> arbitrary -- apiResponseMessage :: Maybe Text
instance Arbitrary ArrayOfArrayOfNumberOnly where
arbitrary =
ArrayOfArrayOfNumberOnly
<$> arbitrary -- arrayOfArrayOfNumberOnlyArrayArrayNumber :: Maybe [[Double]]
instance Arbitrary ArrayOfNumberOnly where
arbitrary =
ArrayOfNumberOnly
<$> arbitrary -- arrayOfNumberOnlyArrayNumber :: Maybe [Double]
instance Arbitrary ArrayTest where
arbitrary =
ArrayTest
<$> arbitrary -- arrayTestArrayOfString :: Maybe [Text]
<*> arbitrary -- arrayTestArrayArrayOfInteger :: Maybe [[Integer]]
<*> arbitrary -- arrayTestArrayArrayOfModel :: Maybe [[ReadOnlyFirst]]
instance Arbitrary Capitalization where
arbitrary =
Capitalization
<$> arbitrary -- capitalizationSmallCamel :: Maybe Text
<*> arbitrary -- capitalizationCapitalCamel :: Maybe Text
<*> arbitrary -- capitalizationSmallSnake :: Maybe Text
<*> arbitrary -- capitalizationCapitalSnake :: Maybe Text
<*> arbitrary -- capitalizationScaEthFlowPoints :: Maybe Text
<*> arbitrary -- capitalizationAttName :: Maybe Text
instance Arbitrary Category where
arbitrary =
Category
<$> arbitrary -- categoryId :: Maybe Integer
<*> arbitrary -- categoryName :: Maybe Text
<$> arbitrary -- categoryId :: Maybe Integer
<*> arbitrary -- categoryName :: Maybe Text
instance Arbitrary ClassModel where
arbitrary =
ClassModel
<$> arbitrary -- classModelClass :: Maybe Text
instance Arbitrary Client where
arbitrary =
Client
<$> arbitrary -- clientClient :: Maybe Text
instance Arbitrary EnumArrays where
arbitrary =
EnumArrays
<$> arbitrary -- enumArraysJustSymbol :: Maybe Text
<*> arbitrary -- enumArraysArrayEnum :: Maybe [Text]
instance Arbitrary EnumClass where
arbitrary =
pure EnumClass
instance Arbitrary EnumTest where
arbitrary =
EnumTest
<$> arbitrary -- enumTestEnumString :: Maybe Text
<*> arbitrary -- enumTestEnumInteger :: Maybe Int
<*> arbitrary -- enumTestEnumNumber :: Maybe Double
<*> arbitrary -- enumTestOuterEnum :: Maybe OuterEnum
instance Arbitrary FormatTest where
arbitrary =
FormatTest
<$> arbitrary -- formatTestInteger :: Maybe Int
<*> arbitrary -- formatTestInt32 :: Maybe Int
<*> arbitrary -- formatTestInt64 :: Maybe Integer
<*> arbitrary -- formatTestNumber :: Double
<*> arbitrary -- formatTestFloat :: Maybe Float
<*> arbitrary -- formatTestDouble :: Maybe Double
<*> arbitrary -- formatTestString :: Maybe Text
<*> arbitrary -- formatTestByte :: ByteArray
<*> arbitrary -- formatTestBinary :: Maybe Binary
<*> arbitrary -- formatTestDate :: Date
<*> arbitrary -- formatTestDateTime :: Maybe DateTime
<*> arbitrary -- formatTestUuid :: Maybe Text
<*> arbitrary -- formatTestPassword :: Text
instance Arbitrary HasOnlyReadOnly where
arbitrary =
HasOnlyReadOnly
<$> arbitrary -- hasOnlyReadOnlyBar :: Maybe Text
<*> arbitrary -- hasOnlyReadOnlyFoo :: Maybe Text
instance Arbitrary MapTest where
arbitrary =
MapTest
<$> arbitrary -- mapTestMapMapOfString :: Maybe (Map.Map String (Map.Map String Text))
<*> arbitrary -- mapTestMapOfEnumString :: Maybe (Map.Map String Text)
instance Arbitrary MixedPropertiesAndAdditionalPropertiesClass where
arbitrary =
MixedPropertiesAndAdditionalPropertiesClass
<$> arbitrary -- mixedPropertiesAndAdditionalPropertiesClassUuid :: Maybe Text
<*> arbitrary -- mixedPropertiesAndAdditionalPropertiesClassDateTime :: Maybe DateTime
<*> arbitrary -- mixedPropertiesAndAdditionalPropertiesClassMap :: Maybe (Map.Map String Animal)
instance Arbitrary Model200Response where
arbitrary =
Model200Response
<$> arbitrary -- model200ResponseName :: Maybe Int
<*> arbitrary -- model200ResponseClass :: Maybe Text
instance Arbitrary ModelList where
arbitrary =
ModelList
<$> arbitrary -- modelList123List :: Maybe Text
instance Arbitrary ModelReturn where
arbitrary =
ModelReturn
<$> arbitrary -- modelReturnReturn :: Maybe Int
instance Arbitrary Name where
arbitrary =
Name
<$> arbitrary -- nameName :: Int
<*> arbitrary -- nameSnakeCase :: Maybe Int
<*> arbitrary -- nameProperty :: Maybe Text
<*> arbitrary -- name123Number :: Maybe Int
instance Arbitrary NumberOnly where
arbitrary =
NumberOnly
<$> arbitrary -- numberOnlyJustNumber :: Maybe Double
instance Arbitrary Order where
arbitrary =
Order
<$> arbitrary -- orderId :: Maybe Integer
<*> arbitrary -- orderPetId :: Maybe Integer
<*> arbitrary -- orderQuantity :: Maybe Int
<*> arbitrary -- orderShipDate :: Maybe UTCTime
<*> arbitrary -- orderStatus :: Maybe Text
<*> arbitrary -- orderComplete :: Maybe Bool
<$> arbitrary -- orderId :: Maybe Integer
<*> arbitrary -- orderPetId :: Maybe Integer
<*> arbitrary -- orderQuantity :: Maybe Int
<*> arbitrary -- orderShipDate :: Maybe DateTime
<*> arbitrary -- orderStatus :: Maybe Text
<*> arbitrary -- orderComplete :: Maybe Bool
instance Arbitrary OuterBoolean where
arbitrary =
pure OuterBoolean
instance Arbitrary OuterComposite where
arbitrary =
OuterComposite
<$> arbitrary -- outerCompositeMyNumber :: Maybe OuterNumber
<*> arbitrary -- outerCompositeMyString :: Maybe OuterString
<*> arbitrary -- outerCompositeMyBoolean :: Maybe OuterBoolean
instance Arbitrary OuterEnum where
arbitrary =
pure OuterEnum
instance Arbitrary OuterNumber where
arbitrary =
pure OuterNumber
instance Arbitrary OuterString where
arbitrary =
pure OuterString
instance Arbitrary Pet where
arbitrary =
Pet
<$> arbitrary -- petId :: Maybe Integer
<*> arbitrary -- petCategory :: Maybe Category
<*> arbitrary -- petName :: Text
<*> arbitrary -- petPhotoUrls :: [Text]
<*> arbitrary -- petTags :: Maybe [Tag]
<*> arbitrary -- petStatus :: Maybe Text
<$> arbitrary -- petId :: Maybe Integer
<*> arbitrary -- petCategory :: Maybe Category
<*> arbitrary -- petName :: Text
<*> arbitrary -- petPhotoUrls :: [Text]
<*> arbitrary -- petTags :: Maybe [Tag]
<*> arbitrary -- petStatus :: Maybe Text
instance Arbitrary ReadOnlyFirst where
arbitrary =
ReadOnlyFirst
<$> arbitrary -- readOnlyFirstBar :: Maybe Text
<*> arbitrary -- readOnlyFirstBaz :: Maybe Text
instance Arbitrary SpecialModelName where
arbitrary =
SpecialModelName
<$> arbitrary -- specialModelNameSpecialPropertyName :: Maybe Integer
instance Arbitrary Tag where
arbitrary =
Tag
<$> arbitrary -- tagId :: Maybe Integer
<*> arbitrary -- tagName :: Maybe Text
<$> arbitrary -- tagId :: Maybe Integer
<*> arbitrary -- tagName :: Maybe Text
instance Arbitrary User where
arbitrary =
User
<$> arbitrary -- userId :: Maybe Integer
<*> arbitrary -- userUsername :: Maybe Text
<*> arbitrary -- userFirstName :: Maybe Text
<*> arbitrary -- userLastName :: Maybe Text
<*> arbitrary -- userEmail :: Maybe Text
<*> arbitrary -- userPassword :: Maybe Text
<*> arbitrary -- userPhone :: Maybe Text
<*> arbitrary -- userUserStatus :: Maybe Int
<$> arbitrary -- userId :: Maybe Integer
<*> arbitrary -- userUsername :: Maybe Text
<*> arbitrary -- userFirstName :: Maybe Text
<*> arbitrary -- userLastName :: Maybe Text
<*> arbitrary -- userEmail :: Maybe Text
<*> arbitrary -- userPassword :: Maybe Text
<*> arbitrary -- userPhone :: Maybe Text
<*> arbitrary -- userUserStatus :: Maybe Int
instance Arbitrary Cat where
arbitrary =
Cat
<$> arbitrary -- catClassName :: Text
<*> arbitrary -- catColor :: Maybe Text
<*> arbitrary -- catDeclawed :: Maybe Bool
instance Arbitrary Dog where
arbitrary =
Dog
<$> arbitrary -- dogClassName :: Text
<*> arbitrary -- dogColor :: Maybe Text
<*> arbitrary -- dogBreed :: Maybe Text

View File

@@ -19,10 +19,40 @@ main :: IO ()
main =
hspec $ modifyMaxSize (const 10) $
do describe "JSON instances" $
do propMimeEq MimeJSON (Proxy :: Proxy ApiResponse)
do propMimeEq MimeJSON (Proxy :: Proxy AdditionalPropertiesClass)
propMimeEq MimeJSON (Proxy :: Proxy Animal)
propMimeEq MimeJSON (Proxy :: Proxy AnimalFarm)
propMimeEq MimeJSON (Proxy :: Proxy ApiResponse)
propMimeEq MimeJSON (Proxy :: Proxy ArrayOfArrayOfNumberOnly)
propMimeEq MimeJSON (Proxy :: Proxy ArrayOfNumberOnly)
propMimeEq MimeJSON (Proxy :: Proxy ArrayTest)
propMimeEq MimeJSON (Proxy :: Proxy Capitalization)
propMimeEq MimeJSON (Proxy :: Proxy Category)
propMimeEq MimeJSON (Proxy :: Proxy ClassModel)
propMimeEq MimeJSON (Proxy :: Proxy Client)
propMimeEq MimeJSON (Proxy :: Proxy EnumArrays)
propMimeEq MimeJSON (Proxy :: Proxy EnumClass)
propMimeEq MimeJSON (Proxy :: Proxy EnumTest)
propMimeEq MimeJSON (Proxy :: Proxy FormatTest)
propMimeEq MimeJSON (Proxy :: Proxy HasOnlyReadOnly)
propMimeEq MimeJSON (Proxy :: Proxy MapTest)
propMimeEq MimeJSON (Proxy :: Proxy MixedPropertiesAndAdditionalPropertiesClass)
propMimeEq MimeJSON (Proxy :: Proxy Model200Response)
propMimeEq MimeJSON (Proxy :: Proxy ModelList)
propMimeEq MimeJSON (Proxy :: Proxy ModelReturn)
propMimeEq MimeJSON (Proxy :: Proxy Name)
propMimeEq MimeJSON (Proxy :: Proxy NumberOnly)
propMimeEq MimeJSON (Proxy :: Proxy Order)
propMimeEq MimeJSON (Proxy :: Proxy OuterBoolean)
propMimeEq MimeJSON (Proxy :: Proxy OuterComposite)
propMimeEq MimeJSON (Proxy :: Proxy OuterEnum)
propMimeEq MimeJSON (Proxy :: Proxy OuterNumber)
propMimeEq MimeJSON (Proxy :: Proxy OuterString)
propMimeEq MimeJSON (Proxy :: Proxy Pet)
propMimeEq MimeJSON (Proxy :: Proxy ReadOnlyFirst)
propMimeEq MimeJSON (Proxy :: Proxy SpecialModelName)
propMimeEq MimeJSON (Proxy :: Proxy Tag)
propMimeEq MimeJSON (Proxy :: Proxy User)
propMimeEq MimeJSON (Proxy :: Proxy Cat)
propMimeEq MimeJSON (Proxy :: Proxy Dog)