@@ -144,6 +144,9 @@ func TestNewCmdExtension_Updates(t *testing.T) {
144144 NameFunc : func () string {
145145 return tt .extName
146146 },
147+ OwnerFunc : func () string {
148+ return ""
149+ },
147150 UpdateAvailableFunc : func () bool {
148151 return tt .extUpdateAvailable
149152 },
@@ -199,6 +202,9 @@ func TestNewCmdExtension_UpdateCheckIsNonblocking(t *testing.T) {
199202 NameFunc : func () string {
200203 return "major-update"
201204 },
205+ OwnerFunc : func () string {
206+ return ""
207+ },
202208 UpdateAvailableFunc : func () bool {
203209 return true
204210 },
@@ -234,3 +240,60 @@ func TestNewCmdExtension_UpdateCheckIsNonblocking(t *testing.T) {
234240 t .Fatal ("extension update check should have exited" )
235241 }
236242}
243+
244+ func TestNewCmdExtension_TelemetryEnabledForOfficialExtensions (t * testing.T ) {
245+ tests := []struct {
246+ name string
247+ extName string
248+ extOwner string
249+ wantTelemetryOff bool
250+ }{
251+ {
252+ name : "official extension records telemetry" ,
253+ extName : "stack" ,
254+ extOwner : "github" ,
255+ wantTelemetryOff : false ,
256+ },
257+ {
258+ name : "official name with third-party owner disables telemetry" ,
259+ extName : "stack" ,
260+ extOwner : "williammartin" ,
261+ wantTelemetryOff : true ,
262+ },
263+ {
264+ name : "official name with empty owner disables telemetry" ,
265+ extName : "stack" ,
266+ extOwner : "" ,
267+ wantTelemetryOff : true ,
268+ },
269+ {
270+ name : "official extension name with mixed case disables telemetry" ,
271+ extName : "STACK" ,
272+ extOwner : "github" ,
273+ wantTelemetryOff : true ,
274+ },
275+ {
276+ name : "third-party extension disables telemetry" ,
277+ extName : "my-custom-ext" ,
278+ extOwner : "someone" ,
279+ wantTelemetryOff : true ,
280+ },
281+ }
282+
283+ for _ , tt := range tests {
284+ t .Run (tt .name , func (t * testing.T ) {
285+ ios , _ , _ , _ := iostreams .Test ()
286+ em := & extensions.ExtensionManagerMock {}
287+ ext := & extensions.ExtensionMock {
288+ NameFunc : func () string { return tt .extName },
289+ OwnerFunc : func () string { return tt .extOwner },
290+ }
291+
292+ cmd := root .NewCmdExtension (ios , em , ext , func (extensions.ExtensionManager , extensions.Extension ) (* update.ReleaseInfo , error ) {
293+ return nil , nil
294+ })
295+
296+ assert .Equal (t , tt .wantTelemetryOff , cmd .Annotations ["telemetry" ] == "disabled" )
297+ })
298+ }
299+ }
0 commit comments