76 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"crypto/aes"
 | |
| 	"github.com/bmizerany/assert"
 | |
| 	"strings"
 | |
| 	"testing"
 | |
| )
 | |
| 
 | |
| func TestEncodeAndDecodeAccessToken(t *testing.T) {
 | |
| 	const key = "0123456789abcdefghijklmnopqrstuv"
 | |
| 	const access_token = "my access token"
 | |
| 	c, err := aes.NewCipher([]byte(key))
 | |
| 	assert.Equal(t, nil, err)
 | |
| 
 | |
| 	encoded_token, err := encodeAccessToken(c, access_token)
 | |
| 	assert.Equal(t, nil, err)
 | |
| 
 | |
| 	decoded_token, err := decodeAccessToken(c, encoded_token)
 | |
| 	assert.Equal(t, nil, err)
 | |
| 
 | |
| 	assert.NotEqual(t, access_token, encoded_token)
 | |
| 	assert.Equal(t, access_token, decoded_token)
 | |
| }
 | |
| 
 | |
| func TestBuildCookieValueWithoutAccessToken(t *testing.T) {
 | |
| 	value, err := buildCookieValue("michael.bland@gsa.gov", nil, "")
 | |
| 	assert.Equal(t, nil, err)
 | |
| 	assert.Equal(t, "michael.bland@gsa.gov", value)
 | |
| }
 | |
| 
 | |
| func TestBuildCookieValueWithAccessTokenAndNilCipher(t *testing.T) {
 | |
| 	value, err := buildCookieValue("michael.bland@gsa.gov", nil,
 | |
| 		"access token")
 | |
| 	assert.Equal(t, nil, err)
 | |
| 	assert.Equal(t, "michael.bland@gsa.gov", value)
 | |
| }
 | |
| 
 | |
| func TestParseCookieValueWithoutAccessToken(t *testing.T) {
 | |
| 	email, user, access_token, err := parseCookieValue(
 | |
| 		"michael.bland@gsa.gov", nil)
 | |
| 	assert.Equal(t, nil, err)
 | |
| 	assert.Equal(t, "michael.bland@gsa.gov", email)
 | |
| 	assert.Equal(t, "michael.bland", user)
 | |
| 	assert.Equal(t, "", access_token)
 | |
| }
 | |
| 
 | |
| func TestParseCookieValueWithAccessTokenAndNilCipher(t *testing.T) {
 | |
| 	email, user, access_token, err := parseCookieValue(
 | |
| 		"michael.bland@gsa.gov|access_token", nil)
 | |
| 	assert.Equal(t, nil, err)
 | |
| 	assert.Equal(t, "michael.bland@gsa.gov", email)
 | |
| 	assert.Equal(t, "michael.bland", user)
 | |
| 	assert.Equal(t, "", access_token)
 | |
| }
 | |
| 
 | |
| func TestBuildAndParseCookieValueWithAccessToken(t *testing.T) {
 | |
| 	aes_cipher, err := aes.NewCipher([]byte("0123456789abcdef"))
 | |
| 	assert.Equal(t, nil, err)
 | |
| 	value, err := buildCookieValue("michael.bland@gsa.gov", aes_cipher,
 | |
| 		"access_token")
 | |
| 	assert.Equal(t, nil, err)
 | |
| 
 | |
| 	prefix := "michael.bland@gsa.gov|"
 | |
| 	if !strings.HasPrefix(value, prefix) {
 | |
| 		t.Fatal("cookie value does not start with \"%s\": %s",
 | |
| 			prefix, value)
 | |
| 	}
 | |
| 
 | |
| 	email, user, access_token, err := parseCookieValue(value, aes_cipher)
 | |
| 	assert.Equal(t, nil, err)
 | |
| 	assert.Equal(t, "michael.bland@gsa.gov", email)
 | |
| 	assert.Equal(t, "michael.bland", user)
 | |
| 	assert.Equal(t, "access_token", access_token)
 | |
| }
 |