...

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

Documentation: github.com/golang-jwt/jwt

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

View as plain text