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)
|
|
})
|
|
}
|