github.com/argoproj/argo-cd/v3@v3.2.1/server/session/ratelimiter_test.go (about)

     1  package session
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  
     9  	utilio "github.com/argoproj/argo-cd/v3/util/io"
    10  	"github.com/argoproj/argo-cd/v3/util/session"
    11  )
    12  
    13  func TestRateLimiter(t *testing.T) {
    14  	var closers []utilio.Closer
    15  	limiter := NewLoginRateLimiter(10)
    16  	for i := 0; i < 10; i++ {
    17  		closer, err := limiter()
    18  		require.NoError(t, err)
    19  		closers = append(closers, closer)
    20  	}
    21  	// 11 request should fail
    22  	_, err := limiter()
    23  	assert.Equal(t, err, session.InvalidLoginErr)
    24  
    25  	if !assert.Len(t, closers, 10) {
    26  		return
    27  	}
    28  	// complete one request
    29  	require.NoError(t, closers[0].Close())
    30  	_, err = limiter()
    31  	require.NoError(t, err)
    32  }