@@ -633,6 +633,94 @@ func TestServer(t *testing.T) {
633
633
cancelFunc ()
634
634
<- serverErr
635
635
})
636
+
637
+ t .Run ("RateLimit" , func (t * testing.T ) {
638
+ t .Parallel ()
639
+
640
+ t .Run ("Default" , func (t * testing.T ) {
641
+ t .Parallel ()
642
+ ctx , cancelFunc := context .WithCancel (context .Background ())
643
+ defer cancelFunc ()
644
+
645
+ root , cfg := clitest .New (t ,
646
+ "server" ,
647
+ "--in-memory" ,
648
+ "--address" , ":0" ,
649
+ "--access-url" , "http://example.com" ,
650
+ )
651
+ serverErr := make (chan error , 1 )
652
+ go func () {
653
+ serverErr <- root .ExecuteContext (ctx )
654
+ }()
655
+ accessURL := waitAccessURL (t , cfg )
656
+ client := codersdk .New (accessURL )
657
+
658
+ resp , err := client .Request (ctx , http .MethodGet , "/api/v2/buildinfo" , nil )
659
+ require .NoError (t , err )
660
+ defer resp .Body .Close ()
661
+ require .Equal (t , http .StatusOK , resp .StatusCode )
662
+ require .Equal (t , "512" , resp .Header .Get ("X-Ratelimit-Limit" ))
663
+ cancelFunc ()
664
+ <- serverErr
665
+ })
666
+
667
+ t .Run ("Changed" , func (t * testing.T ) {
668
+ t .Parallel ()
669
+ ctx , cancelFunc := context .WithCancel (context .Background ())
670
+ defer cancelFunc ()
671
+
672
+ val := "100"
673
+ root , cfg := clitest .New (t ,
674
+ "server" ,
675
+ "--in-memory" ,
676
+ "--address" , ":0" ,
677
+ "--access-url" , "http://example.com" ,
678
+ "--api-rate-limit" , val ,
679
+ )
680
+ serverErr := make (chan error , 1 )
681
+ go func () {
682
+ serverErr <- root .ExecuteContext (ctx )
683
+ }()
684
+ accessURL := waitAccessURL (t , cfg )
685
+ client := codersdk .New (accessURL )
686
+
687
+ resp , err := client .Request (ctx , http .MethodGet , "/api/v2/buildinfo" , nil )
688
+ require .NoError (t , err )
689
+ defer resp .Body .Close ()
690
+ require .Equal (t , http .StatusOK , resp .StatusCode )
691
+ require .Equal (t , val , resp .Header .Get ("X-Ratelimit-Limit" ))
692
+ cancelFunc ()
693
+ <- serverErr
694
+ })
695
+
696
+ t .Run ("Disabled" , func (t * testing.T ) {
697
+ t .Parallel ()
698
+ ctx , cancelFunc := context .WithCancel (context .Background ())
699
+ defer cancelFunc ()
700
+
701
+ root , cfg := clitest .New (t ,
702
+ "server" ,
703
+ "--in-memory" ,
704
+ "--address" , ":0" ,
705
+ "--access-url" , "http://example.com" ,
706
+ "--api-rate-limit" , "-1" ,
707
+ )
708
+ serverErr := make (chan error , 1 )
709
+ go func () {
710
+ serverErr <- root .ExecuteContext (ctx )
711
+ }()
712
+ accessURL := waitAccessURL (t , cfg )
713
+ client := codersdk .New (accessURL )
714
+
715
+ resp , err := client .Request (ctx , http .MethodGet , "/api/v2/buildinfo" , nil )
716
+ require .NoError (t , err )
717
+ defer resp .Body .Close ()
718
+ require .Equal (t , http .StatusOK , resp .StatusCode )
719
+ require .Equal (t , "" , resp .Header .Get ("X-Ratelimit-Limit" ))
720
+ cancelFunc ()
721
+ <- serverErr
722
+ })
723
+ })
636
724
}
637
725
638
726
func generateTLSCertificate (t testing.TB , commonName ... string ) (certPath , keyPath string ) {
0 commit comments