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

Function TestExternalAuthCallback

coderd/externalauth_test.go:485–851  ·  view source on GitHub ↗

nolint:bodyclose

(t *testing.T)

Source from the content-addressed store, hash-verified

483
484// nolint:bodyclose
485func TestExternalAuthCallback(t *testing.T) {
486 t.Parallel()
487 t.Run("NoMatchingConfig", func(t *testing.T) {
488 t.Parallel()
489 client := coderdtest.New(t, &coderdtest.Options{
490 IncludeProvisionerDaemon: true,
491 ExternalAuthConfigs: []*externalauth.Config{},
492 })
493 user := coderdtest.CreateFirstUser(t, client)
494 authToken := uuid.NewString()
495 version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
496 Parse: echo.ParseComplete,
497 ProvisionPlan: echo.PlanComplete,
498 ProvisionGraph: echo.ProvisionGraphWithAgent(authToken),
499 })
500 template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
501 coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
502 workspace := coderdtest.CreateWorkspace(t, client, template.ID)
503 coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
504
505 agentClient := agentsdk.New(client.URL, agentsdk.WithFixedToken(authToken))
506 _, err := agentClient.ExternalAuth(context.Background(), agentsdk.ExternalAuthRequest{
507 Match: "github.com",
508 })
509 var apiError *codersdk.Error
510 require.ErrorAs(t, err, &apiError)
511 require.Equal(t, http.StatusNotFound, apiError.StatusCode())
512 })
513 t.Run("ReturnsURL", func(t *testing.T) {
514 t.Parallel()
515 client := coderdtest.New(t, &coderdtest.Options{
516 IncludeProvisionerDaemon: true,
517 ExternalAuthConfigs: []*externalauth.Config{{
518 InstrumentedOAuth2Config: &testutil.OAuth2Config{},
519 ID: "github",
520 Regex: regexp.MustCompile(`github\.com`),
521 Type: codersdk.EnhancedExternalAuthProviderGitHub.String(),
522 }},
523 })
524 user := coderdtest.CreateFirstUser(t, client)
525 authToken := uuid.NewString()
526 version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
527 Parse: echo.ParseComplete,
528 ProvisionPlan: echo.PlanComplete,
529 ProvisionGraph: echo.ProvisionGraphWithAgent(authToken),
530 })
531 template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
532 coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
533 workspace := coderdtest.CreateWorkspace(t, client, template.ID)
534 coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
535
536 agentClient := agentsdk.New(client.URL, agentsdk.WithFixedToken(authToken))
537 token, err := agentClient.ExternalAuth(context.Background(), agentsdk.ExternalAuthRequest{
538 Match: "github.com/asd/asd",
539 })
540 require.NoError(t, err)
541 require.True(t, strings.HasSuffix(token.URL, fmt.Sprintf("/external-auth/%s", "github")), token.URL)
542 })

Callers

nothing calls this directly

Calls 15

StatusCodeMethod · 0.95
CloseMethod · 0.95
NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
ProvisionGraphWithAgentFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
NewFunction · 0.92
WithFixedTokenFunction · 0.92

Tested by

no test coverage detected