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 }