From fd34e72da8c604517050ada7e883ba982829d985 Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Mon, 12 Sep 2022 09:43:04 +0200 Subject: Util: Add tests --- internal/util/util_test.go | 116 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 internal/util/util_test.go (limited to 'internal/util') diff --git a/internal/util/util_test.go b/internal/util/util_test.go new file mode 100644 index 0000000..9eda14e --- /dev/null +++ b/internal/util/util_test.go @@ -0,0 +1,116 @@ +package util + +import ( + "bytes" + "testing" + "time" +) + +func Test_EnsureValidURL(t *testing.T) { + _, validErr := EnsureValidURL("%notvalid%") + + if validErr == nil { + t.Fatal("Got nil error, want: non-nil") + } + + valid, validErr := EnsureValidURL("valid.com") + if validErr != nil { + t.Fatalf("Got: %v, want: nil", validErr) + } + + afterValid := "https://valid.com" + if valid != afterValid { + t.Fatalf("Got: %v, want: %v", valid, afterValid) + } + + valid, validErr = EnsureValidURL("http://valid.com") + if validErr != nil { + t.Fatalf("Got: %v, want: nil", validErr) + } + + afterValid = "http://valid.com" + if valid != afterValid { + t.Fatalf("Got: %v, want: %v", valid, afterValid) + } +} + +func Test_MakeRandomByteSlice(t *testing.T) { + random, randomErr := MakeRandomByteSlice(32) + if randomErr != nil { + t.Fatalf("Got: %v, want: nil", randomErr) + } + if len(random) != 32 { + t.Fatalf("Got length: %d, want length: 32", len(random)) + } + + random2, randomErr2 := MakeRandomByteSlice(32) + if randomErr2 != nil { + t.Fatalf("2, Got: %v, want: nil", randomErr) + } + + if bytes.Compare(random2, random) == 0 { + t.Fatalf("Two random byteslices are the same: %v, %v", random2, random) + } +} + +func Test_GetCurrentTime(t *testing.T) { + time_now := GetCurrentTime() + + time.Sleep(1) + + time_after_1_second := GetCurrentTime() + + if !time_after_1_second.After(time_now) { + t.Fatal("Time is not after previous time") + } +} + +func Test_WAYFEncode(t *testing.T) { + // AuthTemplate + returnTo := "127.0.0.1:8000/test123bla/#wow " + + // URL encoding but with spaces replace as + instead of %20 + wantReturnTo := "127.0.0.1%3A8000%2Ftest123bla%2F%23wow+++" + encode := WAYFEncode(returnTo) + if encode != wantReturnTo { + t.Fatalf("Got: %s, want: %s", encode, wantReturnTo) + } +} + +func Test_ReplaceWAYF(t *testing.T) { + // We expect url encoding but the spaces to be correctly replace with a + instead of a %20 + // And we expect that the return to and org_id are correctly replaced + replaced := ReplaceWAYF("@RETURN_TO@@ORG_ID@", "127.0.0.1:8000/&%$3#kM_- ", "idp-test.nl.org/") + wantReplaced := "127.0.0.1%3A8000%2F%26%25%243%23kM_-++++++++++++idp-test.nl.org%2F" + if replaced != wantReplaced { + t.Fatalf("Got: %s, want: %s", replaced, wantReplaced) + } + + // No RETURN_TO in template + replaced = ReplaceWAYF("@ORG_ID@", "127.0.0.1:8000", "idp-test.nl.org/") + wantReplaced = "127.0.0.1:8000" + if replaced != wantReplaced { + t.Fatalf("Got: %s, want: %s", replaced, wantReplaced) + } + + // NO ORG_ID in template + replaced = ReplaceWAYF("@RETURN_TO@", "127.0.0.1:8000", "idp-test.nl.org") + wantReplaced = "127.0.0.1:8000" + if replaced != wantReplaced { + t.Fatalf("Got: %s, want: %s", replaced, wantReplaced) + } + + // Template is empty + replaced = ReplaceWAYF("", "127.0.0.1:8000", "idp-test.nl.org") + wantReplaced = "127.0.0.1:8000" + if replaced != wantReplaced { + t.Fatalf("Got: %s, want: %s", replaced, wantReplaced) + } + + // Template contains both @RETURN_TO@ and @ORG_ID@ but there is not enough to replace both + replaced = ReplaceWAYF("@RETURN_TO@ORG_ID@", "127.0.0.1:8000", "idp-test.nl.org") + wantReplaced = "127.0.0.1:8000" + if replaced != wantReplaced { + t.Fatalf("Got: %s, want: %s", replaced, wantReplaced) + } +} -- cgit v1.2.3