11package datadog.trace.bootstrap.instrumentation.decorator
22
3+ import datadog.trace.api.Config
34import datadog.trace.api.internal.TraceSegment
45import datadog.trace.bootstrap.ActiveSubsystems
56import datadog.trace.test.util.DDSpecification
67
8+ import static datadog.trace.api.UserEventTrackingMode.DISABLED
9+ import static datadog.trace.api.UserEventTrackingMode.EXTENDED
10+ import static datadog.trace.api.UserEventTrackingMode.SAFE
711import static datadog.trace.api.config.AppSecConfig.APPSEC_AUTOMATED_USER_EVENTS_TRACKING
812
913class AppSecUserEventDecoratorTest extends DDSpecification {
@@ -27,20 +31,26 @@ class AppSecUserEventDecoratorTest extends DDSpecification {
2731 def decorator = newDecorator()
2832
2933 when :
30- decorator. onSignup(' user' , [' key1' : ' value1' , ' key2' : ' value2' ])
34+ decorator. onSignup(user, [' key1' : ' value1' , ' key2' : ' value2' ])
3135
3236 then :
33- 1 * traceSegment. setTagTop(' _dd.appsec.events.users.signup.auto.mode' , modeTag )
37+ 1 * traceSegment. setTagTop(' _dd.appsec.events.users.signup.auto.mode' , mode )
3438 1 * traceSegment. setTagTop(' appsec.events.users.signup.track' , true , true )
3539 1 * traceSegment. setTagTop(' asm.keep' , true )
36- 1 * traceSegment. setTagTop(' usr.id' , ' user' )
37- 1 * traceSegment. setTagTop(' appsec.events.users.signup' , [' key1' :' value1' , ' key2' :' value2' ])
40+ if (setUser) {
41+ 1 * traceSegment. setTagTop(' usr.id' , user)
42+ }
43+ 1 * traceSegment. setTagTop(' appsec.events.users.signup' , [' key1' : ' value1' , ' key2' : ' value2' ])
3844 0 * _
3945
4046 where :
41- mode | modeTag
42- ' safe' | ' SAFE'
43- ' extended' | ' EXTENDED'
47+ mode | user | setUser
48+ ' safe' | ' user' | false
49+ ' safe' | ' 1234' | true
50+ ' safe' | ' 591dc126-8431-4d0f-9509-b23318d3dce4' | true
51+ ' extended' | ' user' | true
52+ ' extended' | ' 1234' | true
53+ ' extended' | ' 591dc126-8431-4d0f-9509-b23318d3dce4' | true
4454 }
4555
4656 def " test onLoginSuccess [#mode]" () {
@@ -49,44 +59,54 @@ class AppSecUserEventDecoratorTest extends DDSpecification {
4959 def decorator = newDecorator()
5060
5161 when :
52- decorator. onLoginSuccess(' user' , [' key1' : ' value1' , ' key2' : ' value2' ])
62+ decorator. onLoginSuccess(user, [' key1' : ' value1' , ' key2' : ' value2' ])
5363
5464 then :
55- 1 * traceSegment. setTagTop(' _dd.appsec.events.users.login.success.auto.mode' , modeTag )
65+ 1 * traceSegment. setTagTop(' _dd.appsec.events.users.login.success.auto.mode' , mode )
5666 1 * traceSegment. setTagTop(' appsec.events.users.login.success.track' , true , true )
5767 1 * traceSegment. setTagTop(' asm.keep' , true )
58- 1 * traceSegment. setTagTop(' usr.id' , ' user' )
59- 1 * traceSegment. setTagTop(' appsec.events.users.login.success' , [' key1' :' value1' , ' key2' :' value2' ])
68+ if (setUser) {
69+ 1 * traceSegment. setTagTop(' usr.id' , user)
70+ }
71+ 1 * traceSegment. setTagTop(' appsec.events.users.login.success' , [' key1' : ' value1' , ' key2' : ' value2' ])
6072 0 * _
6173
6274 where :
63- mode | modeTag
64- ' safe' | ' SAFE'
65- ' extended' | ' EXTENDED'
75+ mode | user | setUser
76+ ' safe' | ' user' | false
77+ ' safe' | ' 1234' | true
78+ ' safe' | ' 591dc126-8431-4d0f-9509-b23318d3dce4' | true
79+ ' extended' | ' user' | true
80+ ' extended' | ' 1234' | true
81+ ' extended' | ' 591dc126-8431-4d0f-9509-b23318d3dce4' | true
6682 }
6783
68- def " test onLoginFailed #description [#mode]" () {
84+ def " test onLoginFailed [#mode]" () {
6985 setup :
7086 injectSysConfig(APPSEC_AUTOMATED_USER_EVENTS_TRACKING , mode)
7187 def decorator = newDecorator()
7288
7389 when :
74- decorator. onLoginFailure(' user' , [' key1' : ' value1' , ' key2' : ' value2' ])
90+ decorator. onLoginFailure(user, [' key1' : ' value1' , ' key2' : ' value2' ])
7591
7692 then :
77- 1 * traceSegment. setTagTop(' _dd.appsec.events.users.login.failure.auto.mode' , modeTag )
93+ 1 * traceSegment. setTagTop(' _dd.appsec.events.users.login.failure.auto.mode' , mode )
7894 1 * traceSegment. setTagTop(' appsec.events.users.login.failure.track' , true , true )
7995 1 * traceSegment. setTagTop(' asm.keep' , true )
80- 1 * traceSegment. setTagTop(' appsec.events.users.login.failure.usr.id' , ' user' )
81- 1 * traceSegment. setTagTop(' appsec.events.users.login.failure' , [' key1' :' value1' , ' key2' :' value2' ])
96+ if (setUser) {
97+ 1 * traceSegment. setTagTop(' appsec.events.users.login.failure.usr.id' , user)
98+ }
99+ 1 * traceSegment. setTagTop(' appsec.events.users.login.failure' , [' key1' : ' value1' , ' key2' : ' value2' ])
82100 0 * _
83101
84102 where :
85- mode | modeTag | description
86- ' safe' | ' SAFE' | ' with existing user'
87- ' safe' | ' SAFE' | ' user doesn\' t exist'
88- ' extended' | ' EXTENDED' | ' with existing user'
89- ' extended' | ' EXTENDED' | ' user doesn\' t exist'
103+ mode | user | setUser
104+ ' safe' | ' user' | false
105+ ' safe' | ' 1234' | true
106+ ' safe' | ' 591dc126-8431-4d0f-9509-b23318d3dce4' | true
107+ ' extended' | ' user' | true
108+ ' extended' | ' 1234' | true
109+ ' extended' | ' 591dc126-8431-4d0f-9509-b23318d3dce4' | true
90110 }
91111
92112 def " test onUserNotFound [#mode]" () {
@@ -102,9 +122,7 @@ class AppSecUserEventDecoratorTest extends DDSpecification {
102122 0 * _
103123
104124 where :
105- mode | modeTag
106- ' safe' | ' SAFE'
107- ' extended' | ' EXTENDED'
125+ mode << [' safe' , ' extended' ]
108126 }
109127
110128 def "test isEnabled (appsec = #appsec, mode = #mode)" () {
@@ -119,14 +137,21 @@ class AppSecUserEventDecoratorTest extends DDSpecification {
119137 then:
120138 enabled == result
121139
140+ and:
141+ Config.get().getAppSecUserEventsTrackingMode() == expectedMode
142+
122143 where:
123- appsec | mode | result
124- false | " disabled" | false
125- false | " safe" | false
126- false | " extended" | false
127- true | " disabled" | false
128- true | " safe" | true
129- true | " extended" | true
144+ appsec | mode | result | expectedMode
145+ false | " disabled" | false | DISABLED
146+ false | " safe" | false | SAFE
147+ false | " 1 " | false | SAFE
148+ false | " true " | false | SAFE
149+ false | " extended" | false | EXTENDED
150+ true | " disabled" | false | DISABLED
151+ true | " safe" | true | SAFE
152+ true | " 1 " | true | SAFE
153+ true | " true " | true | SAFE
154+ true | " extended" | true | EXTENDED
130155 }
131156
132157 def newDecorator() {
0 commit comments