Skip to content

Commit 84d84ac

Browse files
committed
Add test cases for WebRequestCollector attack wave
1 parent e4b7cca commit 84d84ac

2 files changed

Lines changed: 45 additions & 0 deletions

File tree

agent_api/src/main/java/dev/aikido/agent_api/storage/AttackQueue.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ public static APIEvent get() throws InterruptedException {
4242
return queue.take();
4343
}
4444

45+
public static int getSize() {
46+
return queue.size();
47+
}
48+
4549
public static void clear() {
4650
queue.clear();
4751
}

agent_api/src/test/java/collectors/WebRequestCollectorTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@
33
import dev.aikido.agent_api.background.Endpoint;
44
import dev.aikido.agent_api.background.cloud.api.APIResponse;
55
import dev.aikido.agent_api.background.cloud.api.ReportingApi;
6+
import dev.aikido.agent_api.background.cloud.api.events.DetectedAttackWave;
67
import dev.aikido.agent_api.collectors.WebRequestCollector;
78
import dev.aikido.agent_api.context.Context;
9+
import dev.aikido.agent_api.context.ContextObject;
10+
import dev.aikido.agent_api.storage.AttackQueue;
811
import dev.aikido.agent_api.storage.ServiceConfigStore;
912
import dev.aikido.agent_api.storage.statistics.StatisticsStore;
1013
import org.junit.jupiter.api.BeforeEach;
1114
import org.junit.jupiter.api.Test;
1215
import utils.EmptySampleContextObject;
1316

1417
import java.util.List;
18+
import java.util.Map;
1519

1620
import static dev.aikido.agent_api.helpers.UnixTimeMS.getUnixTimeMS;
1721
import static org.junit.jupiter.api.Assertions.*;
@@ -29,6 +33,7 @@ void setUp() {
2933
StatisticsStore.clear();
3034
ServiceConfigStore.updateFromAPIResponse(emptyAPIResponse);
3135
ServiceConfigStore.updateFromAPIListsResponse(emptyAPIListsResponse);
36+
AttackQueue.clear();
3237
}
3338

3439
@Test
@@ -255,4 +260,40 @@ void testReport_ipNotAllowedUsingLists_Ip_Bypassed() {
255260
assertNull(response);
256261
assertNull(Context.get());
257262
}
263+
264+
@Test
265+
void testReport_WithAttackWaveContext() throws InterruptedException {
266+
ContextObject attackWaveCtx = new EmptySampleContextObject("/wp-config.php", "BADMETHOD", Map.of());
267+
268+
WebRequestCollector.Res response = WebRequestCollector.report(attackWaveCtx);
269+
assertNull(response);
270+
assertEquals(0, AttackQueue.getSize());
271+
272+
// 2...14
273+
WebRequestCollector.report(attackWaveCtx);
274+
WebRequestCollector.report(attackWaveCtx);
275+
WebRequestCollector.report(attackWaveCtx);
276+
WebRequestCollector.report(attackWaveCtx);
277+
WebRequestCollector.report(attackWaveCtx);
278+
WebRequestCollector.report(attackWaveCtx);
279+
WebRequestCollector.report(attackWaveCtx);
280+
WebRequestCollector.report(attackWaveCtx);
281+
WebRequestCollector.report(attackWaveCtx);
282+
WebRequestCollector.report(attackWaveCtx);
283+
WebRequestCollector.report(attackWaveCtx);
284+
WebRequestCollector.report(attackWaveCtx);
285+
WebRequestCollector.report(attackWaveCtx);
286+
287+
WebRequestCollector.Res response2 = WebRequestCollector.report(attackWaveCtx);
288+
assertNull(response2);
289+
assertEquals(1, AttackQueue.getSize());
290+
DetectedAttackWave.DetectedAttackWaveEvent event = (DetectedAttackWave.DetectedAttackWaveEvent) AttackQueue.get();
291+
assertEquals("192.168.1.1", event.request().ipAddress());
292+
assertEquals("web", event.request().source());
293+
assertEquals(null, event.request().userAgent());
294+
assertEquals("detected_attack_wave", event.type());
295+
assertEquals(null, event.attack().user());
296+
assertEquals(0, event.attack().metadata().size());
297+
298+
}
258299
}

0 commit comments

Comments
 (0)