docker_api_network_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // +build experimental
  2. package main
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. "net/http"
  7. "github.com/go-check/check"
  8. )
  9. func isNetworkAvailable(c *check.C, name string) bool {
  10. status, body, err := sockRequest("GET", "/networks", nil)
  11. c.Assert(status, check.Equals, http.StatusOK)
  12. c.Assert(err, check.IsNil)
  13. var inspectJSON []struct {
  14. Name string
  15. ID string
  16. Type string
  17. }
  18. if err = json.Unmarshal(body, &inspectJSON); err != nil {
  19. c.Fatalf("unable to unmarshal response body: %v", err)
  20. }
  21. for _, n := range inspectJSON {
  22. if n.Name == name {
  23. return true
  24. }
  25. }
  26. return false
  27. }
  28. func (s *DockerSuite) TestNetworkApiGetAll(c *check.C) {
  29. defaults := []string{"bridge", "host", "none"}
  30. for _, nn := range defaults {
  31. if !isNetworkAvailable(c, nn) {
  32. c.Fatalf("Missing Default network : %s", nn)
  33. }
  34. }
  35. }
  36. func (s *DockerSuite) TestNetworkApiCreateDelete(c *check.C) {
  37. name := "testnetwork"
  38. config := map[string]interface{}{
  39. "name": name,
  40. "network_type": "bridge",
  41. }
  42. status, resp, err := sockRequest("POST", "/networks", config)
  43. c.Assert(status, check.Equals, http.StatusCreated)
  44. c.Assert(err, check.IsNil)
  45. if !isNetworkAvailable(c, name) {
  46. c.Fatalf("Network %s not found", name)
  47. }
  48. var id string
  49. err = json.Unmarshal(resp, &id)
  50. if err != nil {
  51. c.Fatal(err)
  52. }
  53. status, _, err = sockRequest("DELETE", fmt.Sprintf("/networks/%s", id), nil)
  54. c.Assert(status, check.Equals, http.StatusOK)
  55. c.Assert(err, check.IsNil)
  56. if isNetworkAvailable(c, name) {
  57. c.Fatalf("Network %s not deleted", name)
  58. }
  59. }