diff --git a/server/lib/api-tests/src/Test/DataConnector/MockAgent/AggregateQuerySpec.hs b/server/lib/api-tests/src/Test/DataConnector/MockAgent/AggregateQuerySpec.hs index f1838b80c9e..c216cba13d6 100644 --- a/server/lib/api-tests/src/Test/DataConnector/MockAgent/AggregateQuerySpec.hs +++ b/server/lib/api-tests/src/Test/DataConnector/MockAgent/AggregateQuerySpec.hs @@ -7,7 +7,7 @@ module Test.DataConnector.MockAgent.AggregateQuerySpec (spec) where import Data.Aeson qualified as Aeson import Data.HashMap.Strict qualified as HashMap import Data.List.NonEmpty qualified as NE -import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentTest, mockQueryResponse) +import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentGraphqlTest, mockQueryResponse) import Harness.Backend.DataConnector.Mock qualified as Mock import Harness.Quoter.Graphql (graphql) import Harness.Quoter.Yaml (yaml) @@ -85,7 +85,7 @@ sourceMetadata = tests :: Fixture.Options -> SpecWith (TestEnvironment, Mock.MockAgentEnvironment) tests _opts = describe "Aggregate Query Tests" $ do - mockAgentTest "works with multiple nodes fields and through array relations" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with multiple nodes fields and through array relations" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -124,7 +124,7 @@ tests _opts = describe "Aggregate Query Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: Artist_aggregate: @@ -194,7 +194,7 @@ tests _opts = describe "Aggregate Query Tests" $ do } ) - mockAgentTest "works with multiple aggregate fields and through array relations" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with multiple aggregate fields and through array relations" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -248,7 +248,7 @@ tests _opts = describe "Aggregate Query Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: Invoice_aggregate: diff --git a/server/lib/api-tests/src/Test/DataConnector/MockAgent/BasicQuerySpec.hs b/server/lib/api-tests/src/Test/DataConnector/MockAgent/BasicQuerySpec.hs index dd9be4e80d5..046602707f1 100644 --- a/server/lib/api-tests/src/Test/DataConnector/MockAgent/BasicQuerySpec.hs +++ b/server/lib/api-tests/src/Test/DataConnector/MockAgent/BasicQuerySpec.hs @@ -10,7 +10,7 @@ import Data.Aeson qualified as Aeson import Data.ByteString (ByteString) import Data.HashMap.Strict qualified as HashMap import Data.List.NonEmpty qualified as NE -import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentTest, mockQueryResponse) +import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentGraphqlTest, mockQueryResponse) import Harness.Backend.DataConnector.Mock qualified as Mock import Harness.Quoter.Graphql (graphql) import Harness.Quoter.Yaml (yaml) @@ -106,7 +106,7 @@ sourceMetadata = tests :: Fixture.Options -> SpecWith (TestEnvironment, Mock.MockAgentEnvironment) tests _opts = describe "Basic Tests" $ do - mockAgentTest "works with simple object query" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with simple object query" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -127,7 +127,7 @@ tests _opts = describe "Basic Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: albums: @@ -158,7 +158,7 @@ tests _opts = describe "Basic Tests" $ do } ) - mockAgentTest "works with order_by id" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with order_by id" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -185,7 +185,7 @@ tests _opts = describe "Basic Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: albums: @@ -220,7 +220,7 @@ tests _opts = describe "Basic Tests" $ do } ) - mockAgentTest "works with an exists-based permissions filter" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with an exists-based permissions filter" $ \performGraphqlRequest -> do let headers = [ ("X-Hasura-Role", testRoleName), ("X-Hasura-EmployeeId", "1") @@ -246,7 +246,7 @@ tests _opts = describe "Basic Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: Customer: diff --git a/server/lib/api-tests/src/Test/DataConnector/MockAgent/CustomScalarsSpec.hs b/server/lib/api-tests/src/Test/DataConnector/MockAgent/CustomScalarsSpec.hs index 6cb9321a8f8..be9c2a4d746 100644 --- a/server/lib/api-tests/src/Test/DataConnector/MockAgent/CustomScalarsSpec.hs +++ b/server/lib/api-tests/src/Test/DataConnector/MockAgent/CustomScalarsSpec.hs @@ -9,7 +9,7 @@ module Test.DataConnector.MockAgent.CustomScalarsSpec (spec) where import Data.Aeson qualified as Aeson import Data.HashMap.Strict qualified as HashMap import Data.List.NonEmpty qualified as NE -import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentTest, mockQueryResponse) +import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentGraphqlTest, mockQueryResponse) import Harness.Backend.DataConnector.Mock qualified as Mock import Harness.Quoter.Graphql (graphql) import Harness.Quoter.Yaml (yaml) @@ -52,7 +52,7 @@ sourceMetadata = tests :: Fixture.Options -> SpecWith (TestEnvironment, Mock.MockAgentEnvironment) tests _opts = describe "Custom scalar parsing tests" $ do - mockAgentTest "works with simple object query" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with simple object query" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -71,7 +71,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: MyCustomScalarsTable: @@ -110,7 +110,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do } ) - mockAgentTest "parses scalar literals in where queries" \performGraphqlRequest -> do + mockAgentGraphqlTest "parses scalar literals in where queries" \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -136,7 +136,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: MyCustomScalarsTable: @@ -202,7 +202,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do } ) - mockAgentTest "fails parsing float when expecting int" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing float when expecting int" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -218,7 +218,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -229,7 +229,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing string when expecting int" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing string when expecting int" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -245,7 +245,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -256,7 +256,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing boolean when expecting int" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing boolean when expecting int" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -272,7 +272,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -283,7 +283,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "succeeds parsing int when expecting float" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "succeeds parsing int when expecting float" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -299,14 +299,14 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: MyCustomScalarsTable: - MyIntColumn: 42 |] - mockAgentTest "fails parsing string when expecting float" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing string when expecting float" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -322,7 +322,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -333,7 +333,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing boolean when expecting float" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing boolean when expecting float" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -349,7 +349,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -360,7 +360,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing int when expecting string" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing int when expecting string" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -376,7 +376,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -387,7 +387,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing float when expecting string" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing float when expecting string" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -403,7 +403,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -414,7 +414,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing boolean when expecting string" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing boolean when expecting string" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -430,7 +430,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -441,7 +441,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing int when expecting boolean" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing int when expecting boolean" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -457,7 +457,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -468,7 +468,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing float when expecting boolean" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing float when expecting boolean" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -484,7 +484,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -495,7 +495,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing string when expecting boolean" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing string when expecting boolean" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -511,7 +511,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -522,7 +522,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "succeeds parsing int when expecting ID" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "succeeds parsing int when expecting ID" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -538,14 +538,14 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: MyCustomScalarsTable: - MyIntColumn: 42 |] - mockAgentTest "fails parsing float when expecting ID" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing float when expecting ID" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -561,7 +561,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -572,7 +572,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "fails parsing boolean when expecting ID" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "fails parsing boolean when expecting ID" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -588,7 +588,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - extensions: @@ -599,7 +599,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do _mrrRecordedRequest `shouldBe` Nothing - mockAgentTest "succeeds parsing int when expecting anything" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "succeeds parsing int when expecting anything" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -615,14 +615,14 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: MyCustomScalarsTable: - MyIntColumn: 42 |] - mockAgentTest "succeeds parsing float when expecting anything" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "succeeds parsing float when expecting anything" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -638,14 +638,14 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: MyCustomScalarsTable: - MyIntColumn: 42 |] - mockAgentTest "succeeds parsing string when expecting anything" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "succeeds parsing string when expecting anything" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -661,14 +661,14 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: MyCustomScalarsTable: - MyIntColumn: 42 |] - mockAgentTest "succeeds parsing boolean when expecting anything" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "succeeds parsing boolean when expecting anything" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -684,14 +684,14 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: MyCustomScalarsTable: - MyIntColumn: 42 |] - mockAgentTest "succeeds parsing array when expecting anything" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "succeeds parsing array when expecting anything" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -707,7 +707,7 @@ tests _opts = describe "Custom scalar parsing tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: MyCustomScalarsTable: diff --git a/server/lib/api-tests/src/Test/DataConnector/MockAgent/ErrorSpec.hs b/server/lib/api-tests/src/Test/DataConnector/MockAgent/ErrorSpec.hs index ce11e77ad7a..0aed3fcdbb4 100644 --- a/server/lib/api-tests/src/Test/DataConnector/MockAgent/ErrorSpec.hs +++ b/server/lib/api-tests/src/Test/DataConnector/MockAgent/ErrorSpec.hs @@ -9,7 +9,7 @@ module Test.DataConnector.MockAgent.ErrorSpec (spec) where import Data.Aeson qualified as Aeson import Data.HashMap.Strict qualified as HashMap import Data.List.NonEmpty qualified as NE -import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentTest) +import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentGraphqlTest) import Harness.Backend.DataConnector.Mock qualified as Mock import Harness.Quoter.Graphql (graphql) import Harness.Quoter.Yaml (yaml) @@ -61,7 +61,7 @@ sourceMetadata = tests :: Fixture.Options -> SpecWith (TestEnvironment, Mock.MockAgentEnvironment) tests _opts = describe "Error Protocol Tests" $ do - mockAgentTest "handles returned errors correctly" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "handles returned errors correctly" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -77,7 +77,7 @@ tests _opts = describe "Error Protocol Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| errors: - diff --git a/server/lib/api-tests/src/Test/DataConnector/MockAgent/InsertMutationsSpec.hs b/server/lib/api-tests/src/Test/DataConnector/MockAgent/InsertMutationsSpec.hs index d56172a212e..1dd47713d5b 100644 --- a/server/lib/api-tests/src/Test/DataConnector/MockAgent/InsertMutationsSpec.hs +++ b/server/lib/api-tests/src/Test/DataConnector/MockAgent/InsertMutationsSpec.hs @@ -7,7 +7,7 @@ import Data.Aeson qualified as Aeson import Data.ByteString (ByteString) import Data.HashMap.Strict qualified as HashMap import Data.List.NonEmpty qualified as NE -import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentTest, mockMutationResponse) +import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentGraphqlTest, mockMutationResponse) import Harness.Backend.DataConnector.Mock qualified as Mock import Harness.Quoter.Graphql (graphql) import Harness.Quoter.Yaml (yaml) @@ -89,7 +89,7 @@ sourceMetadata = tests :: Fixture.Options -> SpecWith (TestEnvironment, Mock.MockAgentEnvironment) tests _opts = do - mockAgentTest "insert multiple rows with insert permissions" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "insert multiple rows with insert permissions" $ \performGraphqlRequest -> do let headers = [("X-Hasura-ArtistId", "2"), ("X-Hasura-Role", testRoleName)] let graphqlRequest = [graphql| @@ -147,7 +147,7 @@ tests _opts = do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: insert_Album: diff --git a/server/lib/api-tests/src/Test/DataConnector/MockAgent/MetadataApiSpec.hs b/server/lib/api-tests/src/Test/DataConnector/MockAgent/MetadataApiSpec.hs index 3a4f6638e72..882e4ac4057 100644 --- a/server/lib/api-tests/src/Test/DataConnector/MockAgent/MetadataApiSpec.hs +++ b/server/lib/api-tests/src/Test/DataConnector/MockAgent/MetadataApiSpec.hs @@ -8,20 +8,18 @@ module Test.DataConnector.MockAgent.MetadataApiSpec where -------------------------------------------------------------------------------- import Data.Aeson qualified as Aeson -import Data.Aeson.KeyMap qualified as KM -import Data.IORef qualified as IORef +import Data.Aeson.Lens (_Array) import Data.List.NonEmpty qualified as NE import Data.Vector qualified as Vector +import Harness.Backend.DataConnector.Mock (MockRequestResults (..), mockAgentMetadataTest) import Harness.Backend.DataConnector.Mock qualified as Mock -import Harness.GraphqlEngine qualified as GraphqlEngine import Harness.Quoter.Yaml (yaml) import Harness.Test.BackendType qualified as BackendType import Harness.Test.Fixture qualified as Fixture import Harness.TestEnvironment (GlobalTestEnvironment, TestEnvironment, getBackendTypeConfig) -import Harness.Yaml (shouldReturnYamlF) -import Hasura.Backends.DataConnector.API.V0.ConfigSchema (Config (..)) import Hasura.Prelude -import Test.Hspec (SpecWith, describe, it, pendingWith, shouldBe) +import Test.HUnit (assertFailure) +import Test.Hspec (SpecWith, describe, shouldBe) -------------------------------------------------------------------------------- @@ -57,41 +55,41 @@ sourceMetadata = -------------------------------------------------------------------------------- tests :: Fixture.Options -> SpecWith (TestEnvironment, Mock.MockAgentEnvironment) -tests opts = do +tests _opts = do describe "MetadataAPI Mock Tests" $ do - it "Should peform a template transform when calling _get_source_tables" $ \(testEnvironment, Mock.MockAgentEnvironment {maeRecordedRequestConfig}) -> do - let sortYamlArray :: Aeson.Value -> IO Aeson.Value - sortYamlArray (Aeson.Array a) = pure $ Aeson.Array (Vector.fromList (sort (Vector.toList a))) - sortYamlArray _ = fail "Should return Array" + mockAgentMetadataTest "Should perform a template transform when calling get_source_tables" $ \testEnvironment performMetadataRequest -> do + sourceString <- + BackendType.backendSourceName + <$> getBackendTypeConfig testEnvironment + `onNothing` assertFailure "Backend source name not found in test environment" - case BackendType.backendSourceName <$> getBackendTypeConfig testEnvironment of - Nothing -> pendingWith "Backend not found for testEnvironment" - Just sourceString -> do - queryConfig <- IORef.readIORef maeRecordedRequestConfig - IORef.writeIORef maeRecordedRequestConfig Nothing - - queryConfig `shouldBe` Just (Config $ KM.fromList [("DEBUG", Aeson.Object (KM.fromList [("test", Aeson.String "data")]))]) - - shouldReturnYamlF - sortYamlArray - opts - ( GraphqlEngine.postMetadata - testEnvironment - [yaml| - type: get_source_tables - args: - source: *sourceString - |] - ) + let request = [yaml| - - - Album - - - Artist - - - Customer - - - Employee - - - Genre - - - Invoice - - - InvoiceLine - - - MediaType - - - MyCustomScalarsTable - - - Track + type: get_source_tables + args: + source: *sourceString |] + + MockRequestResults {..} <- performMetadataRequest Mock.chinookMock request + + Aeson.toJSON _mrrRecordedRequestConfig + `shouldBe` [yaml| + DEBUG: + test: data + |] + + -- The order of the results can be arbitrary, so we sort to produce a consistent view + let sortedResponse = _mrrResponse & _Array %~ (Vector.fromList . sort . Vector.toList) + sortedResponse + `shouldBe` [yaml| + - - Album + - - Artist + - - Customer + - - Employee + - - Genre + - - Invoice + - - InvoiceLine + - - MediaType + - - MyCustomScalarsTable + - - Track + |] diff --git a/server/lib/api-tests/src/Test/DataConnector/MockAgent/QueryRelationshipsSpec.hs b/server/lib/api-tests/src/Test/DataConnector/MockAgent/QueryRelationshipsSpec.hs index 928606235c7..75d611580ff 100644 --- a/server/lib/api-tests/src/Test/DataConnector/MockAgent/QueryRelationshipsSpec.hs +++ b/server/lib/api-tests/src/Test/DataConnector/MockAgent/QueryRelationshipsSpec.hs @@ -9,7 +9,7 @@ import Data.Aeson qualified as Aeson import Data.ByteString (ByteString) import Data.HashMap.Strict qualified as HashMap import Data.List.NonEmpty qualified as NE -import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentTest, mockQueryResponse) +import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentGraphqlTest, mockQueryResponse) import Harness.Backend.DataConnector.Mock qualified as Mock import Harness.Quoter.Graphql (graphql) import Harness.Quoter.Yaml (yaml) @@ -128,7 +128,7 @@ sourceMetadata = tests :: Fixture.Options -> SpecWith (TestEnvironment, Mock.MockAgentEnvironment) tests _opts = describe "Object Relationships Tests" $ do - mockAgentTest "works with multiple object relationships" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with multiple object relationships" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -165,7 +165,7 @@ tests _opts = describe "Object Relationships Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: Track: @@ -257,7 +257,7 @@ tests _opts = describe "Object Relationships Tests" $ do } ) - mockAgentTest "works with an order by that navigates relationships" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with an order by that navigates relationships" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -292,7 +292,7 @@ tests _opts = describe "Object Relationships Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: Track: @@ -408,7 +408,7 @@ tests _opts = describe "Object Relationships Tests" $ do } ) - mockAgentTest "works with an order by that navigates a relationship with table permissions" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with an order by that navigates a relationship with table permissions" $ \performGraphqlRequest -> do let headers = [("X-Hasura-Role", testRoleName)] let graphqlRequest = [graphql| @@ -427,7 +427,7 @@ tests _opts = describe "Object Relationships Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: Employee: diff --git a/server/lib/api-tests/src/Test/DataConnector/MockAgent/TransformedConfigurationSpec.hs b/server/lib/api-tests/src/Test/DataConnector/MockAgent/TransformedConfigurationSpec.hs index 391e52c783f..b989cd6352f 100644 --- a/server/lib/api-tests/src/Test/DataConnector/MockAgent/TransformedConfigurationSpec.hs +++ b/server/lib/api-tests/src/Test/DataConnector/MockAgent/TransformedConfigurationSpec.hs @@ -8,7 +8,7 @@ module Test.DataConnector.MockAgent.TransformedConfigurationSpec (spec) where import Data.Aeson qualified as Aeson import Data.HashMap.Strict qualified as HashMap import Data.List.NonEmpty qualified as NE -import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentTest, mockQueryResponse) +import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentGraphqlTest, mockQueryResponse) import Harness.Backend.DataConnector.Mock qualified as Mock import Harness.Quoter.Graphql (graphql) import Harness.Quoter.Yaml (yaml) @@ -101,7 +101,7 @@ sourceMetadata = tests :: Fixture.Options -> SpecWith (TestEnvironment, Mock.MockAgentEnvironment) tests _opts = describe "Transformed Configuration Tests" $ do - mockAgentTest "works with configuration transformation Kriti template" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "works with configuration transformation Kriti template" $ \performGraphqlRequest -> do let headers = [] let graphqlRequest = [graphql| @@ -122,7 +122,7 @@ tests _opts = describe "Transformed Configuration Tests" $ do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: albums: diff --git a/server/lib/api-tests/src/Test/DataConnector/MockAgent/UpdateMutationsSpec.hs b/server/lib/api-tests/src/Test/DataConnector/MockAgent/UpdateMutationsSpec.hs index cc73b623787..fbc6975bc3e 100644 --- a/server/lib/api-tests/src/Test/DataConnector/MockAgent/UpdateMutationsSpec.hs +++ b/server/lib/api-tests/src/Test/DataConnector/MockAgent/UpdateMutationsSpec.hs @@ -7,7 +7,7 @@ import Data.Aeson qualified as Aeson import Data.ByteString (ByteString) import Data.HashMap.Strict qualified as HashMap import Data.List.NonEmpty qualified as NE -import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentTest, mockMutationResponse) +import Harness.Backend.DataConnector.Mock (AgentRequest (..), MockRequestResults (..), mockAgentGraphqlTest, mockMutationResponse) import Harness.Backend.DataConnector.Mock qualified as Mock import Harness.Quoter.Graphql (graphql) import Harness.Quoter.Yaml (yaml) @@ -104,7 +104,7 @@ sourceMetadata = tests :: Fixture.Options -> SpecWith (TestEnvironment, Mock.MockAgentEnvironment) tests _opts = do - mockAgentTest "update rows with update permissions" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "update rows with update permissions" $ \performGraphqlRequest -> do let headers = [("X-Hasura-AlbumId", "3"), ("X-Hasura-Role", testRoleName)] let graphqlRequest = [graphql| @@ -167,7 +167,7 @@ tests _opts = do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: update_Track: @@ -275,7 +275,7 @@ tests _opts = do } _mrrRecordedRequest `shouldBe` Just (Mutation expectedRequest) - mockAgentTest "update_many rows with update permissions" $ \performGraphqlRequest -> do + mockAgentGraphqlTest "update_many rows with update permissions" $ \performGraphqlRequest -> do let headers = [("X-Hasura-AlbumId", "3"), ("X-Hasura-Role", testRoleName)] let graphqlRequest = [graphql| @@ -347,7 +347,7 @@ tests _opts = do MockRequestResults {..} <- performGraphqlRequest mockConfig headers graphqlRequest - _mrrGraphqlResponse + _mrrResponse `shouldBeYaml` [yaml| data: update_Track_many: diff --git a/server/lib/test-harness/src/Harness/Backend/DataConnector/Mock.hs b/server/lib/test-harness/src/Harness/Backend/DataConnector/Mock.hs index 8391cbb973c..9a06e11e952 100644 --- a/server/lib/test-harness/src/Harness/Backend/DataConnector/Mock.hs +++ b/server/lib/test-harness/src/Harness/Backend/DataConnector/Mock.hs @@ -19,7 +19,8 @@ module Harness.Backend.DataConnector.Mock MockRequestResults (..), mockQueryResponse, mockMutationResponse, - mockAgentTest, + mockAgentGraphqlTest, + mockAgentMetadataTest, ) where @@ -145,7 +146,7 @@ mkLocalTestEnvironment _ = mkTestResource do } data MockRequestResults = MockRequestResults - { _mrrGraphqlResponse :: Aeson.Value, + { _mrrResponse :: Aeson.Value, _mrrRecordedRequest :: Maybe AgentRequest, _mrrRecordedRequestConfig :: Maybe API.Config } @@ -158,12 +159,20 @@ mockMutationResponse :: API.MutationResponse -> MockConfig -> MockConfig mockMutationResponse mutationResponse mockConfig = mockConfig {_mutationResponse = \_ -> Right mutationResponse} -mockAgentTest :: HasCallStack => String -> ((MockConfig -> RequestHeaders -> Aeson.Value -> IO MockRequestResults) -> Expectation) -> SpecWith (Arg ((TestEnvironment, MockAgentEnvironment) -> Expectation)) -mockAgentTest name testBody = - it name $ \env -> testBody (postMockAgentGraphqlWithHeaders env) +mockAgentGraphqlTest :: HasCallStack => String -> ((MockConfig -> RequestHeaders -> Aeson.Value -> IO MockRequestResults) -> Expectation) -> SpecWith (Arg ((TestEnvironment, MockAgentEnvironment) -> Expectation)) +mockAgentGraphqlTest name testBody = + it name $ \(env, agentEnv) -> + let performGraphqlRequest mockConfig requestHeaders graphqlRequest = performRecordedRequest agentEnv mockConfig (GraphqlEngine.postGraphqlWithHeaders env requestHeaders graphqlRequest) + in testBody performGraphqlRequest -postMockAgentGraphqlWithHeaders :: HasCallStack => (TestEnvironment, MockAgentEnvironment) -> MockConfig -> RequestHeaders -> Aeson.Value -> IO MockRequestResults -postMockAgentGraphqlWithHeaders (testEnvironment, MockAgentEnvironment {..}) mockConfig requestHeaders graphqlRequest = do +mockAgentMetadataTest :: HasCallStack => String -> (TestEnvironment -> (MockConfig -> Aeson.Value -> IO MockRequestResults) -> Expectation) -> SpecWith (Arg ((TestEnvironment, MockAgentEnvironment) -> Expectation)) +mockAgentMetadataTest name testBody = + it name $ \(env, agentEnv) -> + let performMetadataRequest mockConfig metadataRequest = performRecordedRequest agentEnv mockConfig (GraphqlEngine.postMetadata env metadataRequest) + in testBody env performMetadataRequest + +performRecordedRequest :: HasCallStack => MockAgentEnvironment -> MockConfig -> IO Aeson.Value -> IO MockRequestResults +performRecordedRequest MockAgentEnvironment {..} mockConfig performRequest = do -- Set the Agent with the 'MockConfig' I.writeIORef maeConfig mockConfig @@ -172,10 +181,10 @@ postMockAgentGraphqlWithHeaders (testEnvironment, MockAgentEnvironment {..}) moc I.writeIORef maeRecordedRequestConfig Nothing -- Perform GraphQL request - graphqlResponse <- GraphqlEngine.postGraphqlWithHeaders testEnvironment requestHeaders graphqlRequest + response <- performRequest -- Capture recordings recordedRequest <- I.readIORef maeRecordedRequest recordedRequestConfig <- I.readIORef maeRecordedRequestConfig - pure $ MockRequestResults graphqlResponse recordedRequest recordedRequestConfig + pure $ MockRequestResults response recordedRequest recordedRequestConfig