MCPcopy Index your code
hub / github.com/coder/coder / TestGitSSHKeys

Function TestGitSSHKeys

coderd/gitsshkey/gitsshkey_test.go:13–57  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

11)
12
13func TestGitSSHKeys(t *testing.T) {
14 t.Parallel()
15
16 verifyKeyPair := func(t *testing.T, private, public string) {
17 signer, err := ssh.ParsePrivateKey([]byte(private))
18 require.NoError(t, err)
19 p, err := ssh.ParsePublicKey(signer.PublicKey().Marshal())
20 require.NoError(t, err)
21 publicKey := string(ssh.MarshalAuthorizedKey(p))
22 require.Equal(t, publicKey, public)
23 }
24
25 t.Run("Ed25519", func(t *testing.T) {
26 t.Parallel()
27 pv, pb, err := gitsshkey.Generate(gitsshkey.AlgorithmEd25519)
28 require.NoError(t, err)
29 verifyKeyPair(t, pv, pb)
30 })
31 t.Run("ECDSA", func(t *testing.T) {
32 t.Parallel()
33 pv, pb, err := gitsshkey.Generate(gitsshkey.AlgorithmECDSA)
34 require.NoError(t, err)
35 verifyKeyPair(t, pv, pb)
36 })
37 t.Run("RSA4096", func(t *testing.T) {
38 t.Parallel()
39 pv, pb, err := gitsshkey.Generate(gitsshkey.AlgorithmRSA4096)
40 require.NoError(t, err)
41 verifyKeyPair(t, pv, pb)
42 })
43 t.Run("ParseAlgorithm", func(t *testing.T) {
44 t.Parallel()
45 _, err := gitsshkey.ParseAlgorithm(string(gitsshkey.AlgorithmEd25519))
46 require.NoError(t, err)
47 _, err = gitsshkey.ParseAlgorithm(string(gitsshkey.AlgorithmECDSA))
48 require.NoError(t, err)
49 _, err = gitsshkey.ParseAlgorithm(string(gitsshkey.AlgorithmRSA4096))
50 require.NoError(t, err)
51 r, _ := cryptorand.String(6)
52 _, err = gitsshkey.ParseAlgorithm(r)
53 require.Error(t, err, "random string should fail")
54 _, err = gitsshkey.ParseAlgorithm("")
55 require.Error(t, err, "empty string should fail")
56 })
57}
58
59func BenchmarkGenerate(b *testing.B) {
60 for i := 0; i < b.N; i++ {

Callers

nothing calls this directly

Calls 8

GenerateFunction · 0.92
ParseAlgorithmFunction · 0.92
StringFunction · 0.92
PublicKeyMethod · 0.65
RunMethod · 0.65
MarshalMethod · 0.45
EqualMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected