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

Function NewClientWithSecrets

agent/agenttest/client.go:51–97  ·  view source on GitHub ↗

NewClientWithSecrets is like NewClient but also injects user secrets into the agent's proto manifest. Separate from NewClient because agentsdk.Manifest intentionally does not carry secrets; see the Manifest doc comment in codersdk/agentsdk.

(t testing.TB,
	logger slog.Logger,
	agentID uuid.UUID,
	manifest agentsdk.Manifest,
	secrets []agentsdk.WorkspaceSecret,
	statsChan chan *agentproto.Stats,
	coordinator tailnet.Coordinator,
)

Source from the content-addressed store, hash-verified

49// because agentsdk.Manifest intentionally does not carry secrets;
50// see the Manifest doc comment in codersdk/agentsdk.
51func NewClientWithSecrets(t testing.TB,
52 logger slog.Logger,
53 agentID uuid.UUID,
54 manifest agentsdk.Manifest,
55 secrets []agentsdk.WorkspaceSecret,
56 statsChan chan *agentproto.Stats,
57 coordinator tailnet.Coordinator,
58) *Client {
59 if manifest.AgentID == uuid.Nil {
60 manifest.AgentID = agentID
61 }
62 coordPtr := atomic.Pointer[tailnet.Coordinator]{}
63 coordPtr.Store(&coordinator)
64 mux := drpcmux.New()
65 derpMapUpdates := make(chan *tailcfg.DERPMap)
66 drpcService := &tailnet.DRPCService{
67 CoordPtr: &coordPtr,
68 Logger: logger.Named("tailnetsvc"),
69 DerpMapUpdateFrequency: time.Microsecond,
70 DerpMapFn: func() *tailcfg.DERPMap { return <-derpMapUpdates },
71 }
72 err := proto.DRPCRegisterTailnet(mux, drpcService)
73 require.NoError(t, err)
74 mp, err := agentsdk.ProtoFromManifest(manifest)
75 require.NoError(t, err)
76 mp.Secrets = agentsdk.ProtoFromSecrets(secrets)
77 fakeAAPI := NewFakeAgentAPI(t, logger, mp, statsChan)
78 err = agentproto.DRPCRegisterAgent(mux, fakeAAPI)
79 require.NoError(t, err)
80 server := drpcserver.NewWithOptions(mux, drpcserver.Options{
81 Manager: drpcsdk.DefaultDRPCOptions(nil),
82 Log: func(err error) {
83 if xerrors.Is(err, io.EOF) {
84 return
85 }
86 logger.Debug(context.Background(), "drpc server error", slog.Error(err))
87 },
88 })
89 return &Client{
90 t: t,
91 logger: logger.Named("client"),
92 agentID: agentID,
93 server: server,
94 fakeAgentAPI: fakeAAPI,
95 derpMapUpdates: derpMapUpdates,
96 }
97}
98
99type Client struct {
100 t testing.TB

Callers 2

setupAgentWithSecretsFunction · 0.92
NewClientFunction · 0.85

Calls 10

DRPCRegisterTailnetFunction · 0.92
ProtoFromManifestFunction · 0.92
ProtoFromSecretsFunction · 0.92
DefaultDRPCOptionsFunction · 0.92
NewFakeAgentAPIFunction · 0.85
NamedMethod · 0.80
NewMethod · 0.65
StoreMethod · 0.45
IsMethod · 0.45
ErrorMethod · 0.45

Tested by 1

setupAgentWithSecretsFunction · 0.74