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

Function TestTemplateVersionsExternalAuth

coderd/templateversions_test.go:988–1048  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

986}
987
988func 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)

Callers

nothing calls this directly

Calls 13

NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
MustCompileMethod · 0.80
RunMethod · 0.65
CloseMethod · 0.65
StringMethod · 0.45
EmptyMethod · 0.45
LenMethod · 0.45

Tested by

no test coverage detected