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

Function TestKeyring

cli/sessionstore/sessionstore_test.go:25–246  ·  view source on GitHub ↗

nolint:paralleltest, tparallel // OS keyring is flaky under concurrent access

(t *testing.T)

Source from the content-addressed store, hash-verified

23
24//nolint:paralleltest, tparallel // OS keyring is flaky under concurrent access
25func TestKeyring(t *testing.T) {
26 if runtime.GOOS != "windows" && runtime.GOOS != "darwin" {
27 t.Skip("linux is not supported yet")
28 }
29
30 // This test exercises use of the operating system keyring. As a result,
31 // the operating system keyring is expected to be available.
32
33 const (
34 testURL = "http://127.0.0.1:1337"
35 testURL2 = "http://127.0.0.1:1338"
36 )
37
38 t.Run("ReadNonExistent", func(t *testing.T) {
39 backend := sessionstore.NewKeyringWithService(testhelpers.KeyringServiceName(t))
40 srvURL, err := url.Parse(testURL)
41 require.NoError(t, err)
42 t.Cleanup(func() { _ = backend.Delete(srvURL) })
43
44 _, err = backend.Read(srvURL)
45 require.Error(t, err)
46 require.True(t, os.IsNotExist(err), "expected os.ErrNotExist when reading non-existent token")
47 })
48
49 t.Run("DeleteNonExistent", func(t *testing.T) {
50 backend := sessionstore.NewKeyringWithService(testhelpers.KeyringServiceName(t))
51 srvURL, err := url.Parse(testURL)
52 require.NoError(t, err)
53 t.Cleanup(func() { _ = backend.Delete(srvURL) })
54
55 err = backend.Delete(srvURL)
56 require.Error(t, err)
57 require.True(t, errors.Is(err, os.ErrNotExist), "expected os.ErrNotExist when deleting non-existent token")
58 })
59
60 t.Run("WriteAndRead", func(t *testing.T) {
61 backend := sessionstore.NewKeyringWithService(testhelpers.KeyringServiceName(t))
62 srvURL, err := url.Parse(testURL)
63 require.NoError(t, err)
64 t.Cleanup(func() { _ = backend.Delete(srvURL) })
65
66 dir := t.TempDir()
67 expSessionFile := path.Join(dir, "session")
68
69 const inputToken = "test-keyring-token-12345"
70 err = backend.Write(srvURL, inputToken)
71 require.NoError(t, err)
72
73 // Verify no session file was created (keyring stores in OS keyring, not file)
74 _, err = os.Stat(expSessionFile)
75 require.True(t, errors.Is(err, os.ErrNotExist), "expected session token file to not exist when using keyring")
76
77 token, err := backend.Read(srvURL)
78 require.NoError(t, err)
79 require.Equal(t, inputToken, token)
80
81 // Clean up
82 err = backend.Delete(srvURL)

Callers

nothing calls this directly

Calls 15

NewKeyringWithServiceFunction · 0.92
KeyringServiceNameFunction · 0.92
SkipMethod · 0.80
RunMethod · 0.65
ParseMethod · 0.65
CleanupMethod · 0.65
DeleteMethod · 0.65
ReadMethod · 0.65
TempDirMethod · 0.65
WriteMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected