|
@@ -1,222 +0,0 @@
|
|
|
-package requestdecorator
|
|
|
-
|
|
|
-import (
|
|
|
- "net/http"
|
|
|
- "strings"
|
|
|
- "testing"
|
|
|
-)
|
|
|
-
|
|
|
-func TestUAVersionInfo(t *testing.T) {
|
|
|
- uavi := NewUAVersionInfo("foo", "bar")
|
|
|
- if !uavi.isValid() {
|
|
|
- t.Fatalf("UAVersionInfo should be valid")
|
|
|
- }
|
|
|
- uavi = NewUAVersionInfo("", "bar")
|
|
|
- if uavi.isValid() {
|
|
|
- t.Fatalf("Expected UAVersionInfo to be invalid")
|
|
|
- }
|
|
|
- uavi = NewUAVersionInfo("foo", "")
|
|
|
- if uavi.isValid() {
|
|
|
- t.Fatalf("Expected UAVersionInfo to be invalid")
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestUserAgentDecorator(t *testing.T) {
|
|
|
- httpVersion := make([]UAVersionInfo, 2)
|
|
|
- httpVersion = append(httpVersion, NewUAVersionInfo("testname", "testversion"))
|
|
|
- httpVersion = append(httpVersion, NewUAVersionInfo("name", "version"))
|
|
|
- uad := &UserAgentDecorator{
|
|
|
- Versions: httpVersion,
|
|
|
- }
|
|
|
-
|
|
|
- req, err := http.NewRequest("GET", "/something", strings.NewReader("test"))
|
|
|
- if err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
- reqDecorated, err := uad.ChangeRequest(req)
|
|
|
- if err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- if reqDecorated.Header.Get("User-Agent") != "testname/testversion name/version" {
|
|
|
- t.Fatalf("Request should have User-Agent 'testname/testversion name/version'")
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestUserAgentDecoratorErr(t *testing.T) {
|
|
|
- httpVersion := make([]UAVersionInfo, 0)
|
|
|
- uad := &UserAgentDecorator{
|
|
|
- Versions: httpVersion,
|
|
|
- }
|
|
|
-
|
|
|
- var req *http.Request
|
|
|
- _, err := uad.ChangeRequest(req)
|
|
|
- if err == nil {
|
|
|
- t.Fatalf("Expected to get ErrNilRequest instead no error was returned")
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestMetaHeadersDecorator(t *testing.T) {
|
|
|
- var headers = map[string][]string{
|
|
|
- "key1": {"value1"},
|
|
|
- "key2": {"value2"},
|
|
|
- }
|
|
|
- mhd := &MetaHeadersDecorator{
|
|
|
- Headers: headers,
|
|
|
- }
|
|
|
-
|
|
|
- req, err := http.NewRequest("GET", "/something", strings.NewReader("test"))
|
|
|
- if err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
- reqDecorated, err := mhd.ChangeRequest(req)
|
|
|
- if err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- v, ok := reqDecorated.Header["key1"]
|
|
|
- if !ok {
|
|
|
- t.Fatalf("Expected to have header key1")
|
|
|
- }
|
|
|
- if v[0] != "value1" {
|
|
|
- t.Fatalf("Expected value for key1 isn't value1")
|
|
|
- }
|
|
|
-
|
|
|
- v, ok = reqDecorated.Header["key2"]
|
|
|
- if !ok {
|
|
|
- t.Fatalf("Expected to have header key2")
|
|
|
- }
|
|
|
- if v[0] != "value2" {
|
|
|
- t.Fatalf("Expected value for key2 isn't value2")
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestMetaHeadersDecoratorErr(t *testing.T) {
|
|
|
- mhd := &MetaHeadersDecorator{}
|
|
|
-
|
|
|
- var req *http.Request
|
|
|
- _, err := mhd.ChangeRequest(req)
|
|
|
- if err == nil {
|
|
|
- t.Fatalf("Expected to get ErrNilRequest instead no error was returned")
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestAuthDecorator(t *testing.T) {
|
|
|
- ad := NewAuthDecorator("test", "password")
|
|
|
-
|
|
|
- req, err := http.NewRequest("GET", "/something", strings.NewReader("test"))
|
|
|
- if err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
- reqDecorated, err := ad.ChangeRequest(req)
|
|
|
- if err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- username, password, ok := reqDecorated.BasicAuth()
|
|
|
- if !ok {
|
|
|
- t.Fatalf("Cannot retrieve basic auth info from request")
|
|
|
- }
|
|
|
- if username != "test" {
|
|
|
- t.Fatalf("Expected username to be test, got %s", username)
|
|
|
- }
|
|
|
- if password != "password" {
|
|
|
- t.Fatalf("Expected password to be password, got %s", password)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestAuthDecoratorErr(t *testing.T) {
|
|
|
- ad := &AuthDecorator{}
|
|
|
-
|
|
|
- var req *http.Request
|
|
|
- _, err := ad.ChangeRequest(req)
|
|
|
- if err == nil {
|
|
|
- t.Fatalf("Expected to get ErrNilRequest instead no error was returned")
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestRequestFactory(t *testing.T) {
|
|
|
- ad := NewAuthDecorator("test", "password")
|
|
|
- httpVersion := make([]UAVersionInfo, 2)
|
|
|
- httpVersion = append(httpVersion, NewUAVersionInfo("testname", "testversion"))
|
|
|
- httpVersion = append(httpVersion, NewUAVersionInfo("name", "version"))
|
|
|
- uad := &UserAgentDecorator{
|
|
|
- Versions: httpVersion,
|
|
|
- }
|
|
|
-
|
|
|
- requestFactory := NewRequestFactory(ad, uad)
|
|
|
-
|
|
|
- if l := len(requestFactory.GetDecorators()); l != 2 {
|
|
|
- t.Fatalf("Expected to have two decorators, got %d", l)
|
|
|
- }
|
|
|
-
|
|
|
- req, err := requestFactory.NewRequest("GET", "/test", strings.NewReader("test"))
|
|
|
- if err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- username, password, ok := req.BasicAuth()
|
|
|
- if !ok {
|
|
|
- t.Fatalf("Cannot retrieve basic auth info from request")
|
|
|
- }
|
|
|
- if username != "test" {
|
|
|
- t.Fatalf("Expected username to be test, got %s", username)
|
|
|
- }
|
|
|
- if password != "password" {
|
|
|
- t.Fatalf("Expected password to be password, got %s", password)
|
|
|
- }
|
|
|
- if req.Header.Get("User-Agent") != "testname/testversion name/version" {
|
|
|
- t.Fatalf("Request should have User-Agent 'testname/testversion name/version'")
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestRequestFactoryNewRequestWithDecorators(t *testing.T) {
|
|
|
- ad := NewAuthDecorator("test", "password")
|
|
|
-
|
|
|
- requestFactory := NewRequestFactory(ad)
|
|
|
-
|
|
|
- if l := len(requestFactory.GetDecorators()); l != 1 {
|
|
|
- t.Fatalf("Expected to have one decorators, got %d", l)
|
|
|
- }
|
|
|
-
|
|
|
- ad2 := NewAuthDecorator("test2", "password2")
|
|
|
-
|
|
|
- req, err := requestFactory.NewRequest("GET", "/test", strings.NewReader("test"), ad2)
|
|
|
- if err != nil {
|
|
|
- t.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- username, password, ok := req.BasicAuth()
|
|
|
- if !ok {
|
|
|
- t.Fatalf("Cannot retrieve basic auth info from request")
|
|
|
- }
|
|
|
- if username != "test2" {
|
|
|
- t.Fatalf("Expected username to be test, got %s", username)
|
|
|
- }
|
|
|
- if password != "password2" {
|
|
|
- t.Fatalf("Expected password to be password, got %s", password)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestRequestFactoryAddDecorator(t *testing.T) {
|
|
|
- requestFactory := NewRequestFactory()
|
|
|
-
|
|
|
- if l := len(requestFactory.GetDecorators()); l != 0 {
|
|
|
- t.Fatalf("Expected to have zero decorators, got %d", l)
|
|
|
- }
|
|
|
-
|
|
|
- ad := NewAuthDecorator("test", "password")
|
|
|
- requestFactory.AddDecorator(ad)
|
|
|
-
|
|
|
- if l := len(requestFactory.GetDecorators()); l != 1 {
|
|
|
- t.Fatalf("Expected to have one decorators, got %d", l)
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-func TestRequestFactoryNil(t *testing.T) {
|
|
|
- var requestFactory RequestFactory
|
|
|
- _, err := requestFactory.NewRequest("GET", "/test", strings.NewReader("test"))
|
|
|
- if err != nil {
|
|
|
- t.Fatalf("Expected not to get and error, got %s", err)
|
|
|
- }
|
|
|
-}
|