machines_test.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package apiserver
  2. import (
  3. "encoding/json"
  4. "net/http"
  5. "net/http/httptest"
  6. "strings"
  7. "testing"
  8. log "github.com/sirupsen/logrus"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestCreateMachine(t *testing.T) {
  12. router, err := NewAPITest()
  13. if err != nil {
  14. log.Fatalf("unable to run local API: %s", err)
  15. }
  16. // Create machine with invalid format
  17. w := httptest.NewRecorder()
  18. req, _ := http.NewRequest("POST", "/v1/watchers", strings.NewReader("test"))
  19. req.Header.Add("User-Agent", UserAgent)
  20. router.ServeHTTP(w, req)
  21. assert.Equal(t, 400, w.Code)
  22. assert.Equal(t, "{\"message\":\"invalid character 'e' in literal true (expecting 'r')\"}", w.Body.String())
  23. // Create machine with invalid input
  24. w = httptest.NewRecorder()
  25. req, _ = http.NewRequest("POST", "/v1/watchers", strings.NewReader("{\"test\": \"test\"}"))
  26. req.Header.Add("User-Agent", UserAgent)
  27. router.ServeHTTP(w, req)
  28. assert.Equal(t, 500, w.Code)
  29. assert.Equal(t, "{\"message\":\"validation failure list:\\nmachine_id in body is required\\npassword in body is required\"}", w.Body.String())
  30. // Create machine
  31. b, err := json.Marshal(MachineTest)
  32. if err != nil {
  33. log.Fatalf("unable to marshal MachineTest")
  34. }
  35. body := string(b)
  36. w = httptest.NewRecorder()
  37. req, _ = http.NewRequest("POST", "/v1/watchers", strings.NewReader(body))
  38. req.Header.Add("User-Agent", UserAgent)
  39. router.ServeHTTP(w, req)
  40. assert.Equal(t, 201, w.Code)
  41. assert.Equal(t, "", w.Body.String())
  42. }
  43. func TestCreateMachineAlreadyExist(t *testing.T) {
  44. router, err := NewAPITest()
  45. if err != nil {
  46. log.Fatalf("unable to run local API: %s", err)
  47. }
  48. body, err := CreateTestMachine(router)
  49. if err != nil {
  50. log.Fatalln(err.Error())
  51. }
  52. w := httptest.NewRecorder()
  53. req, _ := http.NewRequest("POST", "/v1/watchers", strings.NewReader(body))
  54. req.Header.Add("User-Agent", UserAgent)
  55. router.ServeHTTP(w, req)
  56. w = httptest.NewRecorder()
  57. req, _ = http.NewRequest("POST", "/v1/watchers", strings.NewReader(body))
  58. req.Header.Add("User-Agent", UserAgent)
  59. router.ServeHTTP(w, req)
  60. assert.Equal(t, 403, w.Code)
  61. assert.Equal(t, "{\"message\":\"user 'test': user already exist\"}", w.Body.String())
  62. }