4
4
"bytes"
5
5
"context"
6
6
"net/http"
7
+ "regexp"
7
8
"testing"
8
9
9
10
"github.com/google/uuid"
@@ -14,6 +15,7 @@ import (
14
15
"github.com/coder/coder/coderd/audit"
15
16
"github.com/coder/coder/coderd/coderdtest"
16
17
"github.com/coder/coder/coderd/database"
18
+ "github.com/coder/coder/coderd/gitauth"
17
19
"github.com/coder/coder/coderd/provisionerdserver"
18
20
"github.com/coder/coder/codersdk"
19
21
"github.com/coder/coder/examples"
@@ -436,21 +438,63 @@ func TestTemplateVersionParameters(t *testing.T) {
436
438
437
439
func TestTemplateVersionsGitAuth (t * testing.T ) {
438
440
t .Parallel ()
439
- t .Run ("WithoutAny " , func (t * testing.T ) {
441
+ t .Run ("Empty " , func (t * testing.T ) {
440
442
t .Parallel ()
441
- client := coderdtest .New (t , nil )
443
+ client := coderdtest .New (t , & coderdtest. Options { IncludeProvisionerDaemon : true } )
442
444
user := coderdtest .CreateFirstUser (t , client )
443
445
version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , nil )
446
+ coderdtest .AwaitTemplateVersionJob (t , client , version .ID )
444
447
445
448
ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
446
449
defer cancel ()
447
450
448
451
_ , err := client .TemplateVersionGitAuth (ctx , version .ID )
449
452
require .NoError (t , err )
450
453
})
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 ()
452
480
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
+ })
454
498
}
455
499
456
500
func TestTemplateVersionResources (t * testing.T ) {
0 commit comments