aboutsummaryrefslogtreecommitdiff
path: root/rescached_test.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2022-06-09 23:44:02 +0700
committerShulhan <ms@kilabit.info>2022-06-09 23:44:02 +0700
commit5c354863c9c6fcc080f2407e6f7adea41fa4371d (patch)
treeb892e13340335436e6a785a9267e080f937b10f8 /rescached_test.go
parent03ae9f6bfde5262b44d2318cc1162c20d867a3f6 (diff)
downloadrescached-5c354863c9c6fcc080f2407e6f7adea41fa4371d.tar.xz
all: add integration tests for HTTP API related to block.d
The test is conducted by running the server and call the HTTP API using the Client methods.
Diffstat (limited to 'rescached_test.go')
-rw-r--r--rescached_test.go96
1 files changed, 96 insertions, 0 deletions
diff --git a/rescached_test.go b/rescached_test.go
new file mode 100644
index 0000000..ebf480f
--- /dev/null
+++ b/rescached_test.go
@@ -0,0 +1,96 @@
+// SPDX-FileCopyrightText: 2022 M. Shulhan <ms@kilabit.info>
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package rescached
+
+import (
+ "log"
+ "os"
+ "testing"
+
+ libhttp "github.com/shuLhan/share/lib/http"
+)
+
+const (
+ blockdServerAddress = "127.0.0.1:11180"
+)
+
+var (
+ testEnv *Environment
+ testServer *Server
+ resc *Client
+)
+
+func TestMain(m *testing.M) {
+ var (
+ err error
+ testStatus int
+ )
+
+ go mockBlockdServer()
+
+ testEnv, err = LoadEnvironment("_test", "/etc/rescached/rescached.cfg")
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ testServer, err = New(testEnv)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ err = testServer.Start()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ defer testServer.Stop()
+
+ resc = NewClient("http://"+testEnv.WUIListen, false)
+
+ testStatus = m.Run()
+
+ os.Exit(testStatus)
+}
+
+func mockBlockdServer() {
+ var (
+ serverOpts = libhttp.ServerOptions{
+ Address: blockdServerAddress,
+ }
+ epHostsA = libhttp.Endpoint{
+ Path: "/hosts/a",
+ Method: libhttp.RequestMethodGet,
+ RequestType: libhttp.RequestTypeNone,
+ ResponseType: libhttp.ResponseTypePlain,
+ Call: func(_ *libhttp.EndpointRequest) ([]byte, error) {
+ return []byte("127.0.0.2 a.block\n"), nil
+ },
+ }
+
+ mockServer *libhttp.Server
+ err error
+ )
+
+ mockServer, err = libhttp.NewServer(&serverOpts)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ err = mockServer.RegisterEndpoint(&epHostsA)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ defer func() {
+ err = mockServer.Stop(0)
+ if err != nil {
+ log.Fatal(err)
+ }
+ }()
+
+ err = mockServer.Start()
+ if err != nil {
+ log.Fatal(err)
+ }
+}