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

Function NewOptions

coderd/coderdtest/coderdtest.go:242–652  ·  view source on GitHub ↗
(t testing.TB, options *Options)

Source from the content-addressed store, hash-verified

240}
241
242func NewOptions(t testing.TB, options *Options) (func(http.Handler), context.CancelFunc, *url.URL, *coderd.Options) {
243 t.Helper()
244
245 if options == nil {
246 options = &Options{}
247 }
248 if options.Logger == nil {
249 logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug).Named("coderd")
250 options.Logger = &logger
251 }
252 if options.GoogleTokenValidator == nil {
253 ctx, cancelFunc := context.WithCancel(context.Background())
254 t.Cleanup(cancelFunc)
255 var err error
256 options.GoogleTokenValidator, err = idtoken.NewValidator(ctx, option.WithoutAuthentication())
257 require.NoError(t, err)
258 }
259 if options.AutobuildTicker == nil {
260 ticker := make(chan time.Time)
261 options.AutobuildTicker = ticker
262 t.Cleanup(func() { close(ticker) })
263 }
264 if options.AutobuildStats != nil {
265 t.Cleanup(func() {
266 close(options.AutobuildStats)
267 })
268 }
269
270 if options.Authorizer == nil {
271 defAuth := rbac.NewStrictCachingAuthorizer(prometheus.NewRegistry())
272 if _, ok := t.(*testing.T); ok {
273 options.Authorizer = &RecordingAuthorizer{
274 Wrapped: defAuth,
275 }
276 } else {
277 // In benchmarks, the recording authorizer greatly skews results.
278 options.Authorizer = defAuth
279 }
280 }
281
282 var usageInserter *atomic.Pointer[usage.Inserter]
283 if options.UsageInserter != nil {
284 usageInserter = &atomic.Pointer[usage.Inserter]{}
285 usageInserter.Store(&options.UsageInserter)
286 }
287 if options.Database == nil {
288 options.Database, options.Pubsub = dbtestutil.NewDB(t)
289 }
290 if options.CoordinatorResumeTokenProvider == nil {
291 options.CoordinatorResumeTokenProvider = tailnet.NewInsecureTestResumeTokenProvider()
292 }
293
294 if options.NotificationsEnqueuer == nil {
295 options.NotificationsEnqueuer = &notificationstest.FakeEnqueuer{}
296 }
297
298 accessControlStore := &atomic.Pointer[dbauthz.AccessControlStore]{}
299 var acs dbauthz.AccessControlStore = dbauthz.AGPLTemplateAccessControlStore{}

Callers 5

TestDERPForceWebSocketsFunction · 0.92
TestWorkspaceAgentFunction · 0.92
TestDERPHeadersFunction · 0.92
NewWithAPIFunction · 0.92
NewWithAPIFunction · 0.85

Calls 15

ServeHTTPMethod · 0.95
NewDBFunction · 0.92
NewManagerFunction · 0.92
NewFunction · 0.92
AsSystemRestrictedFunction · 0.92
NewFunction · 0.92
AsNotifierFunction · 0.92
RoleOwnerFunction · 0.92
IsUnauthorizedErrorFunction · 0.92
NewBatcherFunction · 0.92

Tested by 3

TestDERPForceWebSocketsFunction · 0.74
TestWorkspaceAgentFunction · 0.74
TestDERPHeadersFunction · 0.74