Skip to content

Commit 66d1505

Browse files
authored
Merge pull request #4 from mgrzybek/master
Issue #3: add a test against GetID
2 parents 2498514 + 4697066 commit 66d1505

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

utils/oidc.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77
"strings"
8+
"regexp"
89
)
910

1011
type ID struct {
@@ -51,11 +52,21 @@ func stripCtlFromUTF8(str string) string {
5152
}
5253

5354
func GetID(tokenString string) ID {
55+
if ( validateTokenstring(tokenString) == false ) {
56+
panic("Given token string is not valid.")
57+
}
58+
5459
dataString := strings.Split(tokenString, ".")[1]
5560
data, _ := base64.RawStdEncoding.DecodeString(dataString)
61+
5662
var id ID
5763
if err := json.Unmarshal((data), &id); err != nil {
5864
panic(err)
5965
}
6066
return id
61-
}
67+
}
68+
69+
func validateTokenstring(tokenString string) bool {
70+
matched, err := regexp.MatchString(`^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$`, tokenString)
71+
return ( err == nil && matched == true )
72+
}

utils/oidc_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package utils
2+
3+
import (
4+
"testing"
5+
)
6+
7+
const (
8+
VALID_TOKEN = "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhUONCSzhYRC1od1gtMWJFbjdZZDRLS0tWS6hYRy03RHg3STZDaVZZWUtRIn0.eyJleHAiOjE2Mjg1MTMxNjMsImlhdCI6MTYyNzkxMTczOCwiYXV0aF90aW1lIjoxNjI3OTA4MzYzLCJqdGkiOiI0NGIxNWE3MC02ODU5LTRjZDItYjg5NS1kMjk0MWM0ZmFiZWIiLCJpc3MiOiJodHRwczovL2F1dGgubGFiLnNzcGNsb3VkLmZyL2F1dGgvcmVhbG1zL3NzcGNsb3VkIiwiYXVkIjpbIm9ueXhpYSIsIm1pbmlvLXRlc3QiLCJhY2NvdW50Il0sInN1YiI6IjUyYmVmNWU2LTE2YjktNDJkZC1hNGI3LWVmODhlYjUzZmY3MiIsInR5cCI6IkJlYXJlciIsImF6cCI6Im9ueXhpYSIsIm5vbmNlIjoiYzI1YmFlMzEtMmU3Mi00MjRjLTg3NWYtODVkNjgwYWVkMjY0Iiwic2Vzc2lvbl9zdGF0ZSI6IjY1ZmQwNzNlLThlZjEtNDA3Zi05YmY3LWMzOTVhYmJmYjMwMyIsImFjciI6IjAiLCJhbGxvd2VkLW9yaWdpbnMiOlsiKiJdLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsib2ZmbGluZV9hY2Nlc3MiLCJ1bWFfYXV0aG9yaXphdGlvbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoib3BlbmlkIHByb2ZpbGUgZ3JvdXBzIGVtYWlsIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsIm5hbWUiOiJNYXRoaWV1IEdyenliZWsiLCJncm91cHMiOltdLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJtZ3J6eWJlayIsImdpdmVuX25hbWUiOiJNYXRoaWV1IiwiZmFtaWx5X25hbWUiOiJHcnp5YmVrIiwiZW1haWwiOiJtYXRoaWV1LmdyenliZWtAanVzdGljZS5nb3V2LmZyIiwicG9saWN5Ijoic3Rzb25seSJ9.arqzNJ1aptbUMg4noMVBzf2mnX-9pePNcn2HJ31XzAJR-2rxTsyJNrHe0Nj7-GXW31moAA4zNIZT1hyhlfr3wA7tNTeCgZCMtA2uWUPanwpmnW9ria4xvPV98h-YFOQ8TEaAHRDieAYZk6jMgBleXu14wgy13uMyHu1IQ-9NwM3Du6KBB1rY3T3uIhJxi5dUG0M-YgTHLwHNRsZMKknCW8fVxEAQjf6hOh_KZrHVrnCo0Go1sVP9fjxgkmqdQ_x5zC8jDIU-pJiPnIV5F-R3FHnP7tmNADjKFL-QUjdbHdMZvlWc6dbJb6GokcObmTUf5sUpoX5XKlCYOpVP5TSY4w"
9+
)
10+
11+
func TestBadID(t *testing.T) {
12+
defer func() { if r := recover(); r == nil { panic("Valid token detected, should have been invalid.") } }()
13+
GetID("bullshit")
14+
}
15+
16+
func TestCorrectID(t *testing.T) {
17+
GetID(VALID_TOKEN)
18+
}

0 commit comments

Comments
 (0)