dnsHttpController_test.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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. err := DeleteDNS("myhost", "skynet")
  55. assert.Nil(t, err)
  56. })
  57. t.Run("NoEntry", func(t *testing.T) {
  58. err := DeleteDNS("myhost", "skynet")
  59. assert.Nil(t, err)
  60. })
  61. }
  62. func TestValidateDNSUpdate(t *testing.T) {
  63. entry := models.DNSEntry{"10.0.0.2", "myhost", "skynet"}
  64. _ = DeleteDNS("mynode", "skynet")
  65. t.Run("BadNetwork", func(t *testing.T) {
  66. change := models.DNSEntry{"10.0.0.2", "myhost", "badnet"}
  67. err := ValidateDNSUpdate(change, entry)
  68. assert.NotNil(t, err)
  69. assert.Contains(t, err.Error(), "Field validation for 'Network' failed on the 'network_exists' tag")
  70. })
  71. t.Run("EmptyNetwork", func(t *testing.T) {
  72. //this can't actually happen as change.Network is populated if is blank
  73. change := models.DNSEntry{"10.0.0.2", "myhost", ""}
  74. err := ValidateDNSUpdate(change, entry)
  75. assert.NotNil(t, err)
  76. assert.Contains(t, err.Error(), "Field validation for 'Network' failed on the 'network_exists' tag")
  77. })
  78. t.Run("EmptyAddress", func(t *testing.T) {
  79. //this can't actually happen as change.Address is populated if is blank
  80. change := models.DNSEntry{"", "myhost", "skynet"}
  81. err := ValidateDNSUpdate(change, entry)
  82. assert.NotNil(t, err)
  83. assert.Contains(t, err.Error(), "Field validation for 'Address' failed on the 'required' tag")
  84. })
  85. t.Run("BadAddress", func(t *testing.T) {
  86. change := models.DNSEntry{"10.0.256.1", "myhost", "skynet"}
  87. err := ValidateDNSUpdate(change, entry)
  88. assert.NotNil(t, err)
  89. assert.Contains(t, err.Error(), "Field validation for 'Address' failed on the 'ip' tag")
  90. })
  91. t.Run("BadName", func(t *testing.T) {
  92. change := models.DNSEntry{"10.0.0.2", "myhostr*", "skynet"}
  93. err := ValidateDNSUpdate(change, entry)
  94. assert.NotNil(t, err)
  95. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'alphanum' tag")
  96. })
  97. t.Run("EmptyName", func(t *testing.T) {
  98. //this can't actually happen as change.Name is populated if is blank
  99. change := models.DNSEntry{"10.0.0.2", "", "skynet"}
  100. err := ValidateDNSUpdate(change, entry)
  101. assert.NotNil(t, err)
  102. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'required' tag")
  103. })
  104. t.Run("NameTooLong", func(t *testing.T) {
  105. name := ""
  106. for i := 1; i < 122; i++ {
  107. name = name + "a"
  108. }
  109. change := models.DNSEntry{"10.0.0.2", name, "skynet"}
  110. err := ValidateDNSUpdate(change, entry)
  111. assert.NotNil(t, err)
  112. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'max' tag")
  113. })
  114. t.Run("NameUnique", func(t *testing.T) {
  115. change := models.DNSEntry{"10.0.0.2", "myhost", "wirecat"}
  116. _, _ = CreateDNS(entry)
  117. _, _ = CreateDNS(change)
  118. err := ValidateDNSUpdate(change, entry)
  119. assert.NotNil(t, err)
  120. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'name_unique' tag")
  121. })
  122. }
  123. func TestValidateDNSCreate(t *testing.T) {
  124. _ = DeleteDNS("mynode", "skynet")
  125. t.Run("NoNetwork", func(t *testing.T) {
  126. entry := models.DNSEntry{"10.0.0.2", "myhost", "badnet"}
  127. err := ValidateDNSCreate(entry)
  128. assert.NotNil(t, err)
  129. assert.Contains(t, err.Error(), "Field validation for 'Network' failed on the 'network_exists' tag")
  130. })
  131. t.Run("EmptyAddress", func(t *testing.T) {
  132. entry := models.DNSEntry{"", "myhost", "skynet"}
  133. err := ValidateDNSCreate(entry)
  134. assert.NotNil(t, err)
  135. assert.Contains(t, err.Error(), "Field validation for 'Address' failed on the 'required' tag")
  136. })
  137. t.Run("BadAddress", func(t *testing.T) {
  138. entry := models.DNSEntry{"10.0.256.1", "myhost", "skynet"}
  139. err := ValidateDNSCreate(entry)
  140. assert.NotNil(t, err)
  141. assert.Contains(t, err.Error(), "Field validation for 'Address' failed on the 'ip' tag")
  142. })
  143. t.Run("BadName", func(t *testing.T) {
  144. entry := models.DNSEntry{"10.0.0.2", "myhostr*", "skynet"}
  145. err := ValidateDNSCreate(entry)
  146. assert.NotNil(t, err)
  147. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'alphanum' tag")
  148. })
  149. t.Run("EmptyName", func(t *testing.T) {
  150. entry := models.DNSEntry{"10.0.0.2", "", "skynet"}
  151. err := ValidateDNSCreate(entry)
  152. assert.NotNil(t, err)
  153. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'required' tag")
  154. })
  155. t.Run("NameTooLong", func(t *testing.T) {
  156. name := ""
  157. for i := 1; i < 122; i++ {
  158. name = name + "a"
  159. }
  160. entry := models.DNSEntry{"10.0.0.2", name, "skynet"}
  161. err := ValidateDNSCreate(entry)
  162. assert.NotNil(t, err)
  163. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'max' tag")
  164. })
  165. t.Run("NameUnique", func(t *testing.T) {
  166. entry := models.DNSEntry{"10.0.0.2", "myhost", "skynet"}
  167. _, _ = CreateDNS(entry)
  168. err := ValidateDNSCreate(entry)
  169. assert.NotNil(t, err)
  170. assert.Contains(t, err.Error(), "Field validation for 'Name' failed on the 'name_unique' tag")
  171. })
  172. }