Skip to content

Commit 2cb8736

Browse files
committed
add tests
1 parent d01fbaf commit 2cb8736

File tree

1 file changed

+157
-0
lines changed

1 file changed

+157
-0
lines changed

java/test/org/openqa/selenium/bidi/network/NetworkCommandsTest.java

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.time.Duration;
2626
import java.time.temporal.ChronoUnit;
2727
import java.util.Collections;
28+
import java.util.List;
2829
import java.util.concurrent.CountDownLatch;
2930
import java.util.concurrent.TimeUnit;
3031
import java.util.concurrent.atomic.AtomicInteger;
@@ -353,4 +354,160 @@ void throwsExceptionForInvalidContext() {
353354
.hasMessageContaining("no such frame");
354355
}
355356
}
357+
358+
@Test
359+
@NeedsFreshDriver
360+
void canAddDataCollector() {
361+
try (Network network = new Network(driver)) {
362+
AddDataCollectorParameters parameters =
363+
new AddDataCollectorParameters(List.of(DataType.RESPONSE), 1024);
364+
365+
String collector = network.addDataCollector(parameters);
366+
assertThat(collector).isNotNull();
367+
}
368+
}
369+
370+
@Test
371+
@NeedsFreshDriver
372+
void canAddDataCollectorWithCollectorType() {
373+
try (Network network = new Network(driver)) {
374+
AddDataCollectorParameters parameters =
375+
new AddDataCollectorParameters(List.of(DataType.RESPONSE), 2048).collectorType("blob");
376+
377+
String collector = network.addDataCollector(parameters);
378+
assertThat(collector).isNotNull();
379+
}
380+
}
381+
382+
@Test
383+
@NeedsFreshDriver
384+
void canAddDataCollectorWithContexts() {
385+
try (Network network = new Network(driver)) {
386+
String contextId = driver.getWindowHandle();
387+
AddDataCollectorParameters parameters =
388+
new AddDataCollectorParameters(List.of(DataType.RESPONSE), 1024)
389+
.contexts(List.of(contextId));
390+
391+
String collector = network.addDataCollector(parameters);
392+
assertThat(collector).isNotNull();
393+
}
394+
}
395+
396+
@Test
397+
@NeedsFreshDriver
398+
void canGetDataWithoutCollector() throws InterruptedException {
399+
try (Network network = new Network(driver)) {
400+
CountDownLatch latch = new CountDownLatch(1);
401+
402+
network.onResponseCompleted(
403+
responseDetails -> {
404+
String requestId = responseDetails.getRequest().getRequestId();
405+
GetDataParameters parameters = new GetDataParameters(DataType.RESPONSE, requestId);
406+
407+
// browsers don't store body bytes for responses without a collector
408+
assertThatThrownBy(() -> network.getData(parameters))
409+
.isInstanceOf(BiDiException.class)
410+
.hasMessageContaining("no such network data");
411+
412+
latch.countDown();
413+
});
414+
415+
BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle());
416+
browsingContext.navigate(
417+
appServer.whereIs("/bidi/logEntryAdded.html"), ReadinessState.COMPLETE);
418+
419+
boolean countdown = latch.await(5, TimeUnit.SECONDS);
420+
assertThat(countdown).isTrue();
421+
}
422+
}
423+
424+
@Test
425+
@NeedsFreshDriver
426+
void canGetDataWithCollector() throws InterruptedException {
427+
try (Network network = new Network(driver)) {
428+
AddDataCollectorParameters collectorParams =
429+
new AddDataCollectorParameters(List.of(DataType.RESPONSE), 1024);
430+
String collector = network.addDataCollector(collectorParams);
431+
432+
CountDownLatch latch = new CountDownLatch(1);
433+
434+
network.onResponseCompleted(
435+
responseDetails -> {
436+
String requestId = responseDetails.getRequest().getRequestId();
437+
GetDataParameters parameters =
438+
new GetDataParameters(DataType.RESPONSE, requestId).collector(collector);
439+
440+
BytesValue result = network.getData(parameters);
441+
assertThat(result).isNotNull();
442+
assertThat(result.getValue()).isNotNull();
443+
444+
latch.countDown();
445+
});
446+
447+
BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle());
448+
browsingContext.navigate(
449+
appServer.whereIs("/bidi/logEntryAdded.html"), ReadinessState.COMPLETE);
450+
451+
boolean countdown = latch.await(5, TimeUnit.SECONDS);
452+
assertThat(countdown).isTrue();
453+
}
454+
}
455+
456+
@Test
457+
@NeedsFreshDriver
458+
void canGetDataWithDisown() throws InterruptedException {
459+
try (Network network = new Network(driver)) {
460+
AddDataCollectorParameters collectorParams =
461+
new AddDataCollectorParameters(List.of(DataType.RESPONSE), 2048);
462+
String collector = network.addDataCollector(collectorParams);
463+
464+
CountDownLatch latch = new CountDownLatch(1);
465+
466+
network.onResponseCompleted(
467+
responseDetails -> {
468+
String requestId = responseDetails.getRequest().getRequestId();
469+
GetDataParameters disownParams =
470+
new GetDataParameters(DataType.RESPONSE, requestId)
471+
.collector(collector)
472+
.disown(true);
473+
474+
// First fetch should succeed
475+
BytesValue result = network.getData(disownParams);
476+
assertThat(result).isNotNull();
477+
assertThat(result.getValue()).isNotNull();
478+
479+
// Second fetch with same collector should fail, because disowned
480+
GetDataParameters secondParams =
481+
new GetDataParameters(DataType.RESPONSE, requestId).collector(collector);
482+
483+
assertThatThrownBy(() -> network.getData(secondParams))
484+
.isInstanceOf(BiDiException.class)
485+
.hasMessageContaining("no such network data");
486+
487+
latch.countDown();
488+
});
489+
490+
BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle());
491+
browsingContext.navigate(
492+
appServer.whereIs("/bidi/logEntryAdded.html"), ReadinessState.COMPLETE);
493+
494+
boolean countdown = latch.await(5, TimeUnit.SECONDS);
495+
assertThat(countdown).isTrue();
496+
}
497+
}
498+
499+
@Test
500+
@NeedsFreshDriver
501+
void canRemoveDataCollector() {
502+
try (Network network = new Network(driver)) {
503+
AddDataCollectorParameters parameters =
504+
new AddDataCollectorParameters(List.of(DataType.RESPONSE), 1024);
505+
506+
String collector = network.addDataCollector(parameters);
507+
assertThat(collector).isNotNull();
508+
509+
// Remove the collector, should not throw any exception
510+
network.removeDataCollector(collector);
511+
}
512+
}
356513
}

0 commit comments

Comments
 (0)