dnsHttpController_test.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package controller
  2. import (
  3. "testing"
  4. "github.com/gravitl/netmaker/models"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. func TestGetNodeDNS(t *testing.T) {
  8. dns, err := GetNodeDNS("skynet")
  9. assert.Nil(t, err)
  10. t.Log(dns)
  11. }
  12. func TestGetCustomDNS(t *testing.T) {
  13. dns, err := GetCustomDNS("skynet")
  14. assert.Nil(t, err)
  15. t.Log(dns)
  16. }
  17. func TestGetDNSEntryNum(t *testing.T) {
  18. num, err := GetDNSEntryNum("myhost", "skynet")
  19. assert.Nil(t, err)
  20. t.Log(num)
  21. }
  22. func TestGetDNS(t *testing.T) {
  23. dns, err := GetDNS("skynet")
  24. assert.Nil(t, err)
  25. t.Log(dns)
  26. }
  27. func TestCreateDNS(t *testing.T) {
  28. deleteNet(t)
  29. createNet()
  30. //dns, err := GetDNS("skynet")
  31. //assert.Nil(t, err)
  32. //for _, entry := range dns {
  33. // _, _ = DeleteDNS(entry.Name, "skynet")
  34. //}
  35. entry := models.DNSEntry{"10.0.0.2", "myhost", "skynet"}
  36. err := ValidateDNSCreate(entry)
  37. assert.Nil(t, err)
  38. if err != nil {
  39. return
  40. }
  41. dns, err := CreateDNS(entry)
  42. assert.Nil(t, err)
  43. t.Log(dns)
  44. }
  45. func TestGetDNSEntry(t *testing.T) {
  46. entry, err := GetDNSEntry("myhost", "skynet")
  47. assert.Nil(t, err)
  48. t.Log(entry)
  49. }
  50. func TestUpdateDNS(t *testing.T) {
  51. }
  52. func TestDeleteDNS(t *testing.T) {
  53. t.Run("EntryExists", func(t *testing.T) {
  54. success, err := DeleteDNS("myhost", "skynet")
  55. assert.Nil(t, err)
  56. assert.True(t, success)
  57. })
  58. t.Run("NoEntry", func(t *testing.T) {
  59. success, err := DeleteDNS("myhost", "skynet")
  60. assert.Nil(t, err)
  61. assert.False(t, success)
  62. })
  63. }
  64. func TestValidateDNSUpdate(t *testing.T) {
  65. entry := models.DNSEntry{"10.0.0.2", "myhost", "skynet"}
  66. _, _ = DeleteDNS("mynode", "skynet")
  67. t.Run("BadNetwork", func(t *testing.T) {
  68. change := models.DNSEntry{"10.0.0.2", "myhost", "badnet"}
  69. err := ValidateDNSUpdate(change, entry)
  70. assert.NotNil(t, err)
  71. assert.Contains(t, err.Error(), "Field validation for 'Network' failed on the 'network_exists' tag")
  72. })
  73. t.Run("EmptyNetwork", func(t *testing.T) {
  74. //this can't actually happen as change.Network is populated if is blank
  75. change := models.DNSEntry{"10.0.0.2", "myhost", ""}
  76. err := ValidateDNSUpdate(change, entry)
  77. assert.NotNil(t, err)
  78. assert.Contains(t, err.Error(), "Field validation for 'Network' failed on the 'network_exists' tag")
  79. })
  80. t.Run("EmptyAddress", func(t *testing.T) {
  81. //this can't actually happen as change.Address is populated if is blank
  82. change := models.DNSEntry{"", "myhost", "skynet"}
  83. err := ValidateDNSUpdate(change, entry)
  84. assert.NotNil(t, err)
  85. assert.Contains(t, err.Error(), "Field validation for 'Address' failed on the 'required' tag")
  86. })
  87. t.Run("BadAddress", func(t *testing.T) {
  88. change := models.DNSEntry{"10.0.256.1", "myhost", "skynet"}
  89. err := ValidateDNSUpdate(change, entry)
  90. assert.NotNil(t, err)
  91. assert.Contains(t, err.Error(), "Field validation for 'Address' failed on the 'ip' tag")
  92. })
  93. t.Run("BadName", func(t *testing.T) {
  94. change := models.DNSEntry{"10.0.0.2", "myhostr*", "skynet"}
  95. err := ValidateDNSUpdate(change, entry)
  96. assert.NotNil(t, err)
  97. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'alphanum' tag")
  98. })
  99. t.Run("EmptyName", func(t *testing.T) {
  100. //this can't actually happen as change.Name is populated if is blank
  101. change := models.DNSEntry{"10.0.0.2", "", "skynet"}
  102. err := ValidateDNSUpdate(change, entry)
  103. assert.NotNil(t, err)
  104. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'required' tag")
  105. })
  106. t.Run("NameTooLong", func(t *testing.T) {
  107. name := ""
  108. for i := 1; i < 122; i++ {
  109. name = name + "a"
  110. }
  111. change := models.DNSEntry{"10.0.0.2", name, "skynet"}
  112. err := ValidateDNSUpdate(change, entry)
  113. assert.NotNil(t, err)
  114. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'max' tag")
  115. })
  116. t.Run("NameUnique", func(t *testing.T) {
  117. change := models.DNSEntry{"10.0.0.2", "myhost", "wirecat"}
  118. _, _ = CreateDNS(entry)
  119. _, _ = CreateDNS(change)
  120. err := ValidateDNSUpdate(change, entry)
  121. assert.NotNil(t, err)
  122. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'name_unique' tag")
  123. })
  124. }
  125. func TestValidateDNSCreate(t *testing.T) {
  126. _, _ = DeleteDNS("mynode", "skynet")
  127. t.Run("NoNetwork", func(t *testing.T) {
  128. entry := models.DNSEntry{"10.0.0.2", "myhost", "badnet"}
  129. err := ValidateDNSCreate(entry)
  130. assert.NotNil(t, err)
  131. assert.Contains(t, err.Error(), "Field validation for 'Network' failed on the 'network_exists' tag")
  132. })
  133. t.Run("EmptyAddress", func(t *testing.T) {
  134. entry := models.DNSEntry{"", "myhost", "skynet"}
  135. err := ValidateDNSCreate(entry)
  136. assert.NotNil(t, err)
  137. assert.Contains(t, err.Error(), "Field validation for 'Address' failed on the 'required' tag")
  138. })
  139. t.Run("BadAddress", func(t *testing.T) {
  140. entry := models.DNSEntry{"10.0.256.1", "myhost", "skynet"}
  141. err := ValidateDNSCreate(entry)
  142. assert.NotNil(t, err)
  143. assert.Contains(t, err.Error(), "Field validation for 'Address' failed on the 'ip' tag")
  144. })
  145. t.Run("BadName", func(t *testing.T) {
  146. entry := models.DNSEntry{"10.0.0.2", "myhostr*", "skynet"}
  147. err := ValidateDNSCreate(entry)
  148. assert.NotNil(t, err)
  149. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'alphanum' tag")
  150. })
  151. t.Run("EmptyName", func(t *testing.T) {
  152. entry := models.DNSEntry{"10.0.0.2", "", "skynet"}
  153. err := ValidateDNSCreate(entry)
  154. assert.NotNil(t, err)
  155. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'required' tag")
  156. })
  157. t.Run("NameTooLong", func(t *testing.T) {
  158. name := ""
  159. for i := 1; i < 122; i++ {
  160. name = name + "a"
  161. }
  162. entry := models.DNSEntry{"10.0.0.2", name, "skynet"}
  163. err := ValidateDNSCreate(entry)
  164. assert.NotNil(t, err)
  165. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'max' tag")
  166. })
  167. t.Run("NameUnique", func(t *testing.T) {
  168. entry := models.DNSEntry{"10.0.0.2", "myhost", "skynet"}
  169. _, _ = CreateDNS(entry)
  170. err := ValidateDNSCreate(entry)
  171. assert.NotNil(t, err)
  172. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'name_unique' tag")
  173. })
  174. }