Something went wrong. Try again.
forked from charmbracelet/soft-serve
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125package sshutils
import ( "testing"
"github.com/charmbracelet/keygen" "golang.org/x/crypto/ssh")
func generateKeys(tb testing.TB) (*keygen.SSHKeyPair, *keygen.SSHKeyPair) { goodKey1, err := keygen.New("", keygen.WithKeyType(keygen.Ed25519)) if err != nil { tb.Fatal(err) } goodKey2, err := keygen.New("", keygen.WithKeyType(keygen.RSA)) if err != nil { tb.Fatal(err) }
return goodKey1, goodKey2}
func TestParseAuthorizedKey(t *testing.T) { goodKey1, goodKey2 := generateKeys(t) cases := []struct { in string good bool }{ { goodKey1.AuthorizedKey(), true, }, { goodKey2.AuthorizedKey(), true, }, { goodKey1.AuthorizedKey() + "test", false, }, { goodKey2.AuthorizedKey() + "bad", false, }, } for _, c := range cases { _, _, err := ParseAuthorizedKey(c.in) if c.good && err != nil { t.Errorf("ParseAuthorizedKey(%q) returned error: %v", c.in, err) } if !c.good && err == nil { t.Errorf("ParseAuthorizedKey(%q) did not return error", c.in) } }}
func TestMarshalAuthorizedKey(t *testing.T) { goodKey1, goodKey2 := generateKeys(t) cases := []struct { in ssh.PublicKey expected string }{ { goodKey1.PublicKey(), goodKey1.AuthorizedKey(), }, { goodKey2.PublicKey(), goodKey2.AuthorizedKey(), }, { nil, "", }, } for _, c := range cases { out := MarshalAuthorizedKey(c.in) if out != c.expected { t.Errorf("MarshalAuthorizedKey(%v) returned %q, expected %q", c.in, out, c.expected) } }}
func TestKeysEqual(t *testing.T) { goodKey1, goodKey2 := generateKeys(t) cases := []struct { in1 ssh.PublicKey in2 ssh.PublicKey expected bool }{ { goodKey1.PublicKey(), goodKey1.PublicKey(), true, }, { goodKey2.PublicKey(), goodKey2.PublicKey(), true, }, { goodKey1.PublicKey(), goodKey2.PublicKey(), false, }, { nil, nil, false, }, { nil, goodKey1.PublicKey(), false, }, }
for _, c := range cases { out := KeysEqual(c.in1, c.in2) if out != c.expected { t.Errorf("KeysEqual(%v, %v) returned %v, expected %v", c.in1, c.in2, out, c.expected) } }}