github.com/naphatkrit/deis@v1.12.3/client/controller/models/users/users_test.go (about)

     1  package users
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"net/http/httptest"
     7  	"net/url"
     8  	"reflect"
     9  	"testing"
    10  
    11  	"github.com/deis/deis/client/controller/api"
    12  	"github.com/deis/deis/client/controller/client"
    13  	"github.com/deis/deis/version"
    14  )
    15  
    16  const usersFixture string = `
    17  {
    18      "count": 1,
    19      "next": null,
    20      "previous": null,
    21      "results": [
    22          {
    23              "id": 1,
    24              "last_login": "2014-10-19T22:01:00.601Z",
    25              "is_superuser": true,
    26              "username": "test",
    27              "first_name": "test",
    28              "last_name": "testerson",
    29              "email": "test@example.com",
    30              "is_staff": true,
    31              "is_active": true,
    32              "date_joined": "2014-10-19T22:01:00.601Z",
    33              "groups": [],
    34              "user_permissions": []
    35          }
    36      ]
    37  }`
    38  
    39  type fakeHTTPServer struct{}
    40  
    41  func (fakeHTTPServer) ServeHTTP(res http.ResponseWriter, req *http.Request) {
    42  	res.Header().Add("DEIS_API_VERSION", version.APIVersion)
    43  
    44  	if req.URL.Path == "/v1/users/" && req.Method == "GET" {
    45  		res.Write([]byte(usersFixture))
    46  		return
    47  	}
    48  
    49  	fmt.Printf("Unrecongized URL %s\n", req.URL)
    50  	res.WriteHeader(http.StatusNotFound)
    51  	res.Write(nil)
    52  }
    53  
    54  func TestUsersList(t *testing.T) {
    55  	t.Parallel()
    56  
    57  	expected := []api.User{
    58  		api.User{
    59  			ID:          1,
    60  			LastLogin:   "2014-10-19T22:01:00.601Z",
    61  			IsSuperuser: true,
    62  			Username:    "test",
    63  			FirstName:   "test",
    64  			LastName:    "testerson",
    65  			Email:       "test@example.com",
    66  			IsStaff:     true,
    67  			IsActive:    true,
    68  			DateJoined:  "2014-10-19T22:01:00.601Z",
    69  		},
    70  	}
    71  
    72  	handler := fakeHTTPServer{}
    73  	server := httptest.NewServer(handler)
    74  	defer server.Close()
    75  
    76  	u, err := url.Parse(server.URL)
    77  
    78  	if err != nil {
    79  		t.Fatal(err)
    80  	}
    81  
    82  	httpClient := client.CreateHTTPClient(false)
    83  
    84  	client := client.Client{HTTPClient: httpClient, ControllerURL: *u, Token: "abc"}
    85  
    86  	actual, _, err := List(&client, 100)
    87  
    88  	if err != nil {
    89  		t.Fatal(err)
    90  	}
    91  
    92  	if !reflect.DeepEqual(expected, actual) {
    93  		t.Errorf("Expected %v, Got %v", expected, actual)
    94  	}
    95  }