meta_init_test.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. // Copyright 2023 EMQ Technologies Co., Ltd.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package server
  15. import (
  16. "bytes"
  17. "fmt"
  18. "net/http"
  19. "net/http/httptest"
  20. "os"
  21. "path"
  22. "testing"
  23. "github.com/gorilla/mux"
  24. "github.com/stretchr/testify/assert"
  25. "github.com/stretchr/testify/suite"
  26. "github.com/lf-edge/ekuiper/internal/conf"
  27. "github.com/lf-edge/ekuiper/internal/meta"
  28. )
  29. type MetaTestSuite struct {
  30. suite.Suite
  31. m metaComp
  32. r *mux.Router
  33. }
  34. func (suite *MetaTestSuite) SetupTest() {
  35. suite.m = metaComp{}
  36. suite.r = mux.NewRouter()
  37. suite.m.rest(suite.r)
  38. meta.InitYamlConfigManager()
  39. confDir, err := conf.GetConfLoc()
  40. if err != nil {
  41. fmt.Println(err)
  42. }
  43. if err := meta.ReadSinkMetaFile(path.Join(confDir, "sinks", "mqtt.json"), true); nil != err {
  44. fmt.Println(err)
  45. }
  46. if err := meta.ReadSourceMetaFile(path.Join(confDir, "mqtt_source.json"), true, false); nil != err {
  47. fmt.Println(err)
  48. }
  49. }
  50. func (suite *MetaTestSuite) TestSinksMetaHandler() {
  51. req, _ := http.NewRequest(http.MethodGet, "/metadata/sinks", bytes.NewBufferString("any"))
  52. w := httptest.NewRecorder()
  53. suite.r.ServeHTTP(w, req)
  54. assert.Equal(suite.T(), http.StatusOK, w.Code)
  55. }
  56. func (suite *MetaTestSuite) TestNewSinkMetaHandler() {
  57. req, _ := http.NewRequest(http.MethodGet, "/metadata/sinks/mqtt", bytes.NewBufferString("any"))
  58. w := httptest.NewRecorder()
  59. suite.r.ServeHTTP(w, req)
  60. assert.Equal(suite.T(), http.StatusOK, w.Code)
  61. }
  62. func (suite *MetaTestSuite) TestFunctionsMetaHandler() {
  63. req, _ := http.NewRequest(http.MethodGet, "/metadata/functions", bytes.NewBufferString("any"))
  64. w := httptest.NewRecorder()
  65. suite.r.ServeHTTP(w, req)
  66. assert.Equal(suite.T(), http.StatusOK, w.Code)
  67. }
  68. func (suite *MetaTestSuite) TestOperatorsMetaHandler() {
  69. req, _ := http.NewRequest(http.MethodGet, "/metadata/operators", bytes.NewBufferString("any"))
  70. w := httptest.NewRecorder()
  71. suite.r.ServeHTTP(w, req)
  72. assert.Equal(suite.T(), http.StatusOK, w.Code)
  73. }
  74. func (suite *MetaTestSuite) TestSourcesMetaHandler() {
  75. req, _ := http.NewRequest(http.MethodGet, "/metadata/sources", bytes.NewBufferString("any"))
  76. w := httptest.NewRecorder()
  77. suite.r.ServeHTTP(w, req)
  78. assert.Equal(suite.T(), http.StatusOK, w.Code)
  79. }
  80. func (suite *MetaTestSuite) TestConnectionsMetaHandler() {
  81. req, _ := http.NewRequest(http.MethodGet, "/metadata/connections", bytes.NewBufferString("any"))
  82. w := httptest.NewRecorder()
  83. suite.r.ServeHTTP(w, req)
  84. assert.Equal(suite.T(), http.StatusOK, w.Code)
  85. }
  86. func (suite *MetaTestSuite) TestSourceMetaHandler() {
  87. req, _ := http.NewRequest(http.MethodGet, "/metadata/sources/mqtt", bytes.NewBufferString("any"))
  88. w := httptest.NewRecorder()
  89. suite.r.ServeHTTP(w, req)
  90. assert.Equal(suite.T(), http.StatusOK, w.Code)
  91. }
  92. func (suite *MetaTestSuite) TestConnectionMetaHandler() {
  93. req, _ := http.NewRequest(http.MethodGet, "/metadata/connections/mqtt", bytes.NewBufferString("any"))
  94. w := httptest.NewRecorder()
  95. suite.r.ServeHTTP(w, req)
  96. assert.Equal(suite.T(), http.StatusOK, w.Code)
  97. }
  98. func (suite *MetaTestSuite) TestSourceConfHandler() {
  99. req, _ := http.NewRequest(http.MethodGet, "/metadata/sources/yaml/mqtt", bytes.NewBufferString("any"))
  100. w := httptest.NewRecorder()
  101. suite.r.ServeHTTP(w, req)
  102. assert.Equal(suite.T(), http.StatusOK, w.Code)
  103. }
  104. func (suite *MetaTestSuite) TestConnectionConfHandler() {
  105. req, _ := http.NewRequest(http.MethodGet, "/metadata/connections/yaml/mqtt", bytes.NewBufferString("any"))
  106. w := httptest.NewRecorder()
  107. suite.r.ServeHTTP(w, req)
  108. assert.Equal(suite.T(), http.StatusOK, w.Code)
  109. }
  110. func (suite *MetaTestSuite) TestSinkConfHandler() {
  111. req, _ := http.NewRequest(http.MethodGet, "/metadata/sinks/yaml/mqtt", bytes.NewBufferString("any"))
  112. w := httptest.NewRecorder()
  113. suite.r.ServeHTTP(w, req)
  114. assert.Equal(suite.T(), http.StatusOK, w.Code)
  115. }
  116. func (suite *MetaTestSuite) TestSourceConfKeyHandler() {
  117. req, _ := http.NewRequest(http.MethodPut, "/metadata/sources/mqtt/confKeys/test", bytes.NewBufferString(`{"qos": 0, "server": "tcp://10.211.55.6:1883"}`))
  118. w := httptest.NewRecorder()
  119. DataDir, _ := conf.GetDataLoc()
  120. os.MkdirAll(path.Join(DataDir, "sources"), 0o755)
  121. if _, err := os.Create(path.Join(DataDir, "sources", "mqtt.yaml")); err != nil {
  122. fmt.Println(err)
  123. }
  124. suite.r.ServeHTTP(w, req)
  125. assert.Equal(suite.T(), http.StatusOK, w.Code)
  126. os.Remove(path.Join(DataDir, "sources", "mqtt.yaml"))
  127. os.Remove(path.Join(DataDir, "sources"))
  128. }
  129. func (suite *MetaTestSuite) TestConnectionConfKeyHandler() {
  130. req, _ := http.NewRequest(http.MethodPut, "/metadata/connections/mqtt/confKeys/test", bytes.NewBufferString(`{"qos": 0, "server": "tcp://10.211.55.6:1883"}`))
  131. w := httptest.NewRecorder()
  132. DataDir, _ := conf.GetDataLoc()
  133. os.MkdirAll(path.Join(DataDir, "connections"), 0o755)
  134. if _, err := os.Create(path.Join(DataDir, "connections", "connection.yaml")); err != nil {
  135. fmt.Println(err)
  136. }
  137. suite.r.ServeHTTP(w, req)
  138. assert.Equal(suite.T(), http.StatusOK, w.Code)
  139. os.Remove(path.Join(DataDir, "connections", "connection.yaml"))
  140. os.Remove(path.Join(DataDir, "connections"))
  141. }
  142. func (suite *MetaTestSuite) TestSinkConfKeyHandler() {
  143. req, _ := http.NewRequest(http.MethodPut, "/metadata/sinks/mqtt/confKeys/test", bytes.NewBufferString(`{"qos": 0, "server": "tcp://10.211.55.6:1883"}`))
  144. DataDir, _ := conf.GetDataLoc()
  145. os.MkdirAll(path.Join(DataDir, "sinks"), 0o755)
  146. if _, err := os.Create(path.Join(DataDir, "sinks", "mqtt.yaml")); err != nil {
  147. fmt.Println(err)
  148. }
  149. w := httptest.NewRecorder()
  150. suite.r.ServeHTTP(w, req)
  151. assert.Equal(suite.T(), http.StatusOK, w.Code)
  152. os.Remove(path.Join(DataDir, "sinks", "mqtt.yaml"))
  153. os.Remove(path.Join(DataDir, "sinks"))
  154. }
  155. func (suite *MetaTestSuite) TestResourcesHandler() {
  156. req, _ := http.NewRequest(http.MethodGet, "/metadata/resources", bytes.NewBufferString("any"))
  157. w := httptest.NewRecorder()
  158. suite.r.ServeHTTP(w, req)
  159. assert.Equal(suite.T(), http.StatusOK, w.Code)
  160. }
  161. func TestMetaTestSuite(t *testing.T) {
  162. suite.Run(t, new(MetaTestSuite))
  163. }