// Copyright 2026 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package credstore import ( "testing" "time" "github.com/stretchr/testify/assert" ) func TestTokenIsExpired(t *testing.T) { tests := []struct { name string expiresAt time.Time want bool }{ { name: "expired token", expiresAt: time.Now().Add(-1 * time.Hour), want: true, }, { name: "not expired token", expiresAt: time.Now().Add(1 * time.Hour), want: false, }, { name: "zero expiry (no expiry)", expiresAt: time.Time{}, want: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { token := &Token{ AccessToken: "test-token", ExpiresAt: tt.expiresAt, } assert.Equal(t, tt.want, token.IsExpired()) }) } } func TestTokenIsValid(t *testing.T) { tests := []struct { name string accessToken string expiresAt time.Time want bool }{ { name: "valid token with future expiry", accessToken: "test-token", expiresAt: time.Now().Add(1 * time.Hour), want: true, }, { name: "valid token with zero expiry", accessToken: "test-token", expiresAt: time.Time{}, want: true, }, { name: "expired token", accessToken: "test-token", expiresAt: time.Now().Add(-1 * time.Hour), want: false, }, { name: "empty access token", accessToken: "", expiresAt: time.Now().Add(1 * time.Hour), want: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { token := &Token{ AccessToken: tt.accessToken, ExpiresAt: tt.expiresAt, } assert.Equal(t, tt.want, token.IsValid()) }) } }