| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package proxy
- import (
- "net/http"
- "net/url"
- "reflect"
- "testing"
- )
- func TestNewDirector(t *testing.T) {
- tests := []struct {
- good bool
- endpoints []string
- }{
- {true, []string{"http://192.0.2.8"}},
- {true, []string{"http://192.0.2.8:8001"}},
- {true, []string{"http://example.com"}},
- {true, []string{"http://example.com:8001"}},
- {true, []string{"http://192.0.2.8:8001", "http://example.com:8002"}},
- {false, []string{"192.0.2.8"}},
- {false, []string{"192.0.2.8:8001"}},
- {false, []string{""}},
- }
- for i, tt := range tests {
- _, err := newDirector(tt.endpoints)
- if tt.good != (err == nil) {
- t.Errorf("#%d: expected success = %t, got err = %v", i, tt.good, err)
- }
- }
- }
- func TestDirectorDirect(t *testing.T) {
- d := &director{
- endpoints: []url.URL{
- url.URL{
- Scheme: "http",
- Host: "bar.example.com",
- },
- },
- }
- req := &http.Request{
- Method: "GET",
- Host: "foo.example.com",
- URL: &url.URL{
- Host: "foo.example.com",
- Path: "/v2/keys/baz",
- },
- }
- d.direct(req)
- want := &http.Request{
- Method: "GET",
- // this field must not change
- Host: "foo.example.com",
- URL: &url.URL{
- // the Scheme field is updated per the director's first endpoint
- Scheme: "http",
- // the Host field is updated per the director's first endpoint
- Host: "bar.example.com",
- Path: "/v2/keys/baz",
- },
- }
- if !reflect.DeepEqual(want, req) {
- t.Fatalf("HTTP request does not match expected criteria: want=%#v got=%#v", want, req)
- }
- }
|