@@ -19,7 +19,6 @@ import (
1919 "github.com/stretchr/testify/suite"
2020 "github.com/supabase/auth/internal/api/apierrors"
2121 "github.com/supabase/auth/internal/conf"
22- "github.com/supabase/auth/internal/sbff"
2322 "github.com/supabase/auth/internal/storage"
2423)
2524
@@ -416,166 +415,7 @@ func TestTimeoutResponseWriter(t *testing.T) {
416415 require .Equal (t , w1 .Result (), w2 .Result ())
417416}
418417
419- func (ts * MiddlewareTestSuite ) TestPerformRateLimitingWithSBFF () {
420- origRateLimitHeader := ts .Config .RateLimitHeader
421- origSBFFEnabled := ts .Config .Security .SbForwardedForEnabled
422-
423- defer func () {
424- ts .Config .RateLimitHeader = origRateLimitHeader
425- ts .Config .Security .SbForwardedForEnabled = origSBFFEnabled
426- }()
427-
428- ts .Config .RateLimitHeader = "X-Test-Perform-Rate-Limiting"
429- ts .Config .Security .SbForwardedForEnabled = true
430-
431- type headerSet struct {
432- rateLimiting string
433- sbForwardedFor string
434- }
435-
436- testCases := []struct {
437- name string
438- headerValues []headerSet
439- expErr error
440- }{
441- {
442- name : "multiple SBFF values, single rate limiting value" ,
443- headerValues : []headerSet {
444- {
445- sbForwardedFor : "192.168.1.100" ,
446- rateLimiting : "60.60.60.60" ,
447- },
448- {
449- sbForwardedFor : "192.168.1.200" ,
450- rateLimiting : "60.60.60.60" ,
451- },
452- },
453- expErr : nil ,
454- },
455- {
456- name : "single SBFF value, multiple rate limiting values" ,
457- headerValues : []headerSet {
458- {
459- sbForwardedFor : "192.168.1.100" ,
460- rateLimiting : "60.60.60.60" ,
461- },
462- {
463- sbForwardedFor : "192.168.1.100" ,
464- rateLimiting : "70.70.70.70" ,
465- },
466- },
467- expErr : apierrors .NewTooManyRequestsError (
468- apierrors .ErrorCodeOverRequestRateLimit ,
469- "Request rate limit reached" ,
470- ),
471- },
472- {
473- name : "no SBFF value, multiple rate limiting values" ,
474- headerValues : []headerSet {
475- {
476- sbForwardedFor : "" ,
477- rateLimiting : "60.60.60.60" ,
478- },
479- {
480- sbForwardedFor : "" ,
481- rateLimiting : "70.70.70.70" ,
482- },
483- },
484- expErr : nil ,
485- },
486- {
487- name : "no SBFF value, single rate limiting value" ,
488- headerValues : []headerSet {
489- {
490- sbForwardedFor : "" ,
491- rateLimiting : "60.60.60.60" ,
492- },
493- {
494- sbForwardedFor : "" ,
495- rateLimiting : "60.60.60.60" ,
496- },
497- },
498- expErr : apierrors .NewTooManyRequestsError (
499- apierrors .ErrorCodeOverRequestRateLimit ,
500- "Request rate limit reached" ,
501- ),
502- },
503- {
504- name : "invalid SBFF value, multiple rate limiting values" ,
505- headerValues : []headerSet {
506- {
507- sbForwardedFor : "invalid" ,
508- rateLimiting : "60.60.60.60" ,
509- },
510- {
511- sbForwardedFor : "invalid" ,
512- rateLimiting : "70.70.70.70" ,
513- },
514- },
515- expErr : nil ,
516- },
517- {
518- name : "invalid SBFF value, single rate limiting value" ,
519- headerValues : []headerSet {
520- {
521- sbForwardedFor : "invalid" ,
522- rateLimiting : "60.60.60.60" ,
523- },
524- {
525- sbForwardedFor : "invalid" ,
526- rateLimiting : "60.60.60.60" ,
527- },
528- },
529- expErr : apierrors .NewTooManyRequestsError (
530- apierrors .ErrorCodeOverRequestRateLimit ,
531- "Request rate limit reached" ,
532- ),
533- },
534- }
535-
536- // This test uses the SBFF middleware to inject the Sb-Forwarded-For IP address value, then
537- // wraps a handler that calls performRateLimiting and stores the error value.
538- for _ , tc := range testCases {
539- lmt := tollbooth .NewLimiter (
540- 1 ,
541- & limiter.ExpirableOptions {
542- DefaultExpirationTTL : time .Hour ,
543- },
544- )
545-
546- var obsErr error
547-
548- var handler http.HandlerFunc = func (rw http.ResponseWriter , r * http.Request ) {
549- obsErr = ts .API .performRateLimiting (lmt , r )
550- }
551-
552- errCallback := func (r * http.Request , err error ) {
553- }
554-
555- middleware := sbff .Middleware (& ts .Config .Security , errCallback )
556-
557- wrappedHandler := middleware (handler )
558-
559- for _ , h := range tc .headerValues {
560- r := httptest .NewRequest (http .MethodGet , "http://localhost/" , nil )
561-
562- if h .rateLimiting != "" {
563- r .Header .Set (ts .Config .RateLimitHeader , h .rateLimiting )
564- }
565-
566- if h .sbForwardedFor != "" {
567- r .Header .Set (sbff .HeaderName , h .sbForwardedFor )
568- }
569-
570- wrappedHandler .ServeHTTP (nil , r )
571- }
572-
573- require .ErrorIs (ts .T (), obsErr , tc .expErr )
574- }
575-
576- }
577-
578- func (ts * MiddlewareTestSuite ) TestPerformRateLimitingWithHeader () {
418+ func (ts * MiddlewareTestSuite ) TestPerformRateLimiting () {
579419 ts .Config .RateLimitHeader = "X-Test-Perform-Rate-Limiting"
580420
581421 tests := []struct {
0 commit comments