49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package cmd
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/evcc-io/evcc/api/globalconfig"
|
|
"github.com/evcc-io/evcc/core/keys"
|
|
"github.com/evcc-io/evcc/server/db/settings"
|
|
"github.com/evcc-io/evcc/util/auth"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// TestPasswordWithInvalidSponsorToken verifies that password commands work
|
|
// even when an invalid sponsor token is present in the database
|
|
func TestPasswordWithInvalidSponsorToken(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
dbPath := filepath.Join(tmpDir, "test.db")
|
|
|
|
// Setup database (same as password commands do)
|
|
err := configureDatabase(globalconfig.DB{
|
|
Type: "sqlite",
|
|
Dsn: dbPath,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
// Store invalid sponsor token
|
|
settings.SetString(keys.SponsorToken, "invalid-token")
|
|
storedToken, err := settings.String(keys.SponsorToken)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "invalid-token", storedToken)
|
|
|
|
// Set password - should work despite invalid sponsor token
|
|
authInstance := auth.New()
|
|
err = authInstance.SetAdminPassword("test-password")
|
|
require.NoError(t, err)
|
|
|
|
// Verify password works
|
|
assert.True(t, authInstance.IsAdminPasswordValid("test-password"))
|
|
|
|
// Reset password - should work despite invalid sponsor token
|
|
authInstance.RemoveAdminPassword()
|
|
|
|
// Verify password was removed
|
|
storedHash, err := settings.String(keys.AdminPassword)
|
|
require.NoError(t, err)
|
|
assert.Empty(t, storedHash)
|
|
}
|