@@ -22,6 +22,7 @@ import assertk.assertions.containsExactlyInAnyOrder
22
22
import assertk.assertions.hasMessage
23
23
import assertk.assertions.isEqualTo
24
24
import assertk.assertions.isInstanceOf
25
+ import assertk.assertions.isNull
25
26
import java.io.EOFException
26
27
import java.io.File
27
28
import java.io.IOException
@@ -191,7 +192,6 @@ class DnsOverHttpsTest {
191
192
// 3. successful network response
192
193
// 4. successful stale cached GET response
193
194
// 5. unsuccessful response
194
- // TODO how closely to follow POST rules on caching?
195
195
@Test
196
196
fun usesCache () {
197
197
val cache = Cache (" cache" .toPath(), (100 * 1024 ).toLong(), cacheFs)
@@ -207,14 +207,33 @@ class DnsOverHttpsTest {
207
207
.setHeader(" cache-control" , " private, max-age=298" )
208
208
.build(),
209
209
)
210
+ server.enqueue(
211
+ dnsResponse(
212
+ " 0000818000010003000000000567726170680866616365626f6f6b03636f6d0000010001c00c000500010" +
213
+ " 0000a6d000603617069c012c0300005000100000cde000c04737461720463313072c012c04200010001000" +
214
+ " 0003b00049df00112" ,
215
+ )
216
+ .newBuilder()
217
+ .setHeader(" cache-control" , " private, max-age=298" )
218
+ .build(),
219
+ )
210
220
var result = cachedDns.lookup(" google.com" )
211
221
assertThat(result).containsExactly(address(" 157.240.1.18" ))
212
- val recordedRequest = server.takeRequest()
222
+ var recordedRequest = server.takeRequest()
213
223
assertThat(recordedRequest.method).isEqualTo(" GET" )
214
224
assertThat(recordedRequest.path)
215
225
.isEqualTo(" /lookup?ct&dns=AAABAAABAAAAAAAABmdvb2dsZQNjb20AAAEAAQ" )
226
+
216
227
result = cachedDns.lookup(" google.com" )
228
+ assertThat(server.takeRequest(1 , TimeUnit .MILLISECONDS )).isNull()
217
229
assertThat(result).isEqualTo(listOf (address(" 157.240.1.18" )))
230
+
231
+ result = cachedDns.lookup(" www.google.com" )
232
+ assertThat(result).containsExactly(address(" 157.240.1.18" ))
233
+ recordedRequest = server.takeRequest()
234
+ assertThat(recordedRequest.method).isEqualTo(" GET" )
235
+ assertThat(recordedRequest.path)
236
+ .isEqualTo(" /lookup?ct&dns=AAABAAABAAAAAAAAA3d3dwZnb29nbGUDY29tAAABAAE" )
218
237
}
219
238
220
239
@Test
@@ -232,14 +251,44 @@ class DnsOverHttpsTest {
232
251
.setHeader(" cache-control" , " private, max-age=298" )
233
252
.build(),
234
253
)
254
+ server.enqueue(
255
+ dnsResponse(
256
+ " 0000818000010003000000000567726170680866616365626f6f6b03636f6d0000010001c00c000500010" +
257
+ " 0000a6d000603617069c012c0300005000100000cde000c04737461720463313072c012c04200010001000" +
258
+ " 0003b00049df00112" ,
259
+ )
260
+ .newBuilder()
261
+ .setHeader(" cache-control" , " private, max-age=298" )
262
+ .build(),
263
+ )
264
+ server.enqueue(
265
+ dnsResponse(
266
+ " 0000818000010003000000000567726170680866616365626f6f6b03636f6d0000010001c00c000500010" +
267
+ " 0000a6d000603617069c012c0300005000100000cde000c04737461720463313072c012c04200010001000" +
268
+ " 0003b00049df00112" ,
269
+ )
270
+ .newBuilder()
271
+ .setHeader(" cache-control" , " private, max-age=298" )
272
+ .build(),
273
+ )
274
+
235
275
var result = cachedDns.lookup(" google.com" )
236
276
assertThat(result).containsExactly(address(" 157.240.1.18" ))
237
- val recordedRequest = server.takeRequest()
277
+ var recordedRequest = server.takeRequest()
238
278
assertThat(recordedRequest.method).isEqualTo(" POST" )
239
279
assertThat(recordedRequest.path)
240
280
.isEqualTo(" /lookup?ct" )
281
+
241
282
result = cachedDns.lookup(" google.com" )
283
+ assertThat(server.takeRequest(0 , TimeUnit .MILLISECONDS )).isNull()
242
284
assertThat(result).isEqualTo(listOf (address(" 157.240.1.18" )))
285
+
286
+ result = cachedDns.lookup(" www.google.com" )
287
+ assertThat(result).containsExactly(address(" 157.240.1.18" ))
288
+ recordedRequest = server.takeRequest(0 , TimeUnit .MILLISECONDS )!!
289
+ assertThat(recordedRequest.method).isEqualTo(" POST" )
290
+ assertThat(recordedRequest.path)
291
+ .isEqualTo(" /lookup?ct" )
243
292
}
244
293
245
294
@Test
0 commit comments