@@ -1285,6 +1285,41 @@ class GatewayBridgeSpecification extends DDSpecification {
12851285 0 * eventDispatcher.publishDataEvent
12861286 }
12871287
1288+ void " test onLoginFailure (automated login events should not overwrite SDK )" () {
1289+ setup:
1290+ final firstUser = 'user1'
1291+ final secondUser = 'user2'
1292+ eventDispatcher.getDataSubscribers(_) >> nonEmptyDsInfo
1293+
1294+ when:
1295+ loginEventCB.apply(ctx, SDK, 'users.login.failure', true, firstUser, null)
1296+
1297+ then:
1298+ 1 * traceSegment.setTagTop('appsec.events.users.login.failure.usr.login', firstUser, true)
1299+ 1 * traceSegment.setTagTop('_dd.appsec.events.users.login.failure.sdk', true, true)
1300+ 1 * traceSegment.setTagTop('_dd.appsec.user.collection_mode', 'sdk')
1301+ 1 * traceSegment.setTagTop('appsec.events.users.login.failure.usr.exists', true, true)
1302+
1303+ 0 * traceSegment.setTagTop('_dd.appsec.usr.login', _)
1304+ 0 * traceSegment.setTagTop('_dd.appsec.events.users.login.failure.auto.mode', _, _)
1305+
1306+ 1 * eventDispatcher.publishDataEvent(nonEmptyDsInfo, ctx.data, _ as DataBundle, _ as GatewayContext) >> NoopFlow.INSTANCE
1307+
1308+ when:
1309+ loginEventCB.apply(ctx, IDENTIFICATION, 'users.login.failure', false, secondUser, null)
1310+
1311+ then:
1312+ 0 * traceSegment.setTagTop('appsec.events.users.login.failure.usr.login', _, _)
1313+ 0 * traceSegment.setTagTop('_dd.appsec.events.users.login.failure.sdk', _, _)
1314+ 0 * traceSegment.setTagTop('_dd.appsec.user.collection_mode', _)
1315+ 0 * traceSegment.setTagTop('appsec.events.users.login.failure.usr.exists', _, _)
1316+
1317+ 1 * traceSegment.setTagTop('_dd.appsec.usr.login', secondUser)
1318+ 1 * traceSegment.setTagTop('_dd.appsec.events.users.login.failure.auto.mode', IDENTIFICATION.fullName(), true)
1319+
1320+ 0 * eventDispatcher.publishDataEvent
1321+ }
1322+
12881323 void 'test configuration updates should reset cached subscriptions'() {
12891324 when:
12901325 requestSessionCB.apply(ctx, UUID.randomUUID().toString())
0 commit comments