@@ -142,4 +142,48 @@ suite('ExtHostTelemetry', function () {
142
142
assert . strictEqual ( flushCalled , true ) ;
143
143
144
144
} ) ;
145
+
146
+ test ( 'Ensure logger properly cleans PII' , function ( ) {
147
+ const sentData : any [ ] = [ ] ;
148
+
149
+ // This is the appender which the extension would contribute
150
+ const appender : TelemetryAppender = {
151
+ logEvent : ( eventName : string , data ) => {
152
+ sentData . push ( { eventName, data } ) ;
153
+ } ,
154
+ logException : ( exception , data ) => {
155
+ // no-op
156
+ } ,
157
+ ignoreBuiltInCommonProperties : false ,
158
+ } ;
159
+
160
+ const extensionTelemetry = new ExtHostTelemetry ( new class extends mock < IExtHostInitDataService > ( ) {
161
+ override environment : IEnvironment = mockEnvironment ;
162
+ override telemetryInfo : ITelemetryInfo = mockTelemetryInfo ;
163
+ override remote = mockRemote ;
164
+ } , new TestTelemetryLoggerService ( DEFAULT_LOG_LEVEL ) ) ;
165
+
166
+ extensionTelemetry . $initializeTelemetryLevel ( TelemetryLevel . USAGE , { usage : true , error : true } ) ;
167
+
168
+ // Create the logger usting the appender
169
+ const logger = extensionTelemetry . instantiateLogger ( mockExtensionIdentifier , appender ) ;
170
+
171
+ // Log an event with a bunch of PII, this should all get cleaned out
172
+ logger . logUsage ( 'test-event' , {
173
+ 'fake-password' : 'pwd=123' ,
174
+ 'fake-email' :
'[email protected] ' ,
175
+ 'fake-token' : 'token=123' ,
176
+ 'fake-slack-token' : 'xoxp-123' ,
177
+ 'fake-path' : '/Users/username/.vscode/extensions' ,
178
+ } ) ;
179
+
180
+ assert . strictEqual ( sentData . length , 1 ) ;
181
+ assert . strictEqual ( sentData [ 0 ] . eventName , `${ mockExtensionIdentifier . name } /test-event` ) ;
182
+ assert . strictEqual ( sentData [ 0 ] . data [ 'fake-password' ] , '<REDACTED: Generic Secret>' ) ;
183
+ assert . strictEqual ( sentData [ 0 ] . data [ 'fake-email' ] , '<REDACTED: Email>' ) ;
184
+ assert . strictEqual ( sentData [ 0 ] . data [ 'fake-token' ] , '<REDACTED: Generic Secret>' ) ;
185
+ assert . strictEqual ( sentData [ 0 ] . data [ 'fake-slack-token' ] , '<REDACTED: Slack Token>' ) ;
186
+ assert . strictEqual ( sentData [ 0 ] . data [ 'fake-path' ] , '<REDACTED: user-file-path>' ) ;
187
+
188
+ } ) ;
145
189
} ) ;
0 commit comments