Skip to content

Commit 26f5111

Browse files
committed
fix(rdb): add test
1 parent aa01bc4 commit 26f5111

File tree

6 files changed

+861
-576
lines changed

6 files changed

+861
-576
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 & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"fmt"
55

66
"github.com/scaleway/scaleway-cli/v2/internal/core"
7+
"github.com/scaleway/scaleway-sdk-go/api/vpc/v1"
8+
"github.com/scaleway/scaleway-sdk-go/scw"
79
)
810

911
const (
@@ -20,6 +22,40 @@ func createInstance(engine string) core.BeforeFunc {
2022
)
2123
}
2224

25+
func createInstanceWithPrivateNetwork(engine string) core.BeforeFunc {
26+
return core.ExecStoreBeforeCmd(
27+
"Instance",
28+
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),
29+
)
30+
}
31+
32+
func createPN() core.BeforeFunc {
33+
return func(ctx *core.BeforeFuncCtx) error {
34+
var err error
35+
api := vpc.NewAPI(ctx.Client)
36+
pn, _ := api.CreatePrivateNetwork(&vpc.CreatePrivateNetworkRequest{})
37+
ctx.Meta["PN"] = pn
38+
ctx.Meta["IPNet"], err = getIPSubnet(pn.Subnets[0])
39+
if err != nil {
40+
return err
41+
}
42+
return nil
43+
}
44+
}
45+
46+
func getIPSubnet(ipNet scw.IPNet) (*string, error) {
47+
addr := ipNet.IP.To4()
48+
if addr == nil {
49+
return nil, fmt.Errorf("could get ip 4 bytes")
50+
}
51+
addr = addr.Mask(addr.DefaultMask())
52+
addr[3] = +3
53+
54+
sz, _ := ipNet.Mask.Size()
55+
ipNetStr := fmt.Sprintf("%s/%d", addr.String(), sz)
56+
return &ipNetStr, nil
57+
}
58+
2359
func deleteInstance() core.AfterFunc {
2460
return core.ExecAfterCmd("scw rdb instance delete {{ .Instance.ID }}")
2561
}

0 commit comments

Comments
 (0)