nodeHttpController_test.go 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package controller
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/gravitl/netmaker/models"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestCheckIn(t *testing.T) {
  9. deleteNet(t)
  10. createNet()
  11. node := createTestNode(t)
  12. time.Sleep(time.Second * 1)
  13. t.Run("BadNet", func(t *testing.T) {
  14. resp, err := CheckIn("badnet", node.MacAddress)
  15. assert.NotNil(t, err)
  16. assert.Equal(t, models.Node{}, resp)
  17. assert.Equal(t, "mongo: no documents in result", err.Error())
  18. })
  19. t.Run("BadMac", func(t *testing.T) {
  20. resp, err := CheckIn("skynet", "01:02:03")
  21. assert.NotNil(t, err)
  22. assert.Equal(t, models.Node{}, resp)
  23. assert.Equal(t, "mongo: no documents in result", err.Error())
  24. })
  25. t.Run("Success", func(t *testing.T) {
  26. resp, err := CheckIn("skynet", node.MacAddress)
  27. assert.Nil(t, err)
  28. assert.Greater(t, resp.LastCheckIn, node.LastCheckIn)
  29. })
  30. }
  31. func TestCreateEgressGateway(t *testing.T) {
  32. var gateway models.EgressGatewayRequest
  33. gateway.Interface = "eth0"
  34. gateway.Ranges = ["10.100.100.0/24"]
  35. deleteNet(t)
  36. createNet()
  37. t.Run("NoNodes", func(t *testing.T) {
  38. node, err := CreateEgressGateway(gateway)
  39. assert.NotNil(t, err)
  40. assert.Equal(t, models.Node{}, node)
  41. assert.Equal(t, "mongo: no documents in result", err.Error())
  42. })
  43. t.Run("Success", func(t *testing.T) {
  44. testnode := createTestNode(t)
  45. gateway.NetID = "skynet"
  46. gateway.NodeID = testnode.MacAddress
  47. node, err := CreateEgressGateway(gateway)
  48. assert.Nil(t, err)
  49. assert.Equal(t, true, node.IsEgressGateway)
  50. assert.Equal(t, "10.100.100.0/24", node.EgressGatewayRange)
  51. })
  52. }
  53. func TestDeleteEgressGateway(t *testing.T) {
  54. var gateway models.EgressGatewayRequest
  55. deleteNet(t)
  56. createNet()
  57. createTestNode(t)
  58. testnode := createTestNode(t)
  59. gateway.Interface = "eth0"
  60. gateway.Ranges = ["10.100.100.0/24"]
  61. gateway.NetID = "skynet"
  62. gateway.NodeID = testnode.MacAddress
  63. t.Run("Success", func(t *testing.T) {
  64. node, err := CreateEgressGateway(gateway)
  65. assert.Nil(t, err)
  66. assert.Equal(t, true, node.IsEgressGateway)
  67. assert.Equal(t, ["10.100.100.0/24"], node.EgressGatewayRanges)
  68. node, err = DeleteEgressGateway(gateway.NetID, gateway.NodeID)
  69. assert.Nil(t, err)
  70. assert.Equal(t, false, node.IsEgressGateway)
  71. assert.Equal(t, "", node.EgressGatewayRanges)
  72. assert.Equal(t, "", node.PostUp)
  73. assert.Equal(t, "", node.PostDown)
  74. })
  75. t.Run("NotGateway", func(t *testing.T) {
  76. node, err := DeleteEgressGateway(gateway.NetID, gateway.NodeID)
  77. assert.Nil(t, err)
  78. assert.Equal(t, false, node.IsEgressGateway)
  79. assert.Equal(t, "", node.EgressGatewayRanges)
  80. assert.Equal(t, "", node.PostUp)
  81. assert.Equal(t, "", node.PostDown)
  82. })
  83. t.Run("BadNode", func(t *testing.T) {
  84. node, err := DeleteEgressGateway(gateway.NetID, "01:02:03")
  85. assert.NotNil(t, err)
  86. assert.Equal(t, "mongo: no documents in result", err.Error())
  87. assert.Equal(t, models.Node{}, node)
  88. })
  89. t.Run("BadNet", func(t *testing.T) {
  90. node, err := DeleteEgressGateway("badnet", gateway.NodeID)
  91. assert.NotNil(t, err)
  92. assert.Equal(t, "mongo: no documents in result", err.Error())
  93. assert.Equal(t, models.Node{}, node)
  94. })
  95. }
  96. func TestGetLastModified(t *testing.T) {
  97. deleteNet(t)
  98. createNet()
  99. createTestNode(t)
  100. t.Run("BadNet", func(t *testing.T) {
  101. network, err := GetLastModified("badnet")
  102. assert.NotNil(t, err)
  103. assert.Equal(t, models.Network{}, network)
  104. assert.Equal(t, "mongo: no documents in result", err.Error())
  105. })
  106. t.Run("Success", func(t *testing.T) {
  107. network, err := GetLastModified("skynet")
  108. assert.Nil(t, err)
  109. assert.NotEqual(t, models.Network{}, network)
  110. })
  111. }
  112. func TestGetNetworkNodes(t *testing.T) {
  113. deleteNet(t)
  114. createNet()
  115. t.Run("BadNet", func(t *testing.T) {
  116. node, err := GetNetworkNodes("badnet")
  117. assert.Nil(t, err)
  118. assert.Equal(t, []models.Node(nil), node)
  119. //assert.Equal(t, "mongo: no documents in result", err.Error())
  120. })
  121. t.Run("NoNodes", func(t *testing.T) {
  122. node, err := GetNetworkNodes("skynet")
  123. assert.Nil(t, err)
  124. assert.Equal(t, []models.Node(nil), node)
  125. })
  126. t.Run("Success", func(t *testing.T) {
  127. createTestNode(t)
  128. node, err := GetNetworkNodes("skynet")
  129. assert.Nil(t, err)
  130. assert.NotEqual(t, []models.Node(nil), node)
  131. })
  132. }
  133. func TestUncordonNode(t *testing.T) {
  134. deleteNet(t)
  135. createNet()
  136. node := createTestNode(t)
  137. t.Run("BadNet", func(t *testing.T) {
  138. resp, err := UncordonNode("badnet", node.MacAddress)
  139. assert.NotNil(t, err)
  140. assert.Equal(t, models.Node{}, resp)
  141. assert.Equal(t, "mongo: no documents in result", err.Error())
  142. })
  143. t.Run("BadMac", func(t *testing.T) {
  144. resp, err := UncordonNode("skynet", "01:02:03")
  145. assert.NotNil(t, err)
  146. assert.Equal(t, models.Node{}, resp)
  147. assert.Equal(t, "mongo: no documents in result", err.Error())
  148. })
  149. t.Run("Success", func(t *testing.T) {
  150. resp, err := CheckIn("skynet", node.MacAddress)
  151. assert.Nil(t, err)
  152. assert.Equal(t, false, resp.IsPending)
  153. })
  154. }
  155. func TestValidateEgressGateway(t *testing.T) {
  156. var gateway models.EgressGatewayRequest
  157. t.Run("EmptyRange", func(t *testing.T) {
  158. gateway.Interface = "eth0"
  159. gateway.Ranges = []string{}
  160. err := ValidateEgressGateway(gateway)
  161. assert.NotNil(t, err)
  162. assert.Equal(t, "IP Range Not Valid", err.Error())
  163. })
  164. t.Run("EmptyInterface", func(t *testing.T) {
  165. gateway.Interface = ""
  166. err := ValidateEgressGateway(gateway)
  167. assert.NotNil(t, err)
  168. assert.Equal(t, "Interface cannot be empty", err.Error())
  169. })
  170. t.Run("Success", func(t *testing.T) {
  171. gateway.Interface = "eth0"
  172. gateway.Ranges = ["10.100.100.0/24"]
  173. err := ValidateEgressGateway(gateway)
  174. assert.Nil(t, err)
  175. })
  176. }
  177. //func TestUpdateNode(t *testing.T) {
  178. //}