nolint:bodyclose
(t *testing.T)
| 483 | |
| 484 | // nolint:bodyclose |
| 485 | func 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 | }) |
nothing calls this directly
no test coverage detected