Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions internal/core/bootstrap_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@ func TestInterruptError(t *testing.T) {
),
UseE2EClient: true,
Cmd: "scw test interrupt error",
Check: TestCheckCombine(
TestCheckExitCode(130),
),
Check: TestCheckExitCode(130),
}))
}
3 changes: 3 additions & 0 deletions internal/core/build_info_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ func Test_CheckVersion(t *testing.T) {
Cmd: "scw plop",
Check: TestCheckCombine(
TestCheckStderrGolden(),
TestCheckExitCode(0),
),
}))

Expand All @@ -47,6 +48,7 @@ func Test_CheckVersion(t *testing.T) {
Cmd: "scw plop -D",
Check: TestCheckCombine(
TestCheckStderrGolden(),
TestCheckExitCode(0),
),
}))

Expand All @@ -64,6 +66,7 @@ func Test_CheckVersion(t *testing.T) {
Cmd: "scw plop -D",
Check: TestCheckCombine(
TestCheckStderrGolden(),
TestCheckExitCode(0),
),
}))
}
1 change: 1 addition & 0 deletions internal/core/testing.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ func Test(config *TestConfig) func(t *testing.T) {
// TestCheckCombine Combine multiple check function into one
func TestCheckCombine(checks ...TestCheck) TestCheck {
return func(t *testing.T, ctx *CheckFuncCtx) {
assert.Equal(t, true, len(checks) > 1)
for _, check := range checks {
check(t, ctx)
}
Expand Down
128 changes: 84 additions & 44 deletions internal/namespaces/instance/v1/custom_server_create_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func Test_CreateServer(t *testing.T) {
Cmd: "scw instance server create -h",
Check: core.TestCheckCombine(
core.TestCheckGolden(),
core.TestCheckExitCode(0),
),
}))

Expand All @@ -39,43 +40,56 @@ func Test_CreateServer(t *testing.T) {
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, "Ubuntu Bionic Beaver", ctx.Result.(*instance.Server).Image.Name)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

t.Run("GP1-XS", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create type=GP1-XS image=ubuntu_bionic stopped",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, "GP1-XS", ctx.Result.(*instance.Server).CommercialType)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, "GP1-XS", ctx.Result.(*instance.Server).CommercialType)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

t.Run("With name", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create image=ubuntu_bionic name=yo stopped",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, "yo", ctx.Result.(*instance.Server).Name)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, "yo", ctx.Result.(*instance.Server).Name)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

t.Run("With start", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create image=ubuntu_bionic -w",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, instance.ServerStateRunning, ctx.Result.(*instance.Server).State)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, instance.ServerStateRunning, ctx.Result.(*instance.Server).State)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

t.Run("With bootscript", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create image=ubuntu_bionic bootscript-id=eb760e3c-30d8-49a3-b3ad-ad10c3aa440b stopped",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, "eb760e3c-30d8-49a3-b3ad-ad10c3aa440b", ctx.Result.(*instance.Server).Bootscript.ID)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, "eb760e3c-30d8-49a3-b3ad-ad10c3aa440b", ctx.Result.(*instance.Server).Bootscript.ID)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

Expand All @@ -86,6 +100,7 @@ func Test_CreateServer(t *testing.T) {
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, "Ubuntu Bionic Beaver", ctx.Result.(*instance.Server).Image.Name)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))
Expand All @@ -98,6 +113,7 @@ func Test_CreateServer(t *testing.T) {
assert.Equal(t, "prod", ctx.Result.(*instance.Server).Tags[0])
assert.Equal(t, "blue", ctx.Result.(*instance.Server).Tags[1])
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))
Expand All @@ -111,30 +127,39 @@ func Test_CreateServer(t *testing.T) {
t.Run("valid single local volume", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create image=ubuntu_bionic root-volume=local:20GB stopped",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, 20*scw.GB, ctx.Result.(*instance.Server).Volumes["0"].Size)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, 20*scw.GB, ctx.Result.(*instance.Server).Volumes["0"].Size)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

t.Run("valid double local volumes", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create image=ubuntu_bionic root-volume=local:10GB additional-volumes.0=l:10G stopped",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["0"].Size)
assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["1"].Size)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["0"].Size)
assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["1"].Size)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

t.Run("valid additional block volumes", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create image=ubuntu_bionic additional-volumes.0=b:1G additional-volumes.1=b:5G additional-volumes.2=b:10G stopped",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, 1*scw.GB, ctx.Result.(*instance.Server).Volumes["1"].Size)
assert.Equal(t, 5*scw.GB, ctx.Result.(*instance.Server).Volumes["2"].Size)
assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["3"].Size)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, 1*scw.GB, ctx.Result.(*instance.Server).Volumes["1"].Size)
assert.Equal(t, 5*scw.GB, ctx.Result.(*instance.Server).Volumes["2"].Size)
assert.Equal(t, 10*scw.GB, ctx.Result.(*instance.Server).Volumes["3"].Size)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

Expand All @@ -147,21 +172,27 @@ func Test_CreateServer(t *testing.T) {
t.Run("explicit new IP", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create image=ubuntu_bionic ip=new stopped",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address)
assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address)
assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

t.Run("run with dynamic IP", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create image=ubuntu_bionic ip=dynamic -w", // dynamic IP is created at runtime
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NoError(t, ctx.Err)
assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address)
assert.Equal(t, true, ctx.Result.(*instance.Server).DynamicIPRequired)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NoError(t, ctx.Err)
assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address)
assert.Equal(t, true, ctx.Result.(*instance.Server).DynamicIPRequired)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

Expand All @@ -172,10 +203,13 @@ func Test_CreateServer(t *testing.T) {
return nil
},
Cmd: "scw instance server create image=ubuntu_bionic ip={{ .MyIP.IP.Address }} stopped",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address)
assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address)
assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

Expand All @@ -186,19 +220,25 @@ func Test_CreateServer(t *testing.T) {
return nil
},
Cmd: "scw instance server create image=ubuntu_bionic ip={{ .MyIP.IP.ID }} stopped",
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address)
assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NotEmpty(t, ctx.Result.(*instance.Server).PublicIP.Address)
assert.Equal(t, false, ctx.Result.(*instance.Server).PublicIP.Dynamic)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))

t.Run("with ipv6", core.Test(&core.TestConfig{
Commands: GetCommands(),
Cmd: "scw instance server create image=ubuntu_bionic ipv6 -w", // IPv6 is created at runtime
Check: func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NotEmpty(t, ctx.Result.(*instance.Server).IPv6.Address)
},
Check: core.TestCheckCombine(
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.NotEmpty(t, ctx.Result.(*instance.Server).IPv6.Address)
},
core.TestCheckExitCode(0),
),
AfterFunc: deleteServerAfterFunc,
}))
})
Expand Down
3 changes: 3 additions & 0 deletions internal/namespaces/instance/v1/custom_server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ func Test_ServerUpdateCustom(t *testing.T) {
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, (*instance.ServerIP)(nil), ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP)
},
core.TestCheckExitCode(0),
),
AfterFunc: func(ctx *core.AfterFuncCtx) error {
ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true")
Expand All @@ -39,6 +40,7 @@ func Test_ServerUpdateCustom(t *testing.T) {
func(t *testing.T, ctx *core.CheckFuncCtx) {
assert.Equal(t, ctx.Meta["CreateIPResponse"].(*instance.CreateIPResponse).IP.Address, ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address)
},
core.TestCheckExitCode(0),
),
AfterFunc: func(ctx *core.AfterFuncCtx) error {
ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true")
Expand All @@ -65,6 +67,7 @@ func Test_ServerUpdateCustom(t *testing.T) {
ctx.Meta["CreateIPResponse2"].(*instance.CreateIPResponse).IP.Address,
ctx.Result.(*instance.UpdateServerResponse).Server.PublicIP.Address)
},
core.TestCheckExitCode(0),
),
AfterFunc: func(ctx *core.AfterFuncCtx) error {
ctx.ExecuteCmd("scw instance server delete server-id={{ .Server.ID }} delete-ip=true delete-volumes=true")
Expand Down
Loading