123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- package apiserver
- import (
- "encoding/json"
- "net/http"
- "net/http/httptest"
- "strings"
- "testing"
- log "github.com/sirupsen/logrus"
- "github.com/stretchr/testify/assert"
- )
- func TestCreateMachine(t *testing.T) {
- router, _, err := NewAPITest()
- if err != nil {
- log.Fatalf("unable to run local API: %s", err)
- }
- // Create machine with invalid format
- w := httptest.NewRecorder()
- req, _ := http.NewRequest("POST", "/v1/watchers", strings.NewReader("test"))
- req.Header.Add("User-Agent", UserAgent)
- router.ServeHTTP(w, req)
- assert.Equal(t, 400, w.Code)
- assert.Equal(t, "{\"message\":\"invalid character 'e' in literal true (expecting 'r')\"}", w.Body.String())
- // Create machine with invalid input
- w = httptest.NewRecorder()
- req, _ = http.NewRequest("POST", "/v1/watchers", strings.NewReader("{\"test\": \"test\"}"))
- req.Header.Add("User-Agent", UserAgent)
- router.ServeHTTP(w, req)
- assert.Equal(t, 500, w.Code)
- assert.Equal(t, "{\"message\":\"validation failure list:\\nmachine_id in body is required\\npassword in body is required\"}", w.Body.String())
- // Create machine
- b, err := json.Marshal(MachineTest)
- if err != nil {
- log.Fatal("unable to marshal MachineTest")
- }
- body := string(b)
- w = httptest.NewRecorder()
- req, _ = http.NewRequest("POST", "/v1/watchers", strings.NewReader(body))
- req.Header.Add("User-Agent", UserAgent)
- router.ServeHTTP(w, req)
- assert.Equal(t, 201, w.Code)
- assert.Equal(t, "", w.Body.String())
- }
- func TestCreateMachineWithForwardedFor(t *testing.T) {
- router, config, err := NewAPITestForwardedFor()
- if err != nil {
- log.Fatalf("unable to run local API: %s", err)
- }
- router.TrustedPlatform = "X-Real-IP"
- // Create machine
- b, err := json.Marshal(MachineTest)
- if err != nil {
- log.Fatal("unable to marshal MachineTest")
- }
- body := string(b)
- w := httptest.NewRecorder()
- req, _ := http.NewRequest("POST", "/v1/watchers", strings.NewReader(body))
- req.Header.Add("User-Agent", UserAgent)
- req.Header.Add("X-Real-Ip", "1.1.1.1")
- router.ServeHTTP(w, req)
- assert.Equal(t, 201, w.Code)
- assert.Equal(t, "", w.Body.String())
- ip, err := GetMachineIP(*MachineTest.MachineID, config.API.Server.DbConfig)
- if err != nil {
- log.Fatalf("Could not get machine IP : %s", err)
- }
- assert.Equal(t, "1.1.1.1", ip)
- }
- func TestCreateMachineWithForwardedForNoConfig(t *testing.T) {
- router, config, err := NewAPITest()
- if err != nil {
- log.Fatalf("unable to run local API: %s", err)
- }
- // Create machine
- b, err := json.Marshal(MachineTest)
- if err != nil {
- log.Fatal("unable to marshal MachineTest")
- }
- body := string(b)
- w := httptest.NewRecorder()
- req, _ := http.NewRequest("POST", "/v1/watchers", strings.NewReader(body))
- req.Header.Add("User-Agent", UserAgent)
- req.Header.Add("X-Real-IP", "1.1.1.1")
- router.ServeHTTP(w, req)
- assert.Equal(t, 201, w.Code)
- assert.Equal(t, "", w.Body.String())
- ip, err := GetMachineIP(*MachineTest.MachineID, config.API.Server.DbConfig)
- if err != nil {
- log.Fatalf("Could not get machine IP : %s", err)
- }
- //For some reason, the IP is empty when running tests
- //if no forwarded-for headers are present
- assert.Equal(t, "", ip)
- }
- func TestCreateMachineWithoutForwardedFor(t *testing.T) {
- router, config, err := NewAPITestForwardedFor()
- if err != nil {
- log.Fatalf("unable to run local API: %s", err)
- }
- // Create machine
- b, err := json.Marshal(MachineTest)
- if err != nil {
- log.Fatal("unable to marshal MachineTest")
- }
- body := string(b)
- w := httptest.NewRecorder()
- req, _ := http.NewRequest("POST", "/v1/watchers", strings.NewReader(body))
- req.Header.Add("User-Agent", UserAgent)
- router.ServeHTTP(w, req)
- assert.Equal(t, 201, w.Code)
- assert.Equal(t, "", w.Body.String())
- ip, err := GetMachineIP(*MachineTest.MachineID, config.API.Server.DbConfig)
- if err != nil {
- log.Fatalf("Could not get machine IP : %s", err)
- }
- //For some reason, the IP is empty when running tests
- //if no forwarded-for headers are present
- assert.Equal(t, "", ip)
- }
- func TestCreateMachineAlreadyExist(t *testing.T) {
- router, _, err := NewAPITest()
- if err != nil {
- log.Fatalf("unable to run local API: %s", err)
- }
- body, err := CreateTestMachine(router)
- if err != nil {
- log.Fatalln(err.Error())
- }
- w := httptest.NewRecorder()
- req, _ := http.NewRequest("POST", "/v1/watchers", strings.NewReader(body))
- req.Header.Add("User-Agent", UserAgent)
- router.ServeHTTP(w, req)
- w = httptest.NewRecorder()
- req, _ = http.NewRequest("POST", "/v1/watchers", strings.NewReader(body))
- req.Header.Add("User-Agent", UserAgent)
- router.ServeHTTP(w, req)
- assert.Equal(t, 403, w.Code)
- assert.Equal(t, "{\"message\":\"user 'test': user already exist\"}", w.Body.String())
- }
|