mirror of
https://github.com/volatiletech/authboss.git
synced 2024-11-24 08:42:17 +02:00
48b33b0217
- Add helper to directly merge data into a request (common use case) - Allow parsing of OAuth2PID without panic - Add oauth2.* strings to the modules list in case people want to be able to switch on which oauth2 providers are available in their views.
84 lines
1.6 KiB
Go
84 lines
1.6 KiB
Go
package authboss
|
|
|
|
import (
|
|
"context"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestHTMLData(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
data := NewHTMLData("a", "b").MergeKV("c", "d").Merge(NewHTMLData("e", "f"))
|
|
if data["a"].(string) != "b" {
|
|
t.Error("A was wrong:", data["a"])
|
|
}
|
|
if data["c"].(string) != "d" {
|
|
t.Error("C was wrong:", data["c"])
|
|
}
|
|
if data["e"].(string) != "f" {
|
|
t.Error("E was wrong:", data["e"])
|
|
}
|
|
}
|
|
|
|
func TestHTMLData_Panics(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
nPanics := 0
|
|
panicCount := func() {
|
|
if r := recover(); r != nil {
|
|
nPanics++
|
|
}
|
|
}
|
|
|
|
func() {
|
|
defer panicCount()
|
|
NewHTMLData("hello")
|
|
}()
|
|
|
|
func() {
|
|
defer panicCount()
|
|
NewHTMLData().MergeKV("hello")
|
|
}()
|
|
|
|
func() {
|
|
defer panicCount()
|
|
NewHTMLData(5, 6)
|
|
}()
|
|
|
|
func() {
|
|
defer panicCount()
|
|
NewHTMLData().MergeKV(7, 8)
|
|
}()
|
|
|
|
if nPanics != 4 {
|
|
t.Error("They all should have paniced.")
|
|
}
|
|
}
|
|
|
|
func TestHTMLDataMergeDataInRequest(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
r := httptest.NewRequest("GET", "/", nil)
|
|
MergeDataInRequest(&r, HTMLData{"hello": "world"})
|
|
|
|
val := r.Context().Value(CTXKeyData).(HTMLData)["hello"].(string)
|
|
if val != "world" {
|
|
t.Error("expected world, got:", val)
|
|
}
|
|
|
|
r = httptest.NewRequest("GET", "/", nil)
|
|
r = r.WithContext(context.WithValue(context.Background(), CTXKeyData, HTMLData{"first": "here"}))
|
|
MergeDataInRequest(&r, HTMLData{"hello": "world"})
|
|
|
|
val = r.Context().Value(CTXKeyData).(HTMLData)["hello"].(string)
|
|
if val != "world" {
|
|
t.Error("expected world, got:", val)
|
|
}
|
|
|
|
val = r.Context().Value(CTXKeyData).(HTMLData)["first"].(string)
|
|
if val != "here" {
|
|
t.Error("expected world, got:", val)
|
|
}
|
|
}
|