diff options
| author | Eugen Wissner <belka@caraus.de> | 2020-09-11 08:03:49 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2020-09-11 08:03:49 +0200 |
| commit | 08998dbd935e65aab10ff53c249cb214af2522f2 (patch) | |
| tree | f5b502ce73ede2500dd0a508145b317e5f81b7fe /tests/Language/GraphQL/ValidateSpec.hs | |
| parent | c2c57b636392ae67a118ce5be04ad8f4b1304ed5 (diff) | |
| download | graphql-08998dbd935e65aab10ff53c249cb214af2522f2.tar.gz | |
Validate fragments don't form cycles
Diffstat (limited to 'tests/Language/GraphQL/ValidateSpec.hs')
| -rw-r--r-- | tests/Language/GraphQL/ValidateSpec.hs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/Language/GraphQL/ValidateSpec.hs b/tests/Language/GraphQL/ValidateSpec.hs index 10b6688..c6d8487 100644 --- a/tests/Language/GraphQL/ValidateSpec.hs +++ b/tests/Language/GraphQL/ValidateSpec.hs @@ -393,3 +393,37 @@ spec = , path = [] } in validate queryString `shouldBe` Seq.singleton expected + + it "rejects spreads that form cycles" $ + let queryString = [r| + { + dog { + ...nameFragment + } + } + fragment nameFragment on Dog { + name + ...barkVolumeFragment + } + fragment barkVolumeFragment on Dog { + barkVolume + ...nameFragment + } + |] + error1 = Error + { message = + "Cannot spread fragment \"barkVolumeFragment\" within \ + \itself (via barkVolumeFragment -> nameFragment -> \ + \barkVolumeFragment)." + , locations = [AST.Location 11 15] + , path = [] + } + error2 = Error + { message = + "Cannot spread fragment \"nameFragment\" within itself \ + \(via nameFragment -> barkVolumeFragment -> \ + \nameFragment)." + , locations = [AST.Location 7 15] + , path = [] + } + in validate queryString `shouldBe` Seq.fromList [error1, error2] |
