-- -- Minio Haskell SDK, (C) 2017 Minio, Inc. -- -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- module Network.Minio.XmlGenerator.Test ( xmlGeneratorTests ) where import Test.Tasty import Test.Tasty.HUnit import Lib.Prelude import Data.Default (def) import Network.Minio.Data import Network.Minio.XmlGenerator import Network.Minio.XmlParser (parseNotification) xmlGeneratorTests :: TestTree xmlGeneratorTests = testGroup "XML Generator Tests" [ testCase "Test mkCreateBucketConfig" testMkCreateBucketConfig , testCase "Test mkCompleteMultipartUploadRequest" testMkCompleteMultipartUploadRequest , testCase "Test mkPutNotificationRequest" testMkPutNotificationRequest ] testMkCreateBucketConfig :: Assertion testMkCreateBucketConfig = do assertEqual "CreateBucketConfiguration xml should match: " expected $ mkCreateBucketConfig "EU" where expected = "\ \\ \EU\ \" testMkCompleteMultipartUploadRequest :: Assertion testMkCompleteMultipartUploadRequest = assertEqual "completeMultipartUpload xml should match: " expected $ mkCompleteMultipartUploadRequest [(1, "abc")] where expected = "\ \\ \\ \1abc\ \\ \" testMkPutNotificationRequest :: Assertion testMkPutNotificationRequest = forM_ cases $ \val -> do let result = toS $ mkPutNotificationRequest val ntf <- runExceptT $ parseNotification result either (\_ -> assertFailure "XML Parse Error!") (@?= val) ntf where cases = [ Notification [] [ NotificationConfig "YjVkM2Y0YmUtNGI3NC00ZjQyLWEwNGItNDIyYWUxY2I0N2M4" "arn:aws:sns:us-east-1:account-id:s3notificationtopic2" [ReducedRedundancyLostObject, ObjectCreated] def ] [] , Notification [ NotificationConfig "1" "arn:aws:sqs:us-west-2:444455556666:s3notificationqueue" [ObjectCreatedPut] (Filter $ FilterKey $ FilterRules [ FilterRule "prefix" "images/" , FilterRule "suffix" ".jpg"]) , NotificationConfig "" "arn:aws:sqs:us-east-1:356671443308:s3notificationqueue" [ObjectCreated] def ] [ NotificationConfig "" "arn:aws:sns:us-east-1:356671443308:s3notificationtopic2" [ReducedRedundancyLostObject] def ] [ NotificationConfig "ObjectCreatedEvents" "arn:aws:lambda:us-west-2:35667example:function:CreateThumbnail" [ObjectCreated] def ] ]