Skip to content

Commit 320c10d

Browse files
committed
Add tests for the template version Git auth endpoint
1 parent 1ad5db1 commit 320c10d

File tree

1 file changed

+48
-4
lines changed

1 file changed

+48
-4
lines changed

coderd/templateversions_test.go

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"bytes"
55
"context"
66
"net/http"
7+
"regexp"
78
"testing"
89

910
"github.com/google/uuid"
@@ -14,6 +15,7 @@ import (
1415
"github.com/coder/coder/coderd/audit"
1516
"github.com/coder/coder/coderd/coderdtest"
1617
"github.com/coder/coder/coderd/database"
18+
"github.com/coder/coder/coderd/gitauth"
1719
"github.com/coder/coder/coderd/provisionerdserver"
1820
"github.com/coder/coder/codersdk"
1921
"github.com/coder/coder/examples"
@@ -436,21 +438,63 @@ func TestTemplateVersionParameters(t *testing.T) {
436438

437439
func TestTemplateVersionsGitAuth(t *testing.T) {
438440
t.Parallel()
439-
t.Run("WithoutAny", func(t *testing.T) {
441+
t.Run("Empty", func(t *testing.T) {
440442
t.Parallel()
441-
client := coderdtest.New(t, nil)
443+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
442444
user := coderdtest.CreateFirstUser(t, client)
443445
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
446+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
444447

445448
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
446449
defer cancel()
447450

448451
_, err := client.TemplateVersionGitAuth(ctx, version.ID)
449452
require.NoError(t, err)
450453
})
451-
// t.Run("", func(t *testing.T) {
454+
t.Run("Authenticated", func(t *testing.T) {
455+
t.Parallel()
456+
client := coderdtest.New(t, &coderdtest.Options{
457+
IncludeProvisionerDaemon: true,
458+
GitAuthConfigs: []*gitauth.Config{{
459+
OAuth2Config: &oauth2Config{},
460+
ID: "github",
461+
Regex: regexp.MustCompile(`github\.com`),
462+
Type: codersdk.GitProviderGitHub,
463+
}},
464+
})
465+
user := coderdtest.CreateFirstUser(t, client)
466+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
467+
Parse: echo.ParseComplete,
468+
ProvisionPlan: []*proto.Provision_Response{{
469+
Type: &proto.Provision_Response_Complete{
470+
Complete: &proto.Provision_Complete{
471+
GitAuthProviders: []string{"github"},
472+
},
473+
},
474+
}},
475+
})
476+
version = coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
477+
require.Empty(t, version.Job.Error)
478+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
479+
defer cancel()
452480

453-
// })
481+
// Not authenticated to start!
482+
providers, err := client.TemplateVersionGitAuth(ctx, version.ID)
483+
require.NoError(t, err)
484+
require.Len(t, providers, 1)
485+
require.False(t, providers[0].Authenticated)
486+
487+
// Perform the Git auth callback to authenticate the user...
488+
resp := gitAuthCallback(t, "github", client)
489+
_ = resp.Body.Close()
490+
require.Equal(t, http.StatusTemporaryRedirect, resp.StatusCode)
491+
492+
// Ensure that the returned Git auth for the template is authenticated!
493+
providers, err = client.TemplateVersionGitAuth(ctx, version.ID)
494+
require.NoError(t, err)
495+
require.Len(t, providers, 1)
496+
require.True(t, providers[0].Authenticated)
497+
})
454498
}
455499

456500
func TestTemplateVersionResources(t *testing.T) {

0 commit comments

Comments
 (0)