(t *testing.T)
| 986 | } |
| 987 | |
| 988 | func TestTemplateVersionsExternalAuth(t *testing.T) { |
| 989 | t.Parallel() |
| 990 | t.Run("Empty", func(t *testing.T) { |
| 991 | t.Parallel() |
| 992 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 993 | user := coderdtest.CreateFirstUser(t, client) |
| 994 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil) |
| 995 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 996 | |
| 997 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) |
| 998 | defer cancel() |
| 999 | |
| 1000 | _, err := client.TemplateVersionExternalAuth(ctx, version.ID) |
| 1001 | require.NoError(t, err) |
| 1002 | }) |
| 1003 | t.Run("Authenticated", func(t *testing.T) { |
| 1004 | t.Parallel() |
| 1005 | client := coderdtest.New(t, &coderdtest.Options{ |
| 1006 | IncludeProvisionerDaemon: true, |
| 1007 | ExternalAuthConfigs: []*externalauth.Config{{ |
| 1008 | InstrumentedOAuth2Config: &testutil.OAuth2Config{}, |
| 1009 | ID: "github", |
| 1010 | Regex: regexp.MustCompile(`github\.com`), |
| 1011 | Type: codersdk.EnhancedExternalAuthProviderGitHub.String(), |
| 1012 | }}, |
| 1013 | }) |
| 1014 | user := coderdtest.CreateFirstUser(t, client) |
| 1015 | version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{ |
| 1016 | Parse: echo.ParseComplete, |
| 1017 | ProvisionGraph: []*proto.Response{{ |
| 1018 | Type: &proto.Response_Graph{ |
| 1019 | Graph: &proto.GraphComplete{ |
| 1020 | ExternalAuthProviders: []*proto.ExternalAuthProviderResource{{Id: "github", Optional: true}}, |
| 1021 | }, |
| 1022 | }, |
| 1023 | }}, |
| 1024 | }) |
| 1025 | version = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 1026 | require.Empty(t, version.Job.Error) |
| 1027 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) |
| 1028 | defer cancel() |
| 1029 | |
| 1030 | // Not authenticated to start! |
| 1031 | providers, err := client.TemplateVersionExternalAuth(ctx, version.ID) |
| 1032 | require.NoError(t, err) |
| 1033 | require.Len(t, providers, 1) |
| 1034 | require.False(t, providers[0].Authenticated) |
| 1035 | |
| 1036 | // Perform the Git auth callback to authenticate the user... |
| 1037 | resp := coderdtest.RequestExternalAuthCallback(t, "github", client) |
| 1038 | _ = resp.Body.Close() |
| 1039 | require.Equal(t, http.StatusTemporaryRedirect, resp.StatusCode) |
| 1040 | |
| 1041 | // Ensure that the returned Git auth for the template is authenticated! |
| 1042 | providers, err = client.TemplateVersionExternalAuth(ctx, version.ID) |
| 1043 | require.NoError(t, err) |
| 1044 | require.Len(t, providers, 1) |
| 1045 | require.True(t, providers[0].Authenticated) |
nothing calls this directly
no test coverage detected