mirror of
https://github.com/gopasspw/gopass.git
synced 2025-12-08 19:24:54 +00:00
* [chore] Migrate to golangci-lint v2 Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [chore] Fix more lint issues Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [chore] Fix more lint issue Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [chore] Fix more lint issues Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [chore] Add more package comments. Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [chore] Fix golangci-lint config and the remaining checks Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [fix] Use Go 1.24 Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [fix] Fix container builds Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * Fix more failing tests Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * Fix test failure Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * Fix another len assertion Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * Move location tests Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [fix] Fix most remaining lint issues Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [fix] Only run XDG specific tests on linux Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> * [fix] Attempt to address on source of flaky failures Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org> --------- Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org>
89 lines
2.1 KiB
Go
89 lines
2.1 KiB
Go
package ghssh
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestListKeys(t *testing.T) {
|
|
// Set GOPASS_HOMEDIR to a temp directory
|
|
tempDir := t.TempDir()
|
|
t.Setenv("GOPASS_HOMEDIR", tempDir)
|
|
|
|
// Mock HTTP server
|
|
mockServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.URL.Path == "/validuser.keys" {
|
|
w.WriteHeader(http.StatusOK)
|
|
w.Write([]byte("ssh-rsa AAAAB3Nza... validuser@github\n")) //nolint:errcheck
|
|
} else {
|
|
w.WriteHeader(http.StatusNotFound)
|
|
}
|
|
}))
|
|
defer mockServer.Close()
|
|
|
|
oURL := baseURL
|
|
baseURL = mockServer.URL
|
|
defer func() {
|
|
baseURL = oURL
|
|
}()
|
|
|
|
cache, err := New()
|
|
require.NoError(t, err)
|
|
|
|
t.Run("valid user", func(t *testing.T) {
|
|
keys, err := cache.ListKeys(t.Context(), "validuser")
|
|
require.NoError(t, err)
|
|
assert.Len(t, keys, 1)
|
|
assert.Equal(t, "ssh-rsa AAAAB3Nza... validuser@github", keys[0])
|
|
})
|
|
|
|
t.Run("invalid user", func(t *testing.T) {
|
|
keys, err := cache.ListKeys(t.Context(), "invaliduser")
|
|
require.Error(t, err)
|
|
assert.Nil(t, keys)
|
|
})
|
|
}
|
|
|
|
func TestFetchKeys(t *testing.T) {
|
|
// Set GOPASS_HOMEDIR to a temp directory
|
|
tempDir := t.TempDir()
|
|
t.Setenv("GOPASS_HOMEDIR", tempDir)
|
|
|
|
// Mock HTTP server
|
|
mockServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.URL.Path == "/validuser.keys" {
|
|
w.WriteHeader(http.StatusOK)
|
|
w.Write([]byte("ssh-rsa AAAAB3Nza... validuser@github\n")) //nolint:errcheck
|
|
} else {
|
|
w.WriteHeader(http.StatusNotFound)
|
|
}
|
|
}))
|
|
defer mockServer.Close()
|
|
|
|
oURL := baseURL
|
|
baseURL = mockServer.URL
|
|
defer func() {
|
|
baseURL = oURL
|
|
}()
|
|
|
|
cache, err := New()
|
|
require.NoError(t, err)
|
|
|
|
t.Run("valid user", func(t *testing.T) {
|
|
keys, err := cache.fetchKeys(t.Context(), "validuser")
|
|
require.NoError(t, err)
|
|
assert.Len(t, keys, 1)
|
|
assert.Equal(t, "ssh-rsa AAAAB3Nza... validuser@github", keys[0])
|
|
})
|
|
|
|
t.Run("invalid user", func(t *testing.T) {
|
|
keys, err := cache.fetchKeys(t.Context(), "invaliduser")
|
|
require.Error(t, err)
|
|
assert.Nil(t, keys)
|
|
})
|
|
}
|