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

Function TestClient_IsCoderConnectRunning

codersdk/workspacesdk/workspacesdk_test.go:81–135  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

79}
80
81func TestClient_IsCoderConnectRunning(t *testing.T) {
82 t.Parallel()
83 ctx := testutil.Context(t, testutil.WaitShort)
84
85 srv := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
86 assert.Equal(t, "/api/v2/workspaceagents/connection", r.URL.Path)
87 httpapi.Write(ctx, rw, http.StatusOK, workspacesdk.AgentConnectionInfo{
88 HostnameSuffix: "test",
89 })
90 }))
91 defer srv.Close()
92
93 apiURL, err := url.Parse(srv.URL)
94 require.NoError(t, err)
95 sdkClient := codersdk.New(apiURL)
96 client := workspacesdk.New(sdkClient)
97
98 // Right name, right IP
99 expectedName := fmt.Sprintf(tailnet.IsCoderConnectEnabledFmtString, "test")
100 ctxResolveExpected := workspacesdk.WithTestOnlyCoderContextResolver(ctx,
101 &fakeResolver{t: t, hostMap: map[string][]net.IP{
102 expectedName: {net.ParseIP(tsaddr.CoderServiceIPv6().String())},
103 }})
104
105 result, err := client.IsCoderConnectRunning(ctxResolveExpected, workspacesdk.CoderConnectQueryOptions{})
106 require.NoError(t, err)
107 require.True(t, result)
108
109 // Wrong name
110 result, err = client.IsCoderConnectRunning(ctxResolveExpected, workspacesdk.CoderConnectQueryOptions{HostnameSuffix: "coder"})
111 require.NoError(t, err)
112 require.False(t, result)
113
114 // Not found
115 ctxResolveNotFound := workspacesdk.WithTestOnlyCoderContextResolver(ctx,
116 &fakeResolver{t: t, err: &net.DNSError{IsNotFound: true}})
117 result, err = client.IsCoderConnectRunning(ctxResolveNotFound, workspacesdk.CoderConnectQueryOptions{})
118 require.NoError(t, err)
119 require.False(t, result)
120
121 // Some other error
122 ctxResolverErr := workspacesdk.WithTestOnlyCoderContextResolver(ctx,
123 &fakeResolver{t: t, err: xerrors.New("a bad thing happened")})
124 _, err = client.IsCoderConnectRunning(ctxResolverErr, workspacesdk.CoderConnectQueryOptions{})
125 require.Error(t, err)
126
127 // Right name, wrong IP
128 ctxResolverWrongIP := workspacesdk.WithTestOnlyCoderContextResolver(ctx,
129 &fakeResolver{t: t, hostMap: map[string][]net.IP{
130 expectedName: {net.ParseIP("2001::34")},
131 }})
132 result, err = client.IsCoderConnectRunning(ctxResolverWrongIP, workspacesdk.CoderConnectQueryOptions{})
133 require.NoError(t, err)
134 require.False(t, result)
135}
136
137type fakeResolver struct {
138 t testing.TB

Callers

nothing calls this directly

Calls 12

CloseMethod · 0.95
ContextFunction · 0.92
WriteFunction · 0.92
NewFunction · 0.92
NewFunction · 0.92
IsCoderConnectRunningMethod · 0.80
ParseMethod · 0.65
NewMethod · 0.65
EqualMethod · 0.45
StringMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected