nodeHttpController_test.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package controller
  2. import (
  3. "testing"
  4. "github.com/gravitl/netmaker/database"
  5. "github.com/gravitl/netmaker/models"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestCreateEgressGateway(t *testing.T) {
  9. var gateway models.EgressGatewayRequest
  10. gateway.Interface = "eth0"
  11. gateway.Ranges = []string{"10.100.100.0/24"}
  12. database.InitializeDatabase()
  13. deleteAllNetworks()
  14. createNet()
  15. t.Run("NoNodes", func(t *testing.T) {
  16. node, err := CreateEgressGateway(gateway)
  17. assert.Equal(t, models.Node{}, node)
  18. assert.EqualError(t, err, "unable to get record key")
  19. })
  20. t.Run("Success", func(t *testing.T) {
  21. testnode := createTestNode()
  22. gateway.NetID = "skynet"
  23. gateway.NodeID = testnode.MacAddress
  24. node, err := CreateEgressGateway(gateway)
  25. assert.Nil(t, err)
  26. assert.Equal(t, "yes", node.IsEgressGateway)
  27. assert.Equal(t, gateway.Ranges, node.EgressGatewayRanges)
  28. })
  29. }
  30. func TestDeleteEgressGateway(t *testing.T) {
  31. var gateway models.EgressGatewayRequest
  32. database.InitializeDatabase()
  33. deleteAllNetworks()
  34. createNet()
  35. createTestNode()
  36. testnode := createTestNode()
  37. gateway.Interface = "eth0"
  38. gateway.Ranges = []string{"10.100.100.0/24"}
  39. gateway.NetID = "skynet"
  40. gateway.NodeID = testnode.MacAddress
  41. t.Run("Success", func(t *testing.T) {
  42. node, err := CreateEgressGateway(gateway)
  43. assert.Nil(t, err)
  44. assert.Equal(t, "yes", node.IsEgressGateway)
  45. assert.Equal(t, []string{"10.100.100.0/24"}, node.EgressGatewayRanges)
  46. node, err = DeleteEgressGateway(gateway.NetID, gateway.NodeID)
  47. assert.Nil(t, err)
  48. assert.Equal(t, "no", node.IsEgressGateway)
  49. assert.Equal(t, []string([]string{}), node.EgressGatewayRanges)
  50. assert.Equal(t, "", node.PostUp)
  51. assert.Equal(t, "", node.PostDown)
  52. })
  53. t.Run("NotGateway", func(t *testing.T) {
  54. node, err := DeleteEgressGateway(gateway.NetID, gateway.NodeID)
  55. assert.Nil(t, err)
  56. assert.Equal(t, "no", node.IsEgressGateway)
  57. assert.Equal(t, []string([]string{}), node.EgressGatewayRanges)
  58. assert.Equal(t, "", node.PostUp)
  59. assert.Equal(t, "", node.PostDown)
  60. })
  61. t.Run("BadNode", func(t *testing.T) {
  62. node, err := DeleteEgressGateway(gateway.NetID, "01:02:03")
  63. assert.EqualError(t, err, "no result found")
  64. assert.Equal(t, models.Node{}, node)
  65. })
  66. t.Run("BadNet", func(t *testing.T) {
  67. node, err := DeleteEgressGateway("badnet", gateway.NodeID)
  68. assert.EqualError(t, err, "no result found")
  69. assert.Equal(t, models.Node{}, node)
  70. })
  71. }
  72. func TestGetNetworkNodes(t *testing.T) {
  73. database.InitializeDatabase()
  74. deleteAllNetworks()
  75. createNet()
  76. t.Run("BadNet", func(t *testing.T) {
  77. node, err := GetNetworkNodes("badnet")
  78. assert.Nil(t, err)
  79. assert.Equal(t, []models.Node{}, node)
  80. //assert.Equal(t, "mongo: no documents in result", err.Error())
  81. })
  82. t.Run("NoNodes", func(t *testing.T) {
  83. node, err := GetNetworkNodes("skynet")
  84. assert.Nil(t, err)
  85. assert.Equal(t, []models.Node{}, node)
  86. })
  87. t.Run("Success", func(t *testing.T) {
  88. createTestNode()
  89. node, err := GetNetworkNodes("skynet")
  90. assert.Nil(t, err)
  91. assert.NotEqual(t, []models.Node(nil), node)
  92. })
  93. }
  94. func TestUncordonNode(t *testing.T) {
  95. database.InitializeDatabase()
  96. deleteAllNetworks()
  97. createNet()
  98. node := createTestNode()
  99. t.Run("BadNet", func(t *testing.T) {
  100. resp, err := UncordonNode("badnet", node.MacAddress)
  101. assert.Equal(t, models.Node{}, resp)
  102. assert.EqualError(t, err, "no result found")
  103. })
  104. t.Run("BadMac", func(t *testing.T) {
  105. resp, err := UncordonNode("skynet", "01:02:03")
  106. assert.Equal(t, models.Node{}, resp)
  107. assert.EqualError(t, err, "no result found")
  108. })
  109. t.Run("Success", func(t *testing.T) {
  110. resp, err := UncordonNode("skynet", node.MacAddress)
  111. assert.Nil(t, err)
  112. assert.Equal(t, "no", resp.IsPending)
  113. })
  114. }
  115. func TestValidateEgressGateway(t *testing.T) {
  116. var gateway models.EgressGatewayRequest
  117. t.Run("EmptyRange", func(t *testing.T) {
  118. gateway.Interface = "eth0"
  119. gateway.Ranges = []string{}
  120. err := ValidateEgressGateway(gateway)
  121. assert.EqualError(t, err, "IP Ranges Cannot Be Empty")
  122. })
  123. t.Run("EmptyInterface", func(t *testing.T) {
  124. gateway.Interface = ""
  125. err := ValidateEgressGateway(gateway)
  126. assert.NotNil(t, err)
  127. assert.Equal(t, "Interface cannot be empty", err.Error())
  128. })
  129. t.Run("Success", func(t *testing.T) {
  130. gateway.Interface = "eth0"
  131. gateway.Ranges = []string{"10.100.100.0/24"}
  132. err := ValidateEgressGateway(gateway)
  133. assert.Nil(t, err)
  134. })
  135. }
  136. //
  137. ////func TestUpdateNode(t *testing.T) {
  138. ////}
  139. func deleteAllNodes() {
  140. nodes, _ := models.GetAllNodes()
  141. for _, node := range nodes {
  142. key := node.MacAddress + "###" + node.Network
  143. DeleteNode(key, true)
  144. }
  145. }