Skip to content

Commit 1928b79

Browse files
committed
fix(rdb): add test
1 parent aa01bc4 commit 1928b79

File tree

6 files changed

+861
-577
lines changed

6 files changed

+861
-577
lines changed

internal/namespaces/rdb/v1/custom_instance_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,4 +180,19 @@ func Test_Connect(t *testing.T) {
180180
OverrideExec: core.OverrideExecSimple("psql --host {{ .Instance.Endpoint.IP }} --port {{ .Instance.Endpoint.Port }} --username {{ .username }} --dbname rdb", 0),
181181
AfterFunc: deleteInstance(),
182182
}))
183+
t.Run("psql", core.Test(&core.TestConfig{
184+
Commands: GetCommands(),
185+
BeforeFunc: core.BeforeFuncCombine(
186+
core.BeforeFuncStoreInMeta("username", user),
187+
createPN(),
188+
createInstanceWithPrivateNetwork("PostgreSQL-14"),
189+
),
190+
Cmd: "scw rdb instance connect {{ .Instance.ID }} username={{ .username }}",
191+
Check: core.TestCheckCombine(
192+
core.TestCheckGolden(),
193+
core.TestCheckExitCode(0),
194+
),
195+
OverrideExec: core.OverrideExecSimple("psql --host {{ .Instance.Endpoint.IP }} --port {{ .Instance.Endpoint.Port }} --username {{ .username }} --dbname rdb", 0),
196+
AfterFunc: deleteInstance(),
197+
}))
183198
}

internal/namespaces/rdb/v1/helper_test.go

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ package rdb
22

33
import (
44
"fmt"
5-
65
"github.com/scaleway/scaleway-cli/v2/internal/core"
6+
"github.com/scaleway/scaleway-sdk-go/api/vpc/v1"
7+
"github.com/scaleway/scaleway-sdk-go/scw"
78
)
89

910
const (
@@ -20,6 +21,40 @@ func createInstance(engine string) core.BeforeFunc {
2021
)
2122
}
2223

24+
func createInstanceWithPrivateNetwork(engine string) core.BeforeFunc {
25+
return core.ExecStoreBeforeCmd(
26+
"Instance",
27+
fmt.Sprintf("scw rdb instance create node-type=DB-DEV-S is-ha-cluster=false name=%s engine=%s user-name=%s password=%s init-endpoints.0.private-network.private-network-id={{ .PN.ID }} init-endpoints.0.private-network.service-ip={{ .IPNet }} --wait", name, engine, user, password),
28+
)
29+
}
30+
31+
func createPN() core.BeforeFunc {
32+
return func(ctx *core.BeforeFuncCtx) error {
33+
var err error
34+
api := vpc.NewAPI(ctx.Client)
35+
pn, _ := api.CreatePrivateNetwork(&vpc.CreatePrivateNetworkRequest{})
36+
ctx.Meta["PN"] = pn
37+
ctx.Meta["IPNet"], err = getIPSubnet(pn.Subnets[0])
38+
if err != nil {
39+
return err
40+
}
41+
return nil
42+
}
43+
}
44+
45+
func getIPSubnet(ipNet scw.IPNet) (*string, error) {
46+
addr := ipNet.IP.To4()
47+
if addr == nil {
48+
return nil, fmt.Errorf("could get ip 4 bytes")
49+
}
50+
addr = addr.Mask(addr.DefaultMask())
51+
addr[3] = +3
52+
53+
sz, _ := ipNet.Mask.Size()
54+
ipNetStr := fmt.Sprintf("%s/%d", addr.String(), sz)
55+
return &ipNetStr, nil
56+
}
57+
2358
func deleteInstance() core.AfterFunc {
2459
return core.ExecAfterCmd("scw rdb instance delete {{ .Instance.ID }}")
2560
}

0 commit comments

Comments
 (0)