Skip to content

Commit

Permalink
[release/1.2.0] Backport api-gateway: Fix nil pointer exception panic (
Browse files Browse the repository at this point in the history
…#2489)

* fix nil pointer exception

* add unit test

---------

Co-authored-by: Sarah Alsmiller <sarah.alsmiller@hashicorp.com>
  • Loading branch information
nathancoleman and sarahalsmiller authored Jun 29, 2023
1 parent 08da8dd commit a732565
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 6 deletions.
14 changes: 8 additions & 6 deletions control-plane/api-gateway/common/translation.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,14 +254,16 @@ func (t ResourceTranslator) translateHTTPFilters(filters []gwv1beta1.HTTPRouteFi
}

for _, filter := range filters {
consulFilter.Remove = append(consulFilter.Remove, filter.RequestHeaderModifier.Remove...)
if filter.RequestHeaderModifier != nil {
consulFilter.Remove = append(consulFilter.Remove, filter.RequestHeaderModifier.Remove...)

for _, toAdd := range filter.RequestHeaderModifier.Add {
consulFilter.Add[string(toAdd.Name)] = toAdd.Value
}
for _, toAdd := range filter.RequestHeaderModifier.Add {
consulFilter.Add[string(toAdd.Name)] = toAdd.Value
}

for _, toSet := range filter.RequestHeaderModifier.Set {
consulFilter.Set[string(toSet.Name)] = toSet.Value
for _, toSet := range filter.RequestHeaderModifier.Set {
consulFilter.Set[string(toSet.Name)] = toSet.Value
}
}

// we drop any path rewrites that are not prefix matches as we don't support those
Expand Down
54 changes: 54 additions & 0 deletions control-plane/api-gateway/common/translation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1372,3 +1372,57 @@ func generateTestCertificate(t *testing.T, namespace, name string) corev1.Secret
},
}
}

func TestResourceTranslator_translateHTTPFilters(t1 *testing.T) {
type fields struct {
EnableConsulNamespaces bool
ConsulDestNamespace string
EnableK8sMirroring bool
MirroringPrefix string
ConsulPartition string
Datacenter string
}
type args struct {
filters []gwv1beta1.HTTPRouteFilter
}
tests := []struct {
name string
fields fields
args args
want api.HTTPFilters
}{
{
name: "no httproutemodifier set",
fields: fields{},
args: args{
filters: []gwv1beta1.HTTPRouteFilter{
{
URLRewrite: &gwv1beta1.HTTPURLRewriteFilter{},
},
},
},
want: api.HTTPFilters{
Headers: []api.HTTPHeaderFilter{
{
Add: map[string]string{},
Set: map[string]string{},
},
},
URLRewrite: nil,
},
},
}
for _, tt := range tests {
t1.Run(tt.name, func(t1 *testing.T) {
t := ResourceTranslator{
EnableConsulNamespaces: tt.fields.EnableConsulNamespaces,
ConsulDestNamespace: tt.fields.ConsulDestNamespace,
EnableK8sMirroring: tt.fields.EnableK8sMirroring,
MirroringPrefix: tt.fields.MirroringPrefix,
ConsulPartition: tt.fields.ConsulPartition,
Datacenter: tt.fields.Datacenter,
}
assert.Equalf(t1, tt.want, t.translateHTTPFilters(tt.args.filters), "translateHTTPFilters(%v)", tt.args.filters)
})
}
}

0 comments on commit a732565

Please sign in to comment.