common_test.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package controller
  2. import (
  3. "testing"
  4. "github.com/gravitl/netmaker/models"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. type NodeValidationTC struct {
  8. testname string
  9. node models.Node
  10. errorMessage string
  11. }
  12. func TestCreateNode(t *testing.T) {
  13. }
  14. func TestDeleteNode(t *testing.T) {
  15. }
  16. func TestGetNode(t *testing.T) {
  17. }
  18. func TestGetPeerList(t *testing.T) {
  19. }
  20. func TestNodeCheckIn(t *testing.T) {
  21. }
  22. func TestSetNetworkNodesLastModified(t *testing.T) {
  23. }
  24. func TestTimestampNode(t *testing.T) {
  25. }
  26. func TestUpdateNode(t *testing.T) {
  27. }
  28. func TestValidateNodeCreate(t *testing.T) {
  29. cases := []NodeValidationTC{
  30. // NodeValidationTC{
  31. // testname: "EmptyAddress",
  32. // node: models.Node{
  33. // Address: "",
  34. // },
  35. // errorMessage: "Field validation for 'Endpoint' failed on the 'address_check' tag",
  36. // },
  37. NodeValidationTC{
  38. testname: "BadAddress",
  39. node: models.Node{
  40. Address: "256.0.0.1",
  41. },
  42. errorMessage: "Field validation for 'Address' failed on the 'address_check' tag",
  43. },
  44. NodeValidationTC{
  45. testname: "BadAddress6",
  46. node: models.Node{
  47. Address6: "2607::abcd:efgh::1",
  48. },
  49. errorMessage: "Field validation for 'Address6' failed on the 'address6_check' tag",
  50. },
  51. NodeValidationTC{
  52. testname: "BadLocalAddress",
  53. node: models.Node{
  54. LocalAddress: "10.0.200.300",
  55. },
  56. errorMessage: "Field validation for 'LocalAddress' failed on the 'localaddress_check' tag",
  57. },
  58. NodeValidationTC{
  59. testname: "InvalidName",
  60. node: models.Node{
  61. Name: "mynode*",
  62. },
  63. errorMessage: "Field validation for 'Name' failed on the 'name_valid' tag",
  64. },
  65. NodeValidationTC{
  66. testname: "NameTooLong",
  67. node: models.Node{
  68. Name: "mynodexmynode",
  69. },
  70. errorMessage: "Field validation for 'Name' failed on the 'max' tag",
  71. },
  72. NodeValidationTC{
  73. testname: "ListenPortMin",
  74. node: models.Node{
  75. ListenPort: 1023,
  76. },
  77. errorMessage: "Field validation for 'ListenPort' failed on the 'min' tag",
  78. },
  79. NodeValidationTC{
  80. testname: "ListenPortMax",
  81. node: models.Node{
  82. ListenPort: 65536,
  83. },
  84. errorMessage: "Field validation for 'ListenPort' failed on the 'max' tag",
  85. },
  86. NodeValidationTC{
  87. testname: "PublicKeyInvalid",
  88. node: models.Node{
  89. PublicKey: "",
  90. },
  91. errorMessage: "Field validation for 'PublicKey' failed on the 'pubkey_check' tag",
  92. },
  93. NodeValidationTC{
  94. testname: "EndpointInvalid",
  95. node: models.Node{
  96. Endpoint: "10.2.0.300",
  97. },
  98. errorMessage: "Field validation for 'Endpoint' failed on the 'endpoint_check' tag",
  99. },
  100. NodeValidationTC{
  101. testname: "PersistentKeepaliveMax",
  102. node: models.Node{
  103. PersistentKeepalive: 1001,
  104. },
  105. errorMessage: "Field validation for 'PersistentKeepalive' failed on the 'max' tag",
  106. },
  107. NodeValidationTC{
  108. testname: "MacAddressInvalid",
  109. node: models.Node{
  110. MacAddress: "01:02:03:04:05",
  111. },
  112. errorMessage: "Field validation for 'MacAddress' failed on the 'macaddress_valid' tag",
  113. },
  114. NodeValidationTC{
  115. testname: "MacAddressMissing",
  116. node: models.Node{
  117. MacAddress: "",
  118. },
  119. errorMessage: "Field validation for 'MacAddress' failed on the 'required' tag",
  120. },
  121. NodeValidationTC{
  122. testname: "EmptyPassword",
  123. node: models.Node{
  124. Password: "",
  125. },
  126. errorMessage: "Field validation for 'Password' failed on the 'password_check' tag",
  127. },
  128. NodeValidationTC{
  129. testname: "ShortPassword",
  130. node: models.Node{
  131. Password: "1234",
  132. },
  133. errorMessage: "Field validation for 'Password' failed on the 'password_check' tag",
  134. },
  135. NodeValidationTC{
  136. testname: "NoNetwork",
  137. node: models.Node{
  138. Network: "badnet",
  139. },
  140. errorMessage: "Field validation for 'Network' failed on the 'network_exists' tag",
  141. },
  142. }
  143. for _, tc := range cases {
  144. t.Run(tc.testname, func(t *testing.T) {
  145. err := ValidateNodeCreate("skynet", tc.node)
  146. assert.NotNil(t, err)
  147. assert.Contains(t, err.Error(), tc.errorMessage)
  148. })
  149. }
  150. t.Run("MacAddresUnique", func(t *testing.T) {
  151. createNet()
  152. node := models.Node{MacAddress: "01:02:03:04:05:06", Network: "skynet"}
  153. _, err := CreateNode(node, "skynet")
  154. assert.Nil(t, err)
  155. err = ValidateNodeCreate("skynet", node)
  156. assert.NotNil(t, err)
  157. assert.Contains(t, err.Error(), "Field validation for 'MacAddress' failed on the 'macaddress_unique' tag")
  158. })
  159. t.Run("EmptyAddress", func(t *testing.T) {
  160. node := models.Node{Address: ""}
  161. err := ValidateNodeCreate("skynet", node)
  162. assert.NotNil(t, err)
  163. assert.NotContains(t, err.Error(), "Field validation for 'Address' failed on the 'address_check' tag")
  164. })
  165. }
  166. func TestValidateNodeUpdate(t *testing.T) {
  167. //cases
  168. t.Run("BlankAddress", func(t *testing.T) {
  169. })
  170. t.Run("BlankAddress6", func(t *testing.T) {
  171. })
  172. t.Run("Blank", func(t *testing.T) {
  173. })
  174. // for _, tc := range cases {
  175. // t.Run(tc.testname, func(t *testing.T) {
  176. // err := ValidateNodeUpdate(tc.node)
  177. // assert.NotNil(t, err)
  178. // assert.Contains(t, err.Error(), tc.errorMessage)
  179. // })
  180. // }
  181. }