2
2
3
3
package com.apollographql.apollo.tooling
4
4
5
- import com.apollographql.mockserver.MockServer
6
- import com.apollographql.mockserver.enqueueString
7
5
import com.apollographql.apollo.testing.internal.runTest
8
6
import com.apollographql.apollo.testing.pathToUtf8
7
+ import com.apollographql.mockserver.MockServer
8
+ import com.apollographql.mockserver.enqueueString
9
9
import org.junit.Assert.assertEquals
10
10
import org.junit.Test
11
11
import java.io.File
@@ -22,7 +22,10 @@ private val introspectionRequestDraft = pathToUtf8("apollo-tooling/src/test/fixt
22
22
private val preIntrospectionResponseOneOf = pathToUtf8(" apollo-tooling/src/test/fixtures/pre-introspection-response-oneOf.json" )
23
23
private val introspectionRequestOneOf = pathToUtf8(" apollo-tooling/src/test/fixtures/introspection-request-oneOf.json" )
24
24
25
- private val introspectionResponse = pathToUtf8(" apollo-tooling/src/test/fixtures/introspection-response.json" )
25
+ private val introspectionRequestFailSafe = pathToUtf8(" apollo-tooling/src/test/fixtures/introspection-request-failSafe.json" )
26
+
27
+ private val introspectionResponseSuccess = pathToUtf8(" apollo-tooling/src/test/fixtures/introspection-response-success.json" )
28
+ private val introspectionResponseFail = pathToUtf8(" apollo-tooling/src/test/fixtures/introspection-response-fail.json" )
26
29
27
30
class SchemaDownloaderTests {
28
31
private lateinit var mockServer: MockServer
@@ -41,7 +44,7 @@ class SchemaDownloaderTests {
41
44
@Test
42
45
fun `schema is downloaded correctly when server supports June 2018 spec` () = runTest(before = { setUp() }, after = { tearDown() }) {
43
46
mockServer.enqueueString(preIntrospectionResponseJune2018)
44
- mockServer.enqueueString(introspectionResponse )
47
+ mockServer.enqueueString(introspectionResponseSuccess )
45
48
46
49
SchemaDownloader .download(
47
50
endpoint = mockServer.url(),
@@ -54,13 +57,13 @@ class SchemaDownloaderTests {
54
57
mockServer.takeRequest()
55
58
val introspectionRequest = mockServer.takeRequest().body.utf8()
56
59
assertEquals(introspectionRequestJune2018, introspectionRequest)
57
- assertEquals(introspectionResponse , tempFile.readText())
60
+ assertEquals(introspectionResponseSuccess , tempFile.readText())
58
61
}
59
62
60
63
@Test
61
64
fun `schema is downloaded correctly when server supports October 2021 spec` () = runTest(before = { setUp() }, after = { tearDown() }) {
62
65
mockServer.enqueueString(preIntrospectionResponseOctober2021)
63
- mockServer.enqueueString(introspectionResponse )
66
+ mockServer.enqueueString(introspectionResponseSuccess )
64
67
65
68
SchemaDownloader .download(
66
69
endpoint = mockServer.url(),
@@ -73,13 +76,13 @@ class SchemaDownloaderTests {
73
76
mockServer.takeRequest()
74
77
val introspectionRequest = mockServer.takeRequest().body.utf8()
75
78
assertEquals(introspectionRequestOctober2021, introspectionRequest)
76
- assertEquals(introspectionResponse , tempFile.readText())
79
+ assertEquals(introspectionResponseSuccess , tempFile.readText())
77
80
}
78
81
79
82
@Test
80
83
fun `schema is downloaded correctly when server supports Draft spec as of 2023-11-15` () = runTest(before = { setUp() }, after = { tearDown() }) {
81
84
mockServer.enqueueString(preIntrospectionResponseDraft)
82
- mockServer.enqueueString(introspectionResponse )
85
+ mockServer.enqueueString(introspectionResponseSuccess )
83
86
84
87
SchemaDownloader .download(
85
88
endpoint = mockServer.url(),
@@ -92,13 +95,13 @@ class SchemaDownloaderTests {
92
95
mockServer.takeRequest()
93
96
val introspectionRequest = mockServer.takeRequest().body.utf8()
94
97
assertEquals(introspectionRequestDraft, introspectionRequest)
95
- assertEquals(introspectionResponse , tempFile.readText())
98
+ assertEquals(introspectionResponseSuccess , tempFile.readText())
96
99
}
97
100
98
101
@Test
99
102
fun `schema is downloaded correctly when server supports oneOf` () = runTest(before = { setUp() }, after = { tearDown() }) {
100
103
mockServer.enqueueString(preIntrospectionResponseOneOf)
101
- mockServer.enqueueString(introspectionResponse )
104
+ mockServer.enqueueString(introspectionResponseSuccess )
102
105
103
106
SchemaDownloader .download(
104
107
endpoint = mockServer.url(),
@@ -111,6 +114,28 @@ class SchemaDownloaderTests {
111
114
mockServer.takeRequest()
112
115
val introspectionRequest = mockServer.takeRequest().body.utf8()
113
116
assertEquals(introspectionRequestOneOf, introspectionRequest)
114
- assertEquals(introspectionResponse, tempFile.readText())
117
+ assertEquals(introspectionResponseSuccess, tempFile.readText())
118
+ }
119
+
120
+ @Test
121
+ fun `schema is downloaded correctly in fail-safe mode after 2-step fails` () = runTest(before = { setUp() }, after = { tearDown() }) {
122
+ mockServer.enqueueString(preIntrospectionResponseDraft)
123
+ mockServer.enqueueString(introspectionResponseFail)
124
+ mockServer.enqueueString(introspectionResponseSuccess)
125
+
126
+ SchemaDownloader .download(
127
+ endpoint = mockServer.url(),
128
+ graph = null ,
129
+ key = null ,
130
+ graphVariant = " " ,
131
+ schema = tempFile,
132
+ )
133
+
134
+ mockServer.takeRequest()
135
+ mockServer.takeRequest()
136
+ val introspectionRequest = mockServer.takeRequest().body.utf8()
137
+ assertEquals(introspectionRequestFailSafe, introspectionRequest)
138
+ assertEquals(introspectionResponseSuccess, tempFile.readText())
115
139
}
140
+
116
141
}
0 commit comments