mirror of
https://github.com/int128/kubelogin.git
synced 2026-05-20 06:42:45 +00:00
* Refactor: rename to tokencache.Value * Refactor: move to cmp.Diff from deep.Equal * Refactor: reword error messages
98 lines
2.5 KiB
Go
98 lines
2.5 KiB
Go
package tokencache
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
)
|
|
|
|
func TestRepository_FindByKey(t *testing.T) {
|
|
var r Repository
|
|
|
|
t.Run("Success", func(t *testing.T) {
|
|
dir, err := ioutil.TempDir("", "kube")
|
|
if err != nil {
|
|
t.Fatalf("could not create a temp dir: %s", err)
|
|
}
|
|
defer func() {
|
|
if err := os.RemoveAll(dir); err != nil {
|
|
t.Errorf("could not clean up the temp dir: %s", err)
|
|
}
|
|
}()
|
|
key := Key{
|
|
IssuerURL: "YOUR_ISSUER",
|
|
ClientID: "YOUR_CLIENT_ID",
|
|
ClientSecret: "YOUR_CLIENT_SECRET",
|
|
ExtraScopes: []string{"openid", "email"},
|
|
CACertFilename: "/path/to/cert",
|
|
SkipTLSVerify: false,
|
|
}
|
|
json := `{"id_token":"YOUR_ID_TOKEN","refresh_token":"YOUR_REFRESH_TOKEN"}`
|
|
filename, err := computeFilename(key)
|
|
if err != nil {
|
|
t.Errorf("could not compute the key: %s", err)
|
|
}
|
|
p := filepath.Join(dir, filename)
|
|
if err := ioutil.WriteFile(p, []byte(json), 0600); err != nil {
|
|
t.Fatalf("could not write to the temp file: %s", err)
|
|
}
|
|
|
|
value, err := r.FindByKey(dir, key)
|
|
if err != nil {
|
|
t.Errorf("err wants nil but %+v", err)
|
|
}
|
|
want := &Value{IDToken: "YOUR_ID_TOKEN", RefreshToken: "YOUR_REFRESH_TOKEN"}
|
|
if diff := cmp.Diff(want, value); diff != "" {
|
|
t.Errorf("mismatch (-want +got):\n%s", diff)
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestRepository_Save(t *testing.T) {
|
|
var r Repository
|
|
|
|
t.Run("Success", func(t *testing.T) {
|
|
dir, err := ioutil.TempDir("", "kube")
|
|
if err != nil {
|
|
t.Fatalf("could not create a temp dir: %s", err)
|
|
}
|
|
defer func() {
|
|
if err := os.RemoveAll(dir); err != nil {
|
|
t.Errorf("could not clean up the temp dir: %s", err)
|
|
}
|
|
}()
|
|
|
|
key := Key{
|
|
IssuerURL: "YOUR_ISSUER",
|
|
ClientID: "YOUR_CLIENT_ID",
|
|
ClientSecret: "YOUR_CLIENT_SECRET",
|
|
ExtraScopes: []string{"openid", "email"},
|
|
CACertFilename: "/path/to/cert",
|
|
SkipTLSVerify: false,
|
|
}
|
|
value := Value{IDToken: "YOUR_ID_TOKEN", RefreshToken: "YOUR_REFRESH_TOKEN"}
|
|
if err := r.Save(dir, key, value); err != nil {
|
|
t.Errorf("err wants nil but %+v", err)
|
|
}
|
|
|
|
filename, err := computeFilename(key)
|
|
if err != nil {
|
|
t.Errorf("could not compute the key: %s", err)
|
|
}
|
|
p := filepath.Join(dir, filename)
|
|
b, err := ioutil.ReadFile(p)
|
|
if err != nil {
|
|
t.Fatalf("could not read the token cache file: %s", err)
|
|
}
|
|
want := `{"id_token":"YOUR_ID_TOKEN","refresh_token":"YOUR_REFRESH_TOKEN"}
|
|
`
|
|
got := string(b)
|
|
if diff := cmp.Diff(want, got); diff != "" {
|
|
t.Errorf("mismatch (-want +got):\n%s", diff)
|
|
}
|
|
})
|
|
}
|