@@ -552,213 +552,7 @@ func TestTemplateEdit(t *testing.T) {
552
552
assert .Equal (t ,template .AutostartRequirement .DaysOfWeek ,updated .AutostartRequirement .DaysOfWeek )
553
553
})
554
554
})
555
- // TODO(@dean): remove this test when we remove max_ttl
556
- t .Run ("MaxTTL" ,func (t * testing.T ) {
557
- t .Parallel ()
558
- t .Run ("BlockedAGPL" ,func (t * testing.T ) {
559
- t .Parallel ()
560
- client := coderdtest .New (t ,& coderdtest.Options {IncludeProvisionerDaemon :true })
561
- owner := coderdtest .CreateFirstUser (t ,client )
562
- templateAdmin ,_ := coderdtest .CreateAnotherUser (t ,client ,owner .OrganizationID ,rbac .RoleTemplateAdmin ())
563
- version := coderdtest .CreateTemplateVersion (t ,client ,owner .OrganizationID ,nil )
564
- _ = coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version .ID )
565
- template := coderdtest .CreateTemplate (t ,client ,owner .OrganizationID ,version .ID ,func (ctr * codersdk.CreateTemplateRequest ) {
566
- ctr .DefaultTTLMillis = nil
567
- })
568
-
569
- // Test the cli command.
570
- cmdArgs := []string {
571
- "templates" ,
572
- "edit" ,
573
- template .Name ,
574
- "--max-ttl" ,"1h" ,
575
- }
576
- inv ,root := clitest .New (t ,cmdArgs ... )
577
- clitest .SetupConfig (t ,templateAdmin ,root )
578
555
579
- ctx := testutil .Context (t ,testutil .WaitLong )
580
- err := inv .WithContext (ctx ).Run ()
581
- require .Error (t ,err )
582
- require .ErrorContains (t ,err ,"appears to be an AGPL deployment" )
583
-
584
- // Assert that the template metadata did not change.
585
- updated ,err := client .Template (context .Background (),template .ID )
586
- require .NoError (t ,err )
587
- assert .Equal (t ,template .Name ,updated .Name )
588
- assert .Equal (t ,template .Description ,updated .Description )
589
- assert .Equal (t ,template .Icon ,updated .Icon )
590
- assert .Equal (t ,template .DisplayName ,updated .DisplayName )
591
- assert .Equal (t ,template .DefaultTTLMillis ,updated .DefaultTTLMillis )
592
- })
593
-
594
- t .Run ("BlockedNotEntitled" ,func (t * testing.T ) {
595
- t .Parallel ()
596
- client := coderdtest .New (t ,& coderdtest.Options {IncludeProvisionerDaemon :true })
597
- owner := coderdtest .CreateFirstUser (t ,client )
598
- templateAdmin ,_ := coderdtest .CreateAnotherUser (t ,client ,owner .OrganizationID ,rbac .RoleTemplateAdmin ())
599
- version := coderdtest .CreateTemplateVersion (t ,client ,owner .OrganizationID ,nil )
600
- _ = coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version .ID )
601
- template := coderdtest .CreateTemplate (t ,client ,owner .OrganizationID ,version .ID ,func (ctr * codersdk.CreateTemplateRequest ) {
602
- ctr .DefaultTTLMillis = nil
603
- })
604
-
605
- // Make a proxy server that will return a valid entitlements
606
- // response, but without advanced scheduling entitlement.
607
- proxy := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter ,r * http.Request ) {
608
- if r .URL .Path == "/api/v2/entitlements" {
609
- res := codersdk.Entitlements {
610
- Features :map [codersdk.FeatureName ]codersdk.Feature {},
611
- Warnings : []string {},
612
- Errors : []string {},
613
- HasLicense :true ,
614
- Trial :true ,
615
- RequireTelemetry :false ,
616
- }
617
- for _ ,feature := range codersdk .FeatureNames {
618
- res .Features [feature ]= codersdk.Feature {
619
- Entitlement :codersdk .EntitlementNotEntitled ,
620
- Enabled :false ,
621
- Limit :nil ,
622
- Actual :nil ,
623
- }
624
- }
625
- httpapi .Write (r .Context (),w ,http .StatusOK ,res )
626
- return
627
- }
628
-
629
- // Otherwise, proxy the request to the real API server.
630
- rp := httputil .NewSingleHostReverseProxy (client .URL )
631
- tp := & http.Transport {}
632
- defer tp .CloseIdleConnections ()
633
- rp .Transport = tp
634
- rp .ServeHTTP (w ,r )
635
- }))
636
- defer proxy .Close ()
637
-
638
- // Create a new client that uses the proxy server.
639
- proxyURL ,err := url .Parse (proxy .URL )
640
- require .NoError (t ,err )
641
- proxyClient := codersdk .New (proxyURL )
642
- proxyClient .SetSessionToken (templateAdmin .SessionToken ())
643
- t .Cleanup (proxyClient .HTTPClient .CloseIdleConnections )
644
-
645
- // Test the cli command.
646
- cmdArgs := []string {
647
- "templates" ,
648
- "edit" ,
649
- template .Name ,
650
- "--max-ttl" ,"1h" ,
651
- }
652
- inv ,root := clitest .New (t ,cmdArgs ... )
653
- clitest .SetupConfig (t ,proxyClient ,root )
654
-
655
- ctx := testutil .Context (t ,testutil .WaitLong )
656
- err = inv .WithContext (ctx ).Run ()
657
- require .Error (t ,err )
658
- require .ErrorContains (t ,err ,"license is not entitled" )
659
-
660
- // Assert that the template metadata did not change.
661
- updated ,err := client .Template (context .Background (),template .ID )
662
- require .NoError (t ,err )
663
- assert .Equal (t ,template .Name ,updated .Name )
664
- assert .Equal (t ,template .Description ,updated .Description )
665
- assert .Equal (t ,template .Icon ,updated .Icon )
666
- assert .Equal (t ,template .DisplayName ,updated .DisplayName )
667
- assert .Equal (t ,template .DefaultTTLMillis ,updated .DefaultTTLMillis )
668
- })
669
- t .Run ("Entitled" ,func (t * testing.T ) {
670
- t .Parallel ()
671
- client := coderdtest .New (t ,& coderdtest.Options {IncludeProvisionerDaemon :true })
672
- owner := coderdtest .CreateFirstUser (t ,client )
673
- templateAdmin ,_ := coderdtest .CreateAnotherUser (t ,client ,owner .OrganizationID ,rbac .RoleTemplateAdmin ())
674
- version := coderdtest .CreateTemplateVersion (t ,client ,owner .OrganizationID ,nil )
675
- _ = coderdtest .AwaitTemplateVersionJobCompleted (t ,client ,version .ID )
676
- template := coderdtest .CreateTemplate (t ,client ,owner .OrganizationID ,version .ID ,func (ctr * codersdk.CreateTemplateRequest ) {
677
- ctr .DefaultTTLMillis = nil
678
- })
679
-
680
- // Make a proxy server that will return a valid entitlements
681
- // response, including a valid advanced scheduling entitlement.
682
- var updateTemplateCalled int64
683
- proxy := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter ,r * http.Request ) {
684
- if r .URL .Path == "/api/v2/entitlements" {
685
- res := codersdk.Entitlements {
686
- Features :map [codersdk.FeatureName ]codersdk.Feature {},
687
- Warnings : []string {},
688
- Errors : []string {},
689
- HasLicense :true ,
690
- Trial :true ,
691
- RequireTelemetry :false ,
692
- }
693
- for _ ,feature := range codersdk .FeatureNames {
694
- var one int64 = 1
695
- res .Features [feature ]= codersdk.Feature {
696
- Entitlement :codersdk .EntitlementNotEntitled ,
697
- Enabled :true ,
698
- Limit :& one ,
699
- Actual :& one ,
700
- }
701
- }
702
- httpapi .Write (r .Context (),w ,http .StatusOK ,res )
703
- return
704
- }
705
- if strings .HasPrefix (r .URL .Path ,"/api/v2/templates/" ) {
706
- body ,err := io .ReadAll (r .Body )
707
- require .NoError (t ,err )
708
- _ = r .Body .Close ()
709
-
710
- var req codersdk.UpdateTemplateMeta
711
- err = json .Unmarshal (body ,& req )
712
- require .NoError (t ,err )
713
-
714
- r .Body = io .NopCloser (bytes .NewReader (body ))
715
- atomic .AddInt64 (& updateTemplateCalled ,1 )
716
- // We still want to call the real route.
717
- }
718
-
719
- // Otherwise, proxy the request to the real API server.
720
- rp := httputil .NewSingleHostReverseProxy (client .URL )
721
- tp := & http.Transport {}
722
- defer tp .CloseIdleConnections ()
723
- rp .Transport = tp
724
- rp .ServeHTTP (w ,r )
725
- }))
726
- defer proxy .Close ()
727
-
728
- // Create a new client that uses the proxy server.
729
- proxyURL ,err := url .Parse (proxy .URL )
730
- require .NoError (t ,err )
731
- proxyClient := codersdk .New (proxyURL )
732
- proxyClient .SetSessionToken (templateAdmin .SessionToken ())
733
- t .Cleanup (proxyClient .HTTPClient .CloseIdleConnections )
734
-
735
- // Test the cli command.
736
- cmdArgs := []string {
737
- "templates" ,
738
- "edit" ,
739
- template .Name ,
740
- "--max-ttl" ,"1h" ,
741
- }
742
- inv ,root := clitest .New (t ,cmdArgs ... )
743
- clitest .SetupConfig (t ,proxyClient ,root )
744
-
745
- ctx := testutil .Context (t ,testutil .WaitLong )
746
- err = inv .WithContext (ctx ).Run ()
747
- require .NoError (t ,err )
748
-
749
- require .EqualValues (t ,1 ,atomic .LoadInt64 (& updateTemplateCalled ))
750
-
751
- // Assert that the template metadata did not change. We verify the
752
- // correct request gets sent to the server already.
753
- updated ,err := client .Template (context .Background (),template .ID )
754
- require .NoError (t ,err )
755
- assert .Equal (t ,template .Name ,updated .Name )
756
- assert .Equal (t ,template .Description ,updated .Description )
757
- assert .Equal (t ,template .Icon ,updated .Icon )
758
- assert .Equal (t ,template .DisplayName ,updated .DisplayName )
759
- assert .Equal (t ,template .DefaultTTLMillis ,updated .DefaultTTLMillis )
760
- })
761
- })
762
556
t .Run ("AllowUserScheduling" ,func (t * testing.T ) {
763
557
t .Parallel ()
764
558
t .Run ("BlockedAGPL" ,func (t * testing.T ) {