forked from Silverfish/proton-bridge
feat(GODT-2554): Compute telemetry availability from API UserSettings.
This commit is contained in:
@ -591,6 +591,16 @@ func (user *User) Close() {
|
||||
}
|
||||
}
|
||||
|
||||
// IsTelemetryEnabled check if the telemetry is enabled or disabled for this user.
|
||||
func (user *User) IsTelemetryEnabled(ctx context.Context) bool {
|
||||
settings, err := user.client.GetUserSettings(ctx)
|
||||
if err != nil {
|
||||
user.log.WithError(err).Warn("Failed to retrieve API user Settings")
|
||||
return false
|
||||
}
|
||||
return settings.Telemetry == proton.SettingEnabled
|
||||
}
|
||||
|
||||
// initUpdateCh initializes the user's update channels in the given address mode.
|
||||
// It is assumed that user.apiAddrs and user.updateCh are already locked.
|
||||
func (user *User) initUpdateCh(mode vault.AddressMode) {
|
||||
|
||||
@ -80,6 +80,23 @@ func TestUser_AddressMode(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func TestUser_Telemetry(t *testing.T) {
|
||||
withAPI(t, context.Background(), func(ctx context.Context, s *server.Server, m *proton.Manager) {
|
||||
withAccount(t, s, "username", "password", []string{}, func(string, []string) {
|
||||
withUser(t, ctx, s, m, "username", "password", func(user *User) {
|
||||
// By default, user should have Telemetry enabled.
|
||||
telemetry := user.IsTelemetryEnabled(ctx)
|
||||
require.Equal(t, true, telemetry)
|
||||
|
||||
user.client.Close()
|
||||
// If telemetry cannot be retrieved it is disabled.
|
||||
telemetry = user.IsTelemetryEnabled(ctx)
|
||||
require.Equal(t, false, telemetry)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func withAPI(_ testing.TB, ctx context.Context, fn func(context.Context, *server.Server, *proton.Manager)) { //nolint:revive
|
||||
server := server.New()
|
||||
defer server.Close()
|
||||
|
||||
Reference in New Issue
Block a user