Files
ngrok-operator/internal/annotations/headers/headers_test.go
T
Jonathan Stacks 1e2367de30 Update references from kubernetes-ingress-controller -> ngrok-operator (#426)
* chore(rename): Replace kubernetes-ingress-controller with ngrok-operator

rg github.com/ngrok/kubernetes-ingress-controller . --files-with-matches | xargs sed -i 's/github.com\/ngrok\/kubernetes-ingress-controller/github.com\/ngrok\/ngrok-operator/g'

* chore(rename): Move helm/ingress-controller -> helm/ngrok-operator

* chore(rename): More updates
2024-09-10 15:51:27 -05:00

86 lines
2.7 KiB
Go

package headers
import (
"testing"
"github.com/ngrok/ngrok-operator/internal/annotations/parser"
"github.com/ngrok/ngrok-operator/internal/annotations/testutil"
"github.com/ngrok/ngrok-operator/internal/errors"
"github.com/stretchr/testify/assert"
)
func TestHeadersWhenNotSupplied(t *testing.T) {
ing := testutil.NewIngress()
ing.SetAnnotations(map[string]string{})
parsed, err := NewParser().Parse(ing)
assert.Nil(t, parsed)
assert.Error(t, err)
assert.True(t, errors.IsMissingAnnotations(err))
}
func TestHeadersWhenRequestHeadersSupplied(t *testing.T) {
ing := testutil.NewIngress()
annotations := map[string]string{}
annotations[parser.GetAnnotationWithPrefix("request-headers-remove")] = "Server"
annotations[parser.GetAnnotationWithPrefix("request-headers-add")] = `{"X-Request-Header": "value"}`
ing.SetAnnotations(annotations)
parsed, err := NewParser().Parse(ing)
assert.NoError(t, err)
assert.NotNil(t, parsed)
endpointHeaders, ok := parsed.(*EndpointHeaders)
if !ok {
t.Fatalf("expected *EndpointHeaders, got %T", parsed)
}
assert.Nil(t, endpointHeaders.Response)
assert.Equal(t, []string{"Server"}, endpointHeaders.Request.Remove)
assert.Equal(t, map[string]string{"X-Request-Header": "value"}, endpointHeaders.Request.Add)
}
func TestHeadersWhenResponseHeadersSupplied(t *testing.T) {
ing := testutil.NewIngress()
annotations := map[string]string{}
annotations[parser.GetAnnotationWithPrefix("response-headers-remove")] = "Server"
annotations[parser.GetAnnotationWithPrefix("response-headers-add")] = `{"X-Response-Header": "value"}`
ing.SetAnnotations(annotations)
parsed, err := NewParser().Parse(ing)
assert.NoError(t, err)
assert.NotNil(t, parsed)
endpointHeaders, ok := parsed.(*EndpointHeaders)
if !ok {
t.Fatalf("expected *EndpointHeaders, got %T", parsed)
}
assert.Nil(t, endpointHeaders.Request)
assert.Equal(t, []string{"Server"}, endpointHeaders.Response.Remove)
assert.Equal(t, map[string]string{"X-Response-Header": "value"}, endpointHeaders.Response.Add)
}
func TestInvalidRequestHeadersAdd(t *testing.T) {
ing := testutil.NewIngress()
annotations := map[string]string{}
// Not valid JSON
annotations[parser.GetAnnotationWithPrefix("request-headers-add")] = `{X-Request-Header: value}`
ing.SetAnnotations(annotations)
_, err := NewParser().Parse(ing)
assert.Error(t, err)
assert.True(t, errors.IsInvalidContent(err))
}
func TestInvalidResponseHeadersAdd(t *testing.T) {
ing := testutil.NewIngress()
annotations := map[string]string{}
// Not valid JSON
annotations[parser.GetAnnotationWithPrefix("response-headers-add")] = `{X-Response-Header: value}`
ing.SetAnnotations(annotations)
_, err := NewParser().Parse(ing)
assert.Error(t, err)
assert.True(t, errors.IsInvalidContent(err))
}