Initial Codebase (untested)
This commit is contained in:
75
internal/session/sid_test.go
Normal file
75
internal/session/sid_test.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package session
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/base64"
|
||||
"testing"
|
||||
)
|
||||
|
||||
const testSigningKey = "a very secret key"
|
||||
|
||||
func TestNewID(t *testing.T) {
|
||||
sid, err := NewSessionID(testSigningKey)
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if 0 == len(sid) {
|
||||
t.Errorf("Signed ID string was empty")
|
||||
}
|
||||
|
||||
_, err = ValidateSessionID(sid.String(), testSigningKey)
|
||||
if nil != err {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestInvalidKey(t *testing.T) {
|
||||
sid, err := NewSessionID(testSigningKey)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
_, err = ValidateSessionID(sid.String(), "some other signing key")
|
||||
if nil == err {
|
||||
t.Errorf("Was able to validate with incorrect signign key")
|
||||
}
|
||||
}
|
||||
|
||||
func TestModified(t *testing.T) {
|
||||
sid, err := NewSessionID(testSigningKey)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
runes := []rune(sid.String())
|
||||
runes[0]++
|
||||
modsid := string(runes)
|
||||
|
||||
_, err = ValidateSessionID(modsid, testSigningKey)
|
||||
if nil == err {
|
||||
t.Errorf("Was able to validate modified encoded string")
|
||||
}
|
||||
}
|
||||
|
||||
func TestEmptyID(t *testing.T) {
|
||||
_, err := ValidateSessionID("", testSigningKey)
|
||||
if err == nil {
|
||||
t.Error("Able to validate empty key")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBadKey(t *testing.T) {
|
||||
buf := make([]byte, signedLength)
|
||||
if _, err := rand.Read(buf); nil != err {
|
||||
t.Fatal(err)
|
||||
}
|
||||
badid := base64.URLEncoding.EncodeToString(buf)
|
||||
|
||||
_, err := ValidateSessionID(badid, testSigningKey)
|
||||
if err == nil {
|
||||
t.Error("Able to validate bad key")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user