mirror of
https://github.com/pomerium/pomerium.git
synced 2025-05-28 16:37:24 +02:00
61 lines
2 KiB
Go
61 lines
2 KiB
Go
package headertemplate_test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/pomerium/pomerium/internal/headertemplate"
|
|
)
|
|
|
|
func TestRender(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
for _, tc := range []struct {
|
|
in string
|
|
expect string
|
|
}{
|
|
{"x $$ y $$ z", "x $ y $ z"},
|
|
{`${x.y.z}`, `<x,y,z>`},
|
|
{`${ x . y . z }`, `<x,y,z>`},
|
|
{`${x["y"].z}`, `<x,y,z>`},
|
|
{`${x["`, `${x["`},
|
|
{`${`, `${`},
|
|
{`${}`, `${}`},
|
|
{`${x["\\"]}`, `<x,\>`},
|
|
{`${x["\""]}`, `<x,">`},
|
|
|
|
{`${pomerium.access_token}`, `<pomerium,access_token>`},
|
|
{`$pomerium.access_token`, `<pomerium,access_token>`},
|
|
{`${pomerium.client_cert_fingerprint}`, `<pomerium,client_cert_fingerprint>`},
|
|
{`$pomerium.client_cert_fingerprint`, `<pomerium,client_cert_fingerprint>`},
|
|
{`${pomerium.id_token}`, `<pomerium,id_token>`},
|
|
{`$pomerium.id_token`, `<pomerium,id_token>`},
|
|
{`${pomerium.jwt}`, `<pomerium,jwt>`},
|
|
{`$pomerium.jwt`, `<pomerium,jwt>`},
|
|
{`${pomerium.request.headers["X-Access-Token"]}`, `<pomerium,request,headers,X-Access-Token>`},
|
|
{`$pomerium.request.headers.X-Access-Token`, `<pomerium,request,headers,X-Access-Token>`},
|
|
} {
|
|
actual := headertemplate.Render(tc.in, func(ref []string) string {
|
|
return "<" + strings.Join(ref, ",") + ">"
|
|
})
|
|
assert.Equal(t, tc.expect, actual)
|
|
}
|
|
|
|
assert.Equal(t, "x $ y $ z", headertemplate.Render("x $$ y $$ z", func(_ []string) string {
|
|
return ""
|
|
}))
|
|
assert.Equal(t, "before JWT after", headertemplate.Render("before $pomerium.jwt after", func(ref []string) string {
|
|
assert.Equal(t, []string{"pomerium", "jwt"}, ref)
|
|
return "JWT"
|
|
}))
|
|
assert.Equal(t, "before JWT after", headertemplate.Render("before ${ pomerium . jwt } after", func(ref []string) string {
|
|
assert.Equal(t, []string{"pomerium", "jwt"}, ref)
|
|
return "JWT"
|
|
}))
|
|
assert.Equal(t, "before JWT after", headertemplate.Render("before ${ pomerium . jwt } after", func(ref []string) string {
|
|
assert.Equal(t, []string{"pomerium", "jwt"}, ref)
|
|
return "JWT"
|
|
}))
|
|
}
|