mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-04-25 17:42:44 +00:00
test(lib/policy/config): ensure valkey stores can be loaded
Signed-off-by: Xe Iaso <me@xeiaso.net>
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
)
|
||||||
|
|
||||||
|
func UnbreakDocker() {
|
||||||
|
// XXX(Xe): This is bad code. Do not do this.
|
||||||
|
//
|
||||||
|
// I have to do this because I'm running from inside the context of a dev
|
||||||
|
// container. This dev container runs in a different docker network than
|
||||||
|
// the valkey test container runs in. In order to let my dev container
|
||||||
|
// connect to the test container, they need to share a network in common.
|
||||||
|
// The easiest network to use for this is the default "bridge" network.
|
||||||
|
//
|
||||||
|
// This is a horrifying monstrosity, but the part that scares me the most
|
||||||
|
// is the fact that it works.
|
||||||
|
if hostname, err := os.Hostname(); err == nil {
|
||||||
|
exec.Command("docker", "network", "connect", "bridge", hostname).Run()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
|
|
||||||
"github.com/TecharoHQ/anubis/lib/policy/config"
|
"github.com/TecharoHQ/anubis/lib/policy/config"
|
||||||
"github.com/TecharoHQ/anubis/lib/store/bbolt"
|
"github.com/TecharoHQ/anubis/lib/store/bbolt"
|
||||||
|
"github.com/TecharoHQ/anubis/lib/store/valkey"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestStoreValid(t *testing.T) {
|
func TestStoreValid(t *testing.T) {
|
||||||
@@ -33,6 +34,29 @@ func TestStoreValid(t *testing.T) {
|
|||||||
Parameters: json.RawMessage(`{"path": "/tmp/foo", "bucket": "bar"}`),
|
Parameters: json.RawMessage(`{"path": "/tmp/foo", "bucket": "bar"}`),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "valkey backend",
|
||||||
|
input: config.Store{
|
||||||
|
Backend: "valkey",
|
||||||
|
Parameters: json.RawMessage(`{"url": "redis://valkey:6379/0"}`),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "valkey backend no URL",
|
||||||
|
input: config.Store{
|
||||||
|
Backend: "valkey",
|
||||||
|
Parameters: json.RawMessage(`{}`),
|
||||||
|
},
|
||||||
|
err: valkey.ErrNoURL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "valkey backend bad URL",
|
||||||
|
input: config.Store{
|
||||||
|
Backend: "valkey",
|
||||||
|
Parameters: json.RawMessage(`{"url": "http://anubis.techaro.lol"}`),
|
||||||
|
},
|
||||||
|
err: valkey.ErrBadURL,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "bbolt backend no path",
|
name: "bbolt backend no path",
|
||||||
input: config.Store{
|
input: config.Store{
|
||||||
|
|||||||
@@ -4,14 +4,18 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/TecharoHQ/anubis/internal"
|
||||||
"github.com/TecharoHQ/anubis/lib/store/storetest"
|
"github.com/TecharoHQ/anubis/lib/store/storetest"
|
||||||
"github.com/testcontainers/testcontainers-go"
|
"github.com/testcontainers/testcontainers-go"
|
||||||
"github.com/testcontainers/testcontainers-go/wait"
|
"github.com/testcontainers/testcontainers-go/wait"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
internal.UnbreakDocker()
|
||||||
|
}
|
||||||
|
|
||||||
func TestImpl(t *testing.T) {
|
func TestImpl(t *testing.T) {
|
||||||
if os.Getenv("DONT_USE_NETWORK") != "" {
|
if os.Getenv("DONT_USE_NETWORK") != "" {
|
||||||
t.Skip("test requires network egress")
|
t.Skip("test requires network egress")
|
||||||
@@ -38,20 +42,6 @@ func TestImpl(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX(Xe): This is bad code. Do not do this.
|
|
||||||
//
|
|
||||||
// I have to do this because I'm running from inside the context of a dev
|
|
||||||
// container. This dev container runs in a different docker network than
|
|
||||||
// the valkey test container runs in. In order to let my dev container
|
|
||||||
// connect to the test container, they need to share a network in common.
|
|
||||||
// The easiest network to use for this is the default "bridge" network.
|
|
||||||
//
|
|
||||||
// This is a horrifying monstrosity, but the part that scares me the most
|
|
||||||
// is the fact that it works.
|
|
||||||
if hostname, err := os.Hostname(); err == nil {
|
|
||||||
exec.Command("docker", "network", "connect", "bridge", hostname).Run()
|
|
||||||
}
|
|
||||||
|
|
||||||
data, err := json.Marshal(Config{
|
data, err := json.Marshal(Config{
|
||||||
URL: fmt.Sprintf("redis://%s:6379/0", containerIP),
|
URL: fmt.Sprintf("redis://%s:6379/0", containerIP),
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user