Clean JSON before post request to update configuration

This commit is contained in:
Manuel de Brito Fontes 2018-04-24 15:02:52 -03:00
parent bad526bd54
commit c6728aa8fa
No known key found for this signature in database
GPG key ID: 786136016A8BA02A
6 changed files with 123 additions and 13 deletions

View file

@ -17,8 +17,15 @@ limitations under the License.
package controller
import (
"io"
"io/ioutil"
"net"
"net/http"
"net/http/httptest"
"strings"
"testing"
apiv1 "k8s.io/api/core/v1"
"k8s.io/ingress-nginx/internal/ingress"
)
@ -89,6 +96,85 @@ func TestIsDynamicConfigurationEnough(t *testing.T) {
}
}
func TestConfigureDynamically(t *testing.T) {
target := &apiv1.ObjectReference{}
backends := []*ingress.Backend{{
Name: "fakenamespace-myapp-80",
Service: &apiv1.Service{},
Endpoints: []ingress.Endpoint{
{
Address: "10.0.0.1",
Port: "8080",
Target: target,
},
{
Address: "10.0.0.2",
Port: "8080",
Target: target,
},
},
}}
servers := []*ingress.Server{{
Hostname: "myapp.fake",
Locations: []*ingress.Location{
{
Path: "/",
Backend: "fakenamespace-myapp-80",
Service: &apiv1.Service{},
},
},
}}
commonConfig := &ingress.Configuration{
Backends: backends,
Servers: servers,
}
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusCreated)
if r.Method != "POST" {
t.Errorf("expected a 'POST' request, got '%s'", r.Method)
}
b, err := ioutil.ReadAll(r.Body)
if err != nil && err != io.EOF {
t.Fatal(err)
}
body := string(b)
if strings.Index(body, "target") != -1 {
t.Errorf("unexpected target reference in JSON content: %v", body)
}
if strings.Index(body, "service") != -1 {
t.Errorf("unexpected service reference in JSON content: %v", body)
}
}))
listener, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Errorf("unexpected error listening on a random port: %v", err)
}
defer listener.Close()
port := listener.Addr().(*net.TCPAddr).Port
ts.Listener = listener
defer ts.Close()
err = configureDynamically(commonConfig, port)
if err != nil {
t.Errorf("unexpected error posting dynamic configuration: %v", err)
}
if commonConfig.Backends[0].Endpoints[0].Target != target {
t.Errorf("unexpected change in the configuration object after configureDynamically invocation")
}
}
func TestNginxHashBucketSize(t *testing.T) {
tests := []struct {
n int