Skip to content

Commit

Permalink
Merge pull request #1089 from wakatime/bugfix/future-dates
Browse files Browse the repository at this point in the history
Prevent using future dates for LastSenAt and BackoffAt
  • Loading branch information
alanhamlett authored Sep 14, 2024
2 parents 7b8aaba + ec9a897 commit f231541
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
6 changes: 6 additions & 0 deletions cmd/params/params.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,8 +226,11 @@ func LoadAPIParams(v *viper.Viper) (API, error) {
backoffAtStr := vipertools.GetString(v, "internal.backoff_at")
if backoffAtStr != "" {
parsed, err := time.Parse(ini.DateFormat, backoffAtStr)
// nolint:gocritic
if err != nil {
log.Warnf("failed to parse backoff_at: %s", err)
} else if parsed.After(time.Now()) {
backoffAt = time.Now()
} else {
backoffAt = parsed
}
Expand Down Expand Up @@ -664,8 +667,11 @@ func LoadOfflineParams(v *viper.Viper) Offline {
lastSentAtStr := vipertools.GetString(v, "internal.heartbeats_last_sent_at")
if lastSentAtStr != "" {
parsed, err := time.Parse(ini.DateFormat, lastSentAtStr)
// nolint:gocritic
if err != nil {
log.Warnf("failed to parse heartbeats_last_sent_at: %s", err)
} else if parsed.After(time.Now()) {
lastSentAt = time.Now()
} else {
lastSentAt = parsed
}
Expand Down
26 changes: 26 additions & 0 deletions cmd/params/params_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1771,6 +1771,16 @@ func TestLoadOfflineParams_LastSentAt_Err(t *testing.T) {
assert.Zero(t, params.LastSentAt)
}

func TestLoadOfflineParams_LastSentAtFuture(t *testing.T) {
v := viper.New()
lastSentAt := time.Now().Add(time.Duration(2) * time.Hour)
v.Set("internal.heartbeats_last_sent_at", lastSentAt.Format(inipkg.DateFormat))

params := cmdparams.LoadOfflineParams(v)

assert.LessOrEqual(t, params.LastSentAt, time.Now())
}

func TestLoadOfflineParams_SyncMax(t *testing.T) {
v := viper.New()
v.Set("sync-offline-activity", 42)
Expand Down Expand Up @@ -2148,6 +2158,22 @@ func TestLoadAPIParams_BackoffAtErr(t *testing.T) {
}, params)
}

func TestLoadAPIParams_BackoffAtFuture(t *testing.T) {
v := viper.New()
backoff := time.Now().Add(time.Duration(2) * time.Hour)

v.Set("hostname", "my-computer")
v.Set("key", "00000000-0000-4000-8000-000000000000")
v.Set("internal.backoff_at", backoff.Format(inipkg.DateFormat))
v.Set("internal.backoff_retries", "3")

params, err := cmdparams.LoadAPIParams(v)
require.NoError(t, err)

assert.Equal(t, 3, params.BackoffRetries)
assert.LessOrEqual(t, params.BackoffAt, time.Now())
}

func TestLoadAPIParams_DisableSSLVerify_FlagTakesPrecedence(t *testing.T) {
v := viper.New()
v.Set("key", "00000000-0000-4000-8000-000000000000")
Expand Down

0 comments on commit f231541

Please sign in to comment.