github.com/clerkinc/clerk-sdk-go@v1.49.1/clerk/tokens_options_test.go (about)

     1  package clerk
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestWithAuthorizedPartyNone(t *testing.T) {
    11  	opts := &verifyTokenOptions{}
    12  	err := WithAuthorizedParty()(opts)
    13  
    14  	if assert.NoError(t, err) {
    15  		assert.Len(t, opts.authorizedParties, 0)
    16  	}
    17  }
    18  
    19  func TestWithAuthorizedPartySingle(t *testing.T) {
    20  	opts := &verifyTokenOptions{}
    21  	err := WithAuthorizedParty("test-party")(opts)
    22  
    23  	assert.NoError(t, err)
    24  	assert.Len(t, opts.authorizedParties, 1)
    25  	assert.Equal(t, arrayToMap(t, []string{"test-party"}), opts.authorizedParties)
    26  }
    27  
    28  func TestWithAuthorizedPartyMultiple(t *testing.T) {
    29  	authorizedParties := []string{"test-party", "another_party", "yet-another-party"}
    30  
    31  	opts := &verifyTokenOptions{}
    32  	err := WithAuthorizedParty(authorizedParties...)(opts)
    33  
    34  	assert.NoError(t, err)
    35  	assert.Len(t, opts.authorizedParties, len(authorizedParties))
    36  	assert.Equal(t, arrayToMap(t, authorizedParties), opts.authorizedParties)
    37  }
    38  
    39  func TestWithLeeway(t *testing.T) {
    40  	leeway := 5 * time.Second
    41  
    42  	opts := &verifyTokenOptions{}
    43  	err := WithLeeway(leeway)(opts)
    44  
    45  	assert.NoError(t, err)
    46  	assert.Equal(t, opts.leeway, leeway)
    47  }
    48  
    49  func TestWithJWTVerificationKey(t *testing.T) {
    50  	key := "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm7Zs5PFGrsrmvys1hHkSDOYoghz9+z9o+E6WgMqR+R/Af0/QRqQo/YwCmzB+01+5Us1NdSa32YuQYiMxV4T+g3eebSiBqPNiCyjl2wttCm5LAV5iHyVqwnBNcrXlA5mRFQz8lmyfpoksNDEVzJPwwHzPjKSIKsGgsrPnw6XsyOPJY/8UocscEcHptTmahHrbfNZLN0FrMneHw9tnn2AiUctuU9bw80KwPd+WFdZ6UZF/kPxVFsANJpz1aMpz7Lxi3Sz1ztUCdHvNJitRUO1Qewby4xi9DfIEECMq78LLmwGaTiKxutC6KwHLJEcbUblOJHpYVEXdBex9xGJ/2DHrBQIDAQAB"
    51  
    52  	opts := &verifyTokenOptions{}
    53  	err := WithJWTVerificationKey(key)(opts)
    54  
    55  	if assert.NoError(t, err) {
    56  		assert.Equal(t, "RS256", opts.jwk.Algorithm)
    57  	}
    58  }
    59  
    60  func TestWithJWTVerificationKey_PEM(t *testing.T) {
    61  	key := `-----BEGIN PUBLIC KEY-----
    62  MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm7Zs5PFGrsrmvys1hHkS
    63  DOYoghz9+z9o+E6WgMqR+R/Af0/QRqQo/YwCmzB+01+5Us1NdSa32YuQYiMxV4T+
    64  g3eebSiBqPNiCyjl2wttCm5LAV5iHyVqwnBNcrXlA5mRFQz8lmyfpoksNDEVzJPw
    65  wHzPjKSIKsGgsrPnw6XsyOPJY/8UocscEcHptTmahHrbfNZLN0FrMneHw9tnn2Ai
    66  UctuU9bw80KwPd+WFdZ6UZF/kPxVFsANJpz1aMpz7Lxi3Sz1ztUCdHvNJitRUO1Q
    67  ewby4xi9DfIEECMq78LLmwGaTiKxutC6KwHLJEcbUblOJHpYVEXdBex9xGJ/2DHr
    68  BQIDAQAB
    69  -----END PUBLIC KEY-----`
    70  
    71  	opts := &verifyTokenOptions{}
    72  	err := WithJWTVerificationKey(key)(opts)
    73  
    74  	if assert.NoError(t, err) {
    75  		assert.Equal(t, "RS256", opts.jwk.Algorithm)
    76  	}
    77  }
    78  
    79  func TestWithSatelliteDomain(t *testing.T) {
    80  	isSatellite := true
    81  
    82  	opts := &verifyTokenOptions{}
    83  	err := WithSatelliteDomain(isSatellite)(opts)
    84  
    85  	if assert.NoError(t, err) {
    86  		assert.Equal(t, isSatellite, opts.isSatellite)
    87  	}
    88  }
    89  
    90  func TestWithProxyURL(t *testing.T) {
    91  	proxyURL := "url"
    92  
    93  	opts := &verifyTokenOptions{}
    94  	err := WithProxyURL(proxyURL)(opts)
    95  
    96  	if assert.NoError(t, err) {
    97  		assert.Equal(t, proxyURL, opts.proxyURL)
    98  	}
    99  }
   100  
   101  func arrayToMap(t *testing.T, input []string) map[string]struct{} {
   102  	t.Helper()
   103  
   104  	output := make(map[string]struct{})
   105  	for _, s := range input {
   106  		output[s] = struct{}{}
   107  	}
   108  
   109  	return output
   110  }