Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb344266

Browse files
committed
fix: move templates tests from enterprise/coderd/templates_test.go to coderd/templates_test.go
1 parentfa8f999 commitb344266

File tree

2 files changed

+286
-235
lines changed

2 files changed

+286
-235
lines changed

‎coderd/templates_test.go

Lines changed: 286 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,250 @@ func TestPostTemplateByOrganization(t *testing.T) {
441441
})
442442
}
443443

444+
funcTestTemplates(t*testing.T) {
445+
t.Parallel()
446+
447+
t.Run("ListEmpty",func(t*testing.T) {
448+
t.Parallel()
449+
client:=coderdtest.New(t,nil)
450+
_=coderdtest.CreateFirstUser(t,client)
451+
452+
ctx:=testutil.Context(t,testutil.WaitLong)
453+
454+
templates,err:=client.Templates(ctx, codersdk.TemplateFilter{})
455+
require.NoError(t,err)
456+
require.NotNil(t,templates)
457+
require.Len(t,templates,0)
458+
})
459+
460+
// Should return only non-deprecated templates by default
461+
t.Run("ListMultiple non-deprecated",func(t*testing.T) {
462+
t.Parallel()
463+
464+
owner,db:=coderdtest.NewWithDatabase(t,&coderdtest.Options{IncludeProvisionerDaemon:false})
465+
user:=coderdtest.CreateFirstUser(t,owner)
466+
client,tplAdmin:=coderdtest.CreateAnotherUser(t,owner,user.OrganizationID,rbac.RoleTemplateAdmin())
467+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
468+
version2:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
469+
foo:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID,func(request*codersdk.CreateTemplateRequest) {
470+
request.Name="foo"
471+
})
472+
bar:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version2.ID,func(request*codersdk.CreateTemplateRequest) {
473+
request.Name="bar"
474+
})
475+
476+
ctx:=testutil.Context(t,testutil.WaitLong)
477+
478+
// Deprecate bar template
479+
deprecationMessage:="Some deprecated message"
480+
err:=db.UpdateTemplateAccessControlByID(dbauthz.As(ctx,coderdtest.AuthzUserSubject(tplAdmin,user.OrganizationID)), database.UpdateTemplateAccessControlByIDParams{
481+
ID:bar.ID,
482+
RequireActiveVersion:false,
483+
Deprecated:deprecationMessage,
484+
})
485+
require.NoError(t,err)
486+
487+
updatedBar,err:=client.Template(ctx,bar.ID)
488+
require.NoError(t,err)
489+
require.True(t,updatedBar.Deprecated)
490+
require.Equal(t,deprecationMessage,updatedBar.DeprecationMessage)
491+
492+
// Should return only the non-deprecated template (foo)
493+
templates,err:=client.Templates(ctx, codersdk.TemplateFilter{})
494+
require.NoError(t,err)
495+
require.Len(t,templates,1)
496+
497+
require.Equal(t,foo.ID,templates[0].ID)
498+
require.False(t,templates[0].Deprecated)
499+
require.Empty(t,templates[0].DeprecationMessage)
500+
})
501+
502+
// Should return only deprecated templates when filtering by deprecated:true
503+
t.Run("ListMultiple deprecated:true",func(t*testing.T) {
504+
t.Parallel()
505+
506+
owner,db:=coderdtest.NewWithDatabase(t,&coderdtest.Options{IncludeProvisionerDaemon:false})
507+
user:=coderdtest.CreateFirstUser(t,owner)
508+
client,tplAdmin:=coderdtest.CreateAnotherUser(t,owner,user.OrganizationID,rbac.RoleTemplateAdmin())
509+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
510+
version2:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
511+
foo:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID,func(request*codersdk.CreateTemplateRequest) {
512+
request.Name="foo"
513+
})
514+
bar:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version2.ID,func(request*codersdk.CreateTemplateRequest) {
515+
request.Name="bar"
516+
})
517+
518+
ctx:=testutil.Context(t,testutil.WaitLong)
519+
520+
// Deprecate foo and bar templates
521+
deprecationMessage:="Some deprecated message"
522+
err:=db.UpdateTemplateAccessControlByID(dbauthz.As(ctx,coderdtest.AuthzUserSubject(tplAdmin,user.OrganizationID)), database.UpdateTemplateAccessControlByIDParams{
523+
ID:foo.ID,
524+
RequireActiveVersion:false,
525+
Deprecated:deprecationMessage,
526+
})
527+
require.NoError(t,err)
528+
err=db.UpdateTemplateAccessControlByID(dbauthz.As(ctx,coderdtest.AuthzUserSubject(tplAdmin,user.OrganizationID)), database.UpdateTemplateAccessControlByIDParams{
529+
ID:bar.ID,
530+
RequireActiveVersion:false,
531+
Deprecated:deprecationMessage,
532+
})
533+
require.NoError(t,err)
534+
535+
// Should have deprecation message set
536+
updatedFoo,err:=client.Template(ctx,foo.ID)
537+
require.NoError(t,err)
538+
require.True(t,updatedFoo.Deprecated)
539+
require.Equal(t,deprecationMessage,updatedFoo.DeprecationMessage)
540+
541+
updatedBar,err:=client.Template(ctx,bar.ID)
542+
require.NoError(t,err)
543+
require.True(t,updatedBar.Deprecated)
544+
require.Equal(t,deprecationMessage,updatedBar.DeprecationMessage)
545+
546+
// Should return only the deprecated templates (foo and bar)
547+
templates,err:=client.Templates(ctx, codersdk.TemplateFilter{
548+
SearchQuery:"deprecated:true",
549+
})
550+
require.NoError(t,err)
551+
require.Len(t,templates,2)
552+
553+
// Make sure all the deprecated templates are returned
554+
expectedTemplates:=map[uuid.UUID]codersdk.Template{
555+
updatedFoo.ID:updatedFoo,
556+
updatedBar.ID:updatedBar,
557+
}
558+
actualTemplates:=map[uuid.UUID]codersdk.Template{}
559+
for_,template:=rangetemplates {
560+
actualTemplates[template.ID]=template
561+
}
562+
563+
require.Equal(t,len(expectedTemplates),len(actualTemplates))
564+
forid,expectedTemplate:=rangeexpectedTemplates {
565+
actualTemplate,ok:=actualTemplates[id]
566+
require.True(t,ok)
567+
require.Equal(t,expectedTemplate.ID,actualTemplate.ID)
568+
require.Equal(t,true,actualTemplate.Deprecated)
569+
require.Equal(t,expectedTemplate.DeprecationMessage,actualTemplate.DeprecationMessage)
570+
}
571+
})
572+
573+
// Should return only non-deprecated templates when filtering by deprecated:false
574+
t.Run("ListMultiple deprecated:false",func(t*testing.T) {
575+
t.Parallel()
576+
577+
client:=coderdtest.New(t,nil)
578+
user:=coderdtest.CreateFirstUser(t,client)
579+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
580+
version2:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
581+
foo:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID,func(request*codersdk.CreateTemplateRequest) {
582+
request.Name="foo"
583+
})
584+
bar:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version2.ID,func(request*codersdk.CreateTemplateRequest) {
585+
request.Name="bar"
586+
})
587+
588+
ctx:=testutil.Context(t,testutil.WaitLong)
589+
590+
// Should return only the non-deprecated templates
591+
templates,err:=client.Templates(ctx, codersdk.TemplateFilter{
592+
SearchQuery:"deprecated:false",
593+
})
594+
require.NoError(t,err)
595+
require.Len(t,templates,2)
596+
597+
// Make sure all the non-deprecated templates are returned
598+
expectedTemplates:=map[uuid.UUID]codersdk.Template{
599+
foo.ID:foo,
600+
bar.ID:bar,
601+
}
602+
actualTemplates:=map[uuid.UUID]codersdk.Template{}
603+
for_,template:=rangetemplates {
604+
actualTemplates[template.ID]=template
605+
}
606+
607+
require.Equal(t,len(expectedTemplates),len(actualTemplates))
608+
forid,expectedTemplate:=rangeexpectedTemplates {
609+
actualTemplate,ok:=actualTemplates[id]
610+
require.True(t,ok)
611+
require.Equal(t,expectedTemplate.ID,actualTemplate.ID)
612+
require.Equal(t,false,actualTemplate.Deprecated)
613+
require.Equal(t,expectedTemplate.DeprecationMessage,actualTemplate.DeprecationMessage)
614+
}
615+
})
616+
617+
// Should return a re-enabled template in the default (non-deprecated) list
618+
t.Run("ListMultiple re-enabled template",func(t*testing.T) {
619+
t.Parallel()
620+
621+
owner,db:=coderdtest.NewWithDatabase(t,&coderdtest.Options{IncludeProvisionerDaemon:false})
622+
user:=coderdtest.CreateFirstUser(t,owner)
623+
client,tplAdmin:=coderdtest.CreateAnotherUser(t,owner,user.OrganizationID,rbac.RoleTemplateAdmin())
624+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
625+
version2:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
626+
foo:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID,func(request*codersdk.CreateTemplateRequest) {
627+
request.Name="foo"
628+
})
629+
bar:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version2.ID,func(request*codersdk.CreateTemplateRequest) {
630+
request.Name="bar"
631+
})
632+
633+
ctx:=testutil.Context(t,testutil.WaitLong)
634+
635+
// Deprecate bar template
636+
deprecationMessage:="Some deprecated message"
637+
err:=db.UpdateTemplateAccessControlByID(dbauthz.As(ctx,coderdtest.AuthzUserSubject(tplAdmin,user.OrganizationID)), database.UpdateTemplateAccessControlByIDParams{
638+
ID:bar.ID,
639+
RequireActiveVersion:false,
640+
Deprecated:deprecationMessage,
641+
})
642+
require.NoError(t,err)
643+
644+
updatedBar,err:=client.Template(ctx,bar.ID)
645+
require.NoError(t,err)
646+
require.True(t,updatedBar.Deprecated)
647+
require.Equal(t,deprecationMessage,updatedBar.DeprecationMessage)
648+
649+
// Re-enable bar template
650+
err=db.UpdateTemplateAccessControlByID(dbauthz.As(ctx,coderdtest.AuthzUserSubject(tplAdmin,user.OrganizationID)), database.UpdateTemplateAccessControlByIDParams{
651+
ID:bar.ID,
652+
RequireActiveVersion:false,
653+
Deprecated:"",
654+
})
655+
require.NoError(t,err)
656+
657+
reEnabledBar,err:=client.Template(ctx,bar.ID)
658+
require.NoError(t,err)
659+
require.False(t,reEnabledBar.Deprecated)
660+
require.Empty(t,reEnabledBar.DeprecationMessage)
661+
662+
// Should return only the non-deprecated templates (foo and bar)
663+
templates,err:=client.Templates(ctx, codersdk.TemplateFilter{})
664+
require.NoError(t,err)
665+
require.Len(t,templates,2)
666+
667+
// Make sure all the non-deprecated templates are returned
668+
expectedTemplates:=map[uuid.UUID]codersdk.Template{
669+
foo.ID:foo,
670+
bar.ID:bar,
671+
}
672+
actualTemplates:=map[uuid.UUID]codersdk.Template{}
673+
for_,template:=rangetemplates {
674+
actualTemplates[template.ID]=template
675+
}
676+
677+
require.Equal(t,len(expectedTemplates),len(actualTemplates))
678+
forid,expectedTemplate:=rangeexpectedTemplates {
679+
actualTemplate,ok:=actualTemplates[id]
680+
require.True(t,ok)
681+
require.Equal(t,expectedTemplate.ID,actualTemplate.ID)
682+
require.Equal(t,false,actualTemplate.Deprecated)
683+
require.Equal(t,expectedTemplate.DeprecationMessage,actualTemplate.DeprecationMessage)
684+
}
685+
})
686+
}
687+
444688
funcTestTemplatesByOrganization(t*testing.T) {
445689
t.Parallel()
446690
t.Run("ListEmpty",func(t*testing.T) {
@@ -525,6 +769,48 @@ func TestTemplatesByOrganization(t *testing.T) {
525769
require.Len(t,templates,1)
526770
require.Equal(t,bar.ID,templates[0].ID)
527771
})
772+
773+
// Should return only non-deprecated templates by default
774+
t.Run("ListMultiple non-deprecated",func(t*testing.T) {
775+
t.Parallel()
776+
777+
owner,db:=coderdtest.NewWithDatabase(t,&coderdtest.Options{IncludeProvisionerDaemon:false})
778+
user:=coderdtest.CreateFirstUser(t,owner)
779+
client,tplAdmin:=coderdtest.CreateAnotherUser(t,owner,user.OrganizationID,rbac.RoleTemplateAdmin())
780+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
781+
version2:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
782+
foo:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID,func(request*codersdk.CreateTemplateRequest) {
783+
request.Name="foo"
784+
})
785+
bar:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version2.ID,func(request*codersdk.CreateTemplateRequest) {
786+
request.Name="bar"
787+
})
788+
789+
ctx:=testutil.Context(t,testutil.WaitLong)
790+
791+
// Deprecate bar template
792+
deprecationMessage:="Some deprecated message"
793+
err:=db.UpdateTemplateAccessControlByID(dbauthz.As(ctx,coderdtest.AuthzUserSubject(tplAdmin,user.OrganizationID)), database.UpdateTemplateAccessControlByIDParams{
794+
ID:bar.ID,
795+
RequireActiveVersion:false,
796+
Deprecated:deprecationMessage,
797+
})
798+
require.NoError(t,err)
799+
800+
updatedBar,err:=client.Template(ctx,bar.ID)
801+
require.NoError(t,err)
802+
require.True(t,updatedBar.Deprecated)
803+
require.Equal(t,deprecationMessage,updatedBar.DeprecationMessage)
804+
805+
// Should return only the non-deprecated template (foo)
806+
templates,err:=client.TemplatesByOrganization(ctx,user.OrganizationID)
807+
require.NoError(t,err)
808+
require.Len(t,templates,1)
809+
810+
require.Equal(t,foo.ID,templates[0].ID)
811+
require.False(t,templates[0].Deprecated)
812+
require.Empty(t,templates[0].DeprecationMessage)
813+
})
528814
}
529815

530816
funcTestTemplateByOrganizationAndName(t*testing.T) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp