...

Source file src/github.com/golang-jwt/jwt/v5/none_test.go

Documentation: github.com/golang-jwt/jwt/v5

     1  package jwt_test
     2  
     3  import (
     4  	"reflect"
     5  	"strings"
     6  	"testing"
     7  
     8  	"github.com/golang-jwt/jwt/v5"
     9  )
    10  
    11  var noneTestData = []struct {
    12  	name        string
    13  	tokenString string
    14  	alg         string
    15  	key         interface{}
    16  	claims      map[string]interface{}
    17  	valid       bool
    18  }{
    19  	{
    20  		"Basic",
    21  		"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.",
    22  		"none",
    23  		jwt.UnsafeAllowNoneSignatureType,
    24  		map[string]interface{}{"foo": "bar"},
    25  		true,
    26  	},
    27  	{
    28  		"Basic - no key",
    29  		"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJmb28iOiJiYXIifQ.",
    30  		"none",
    31  		nil,
    32  		map[string]interface{}{"foo": "bar"},
    33  		false,
    34  	},
    35  	{
    36  		"Signed",
    37  		"eyJhbGciOiJSUzM4NCIsInR5cCI6IkpXVCJ9.eyJmb28iOiJiYXIifQ.W-jEzRfBigtCWsinvVVuldiuilzVdU5ty0MvpLaSaqK9PlAWWlDQ1VIQ_qSKzwL5IXaZkvZFJXT3yL3n7OUVu7zCNJzdwznbC8Z-b0z2lYvcklJYi2VOFRcGbJtXUqgjk2oGsiqUMUMOLP70TTefkpsgqDxbRh9CDUfpOJgW-dU7cmgaoswe3wjUAUi6B6G2YEaiuXC0XScQYSYVKIzgKXJV8Zw-7AN_DBUI4GkTpsvQ9fVVjZM9csQiEXhYekyrKu1nu_POpQonGd8yqkIyXPECNmmqH5jH4sFiF67XhD7_JpkvLziBpI-uh86evBUadmHhb9Otqw3uV3NTaXLzJw",
    38  		"none",
    39  		jwt.UnsafeAllowNoneSignatureType,
    40  		map[string]interface{}{"foo": "bar"},
    41  		false,
    42  	},
    43  }
    44  
    45  func TestNoneVerify(t *testing.T) {
    46  	for _, data := range noneTestData {
    47  		parts := strings.Split(data.tokenString, ".")
    48  
    49  		method := jwt.GetSigningMethod(data.alg)
    50  		err := method.Verify(strings.Join(parts[0:2], "."), decodeSegment(t, parts[2]), data.key)
    51  		if data.valid && err != nil {
    52  			t.Errorf("[%v] Error while verifying key: %v", data.name, err)
    53  		}
    54  		if !data.valid && err == nil {
    55  			t.Errorf("[%v] Invalid key passed validation", data.name)
    56  		}
    57  	}
    58  }
    59  
    60  func TestNoneSign(t *testing.T) {
    61  	for _, data := range noneTestData {
    62  		if !data.valid {
    63  			continue
    64  		}
    65  		parts := strings.Split(data.tokenString, ".")
    66  		method := jwt.GetSigningMethod(data.alg)
    67  		sig, err := method.Sign(strings.Join(parts[0:2], "."), data.key)
    68  		if err != nil {
    69  			t.Errorf("[%v] Error signing token: %v", data.name, err)
    70  		}
    71  		if !reflect.DeepEqual(sig, decodeSegment(t, parts[2])) {
    72  			t.Errorf("[%v] Incorrect signature.\nwas:\n%v\nexpecting:\n%v", data.name, sig, parts[2])
    73  		}
    74  	}
    75  }
    76  

View as plain text