-
Notifications
You must be signed in to change notification settings - Fork 928
/
create_isolation_segment_command_test.go
111 lines (93 loc) · 3.75 KB
/
create_isolation_segment_command_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package isolated
import (
"code.cloudfoundry.org/cli/api/cloudcontroller/ccversion"
"code.cloudfoundry.org/cli/integration/helpers"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gbytes"
. "github.com/onsi/gomega/gexec"
. "github.com/onsi/gomega/ghttp"
)
var _ = Describe("create-isolation-segment command", func() {
var isolationSegmentName string
BeforeEach(func() {
helpers.SkipIfVersionLessThan(ccversion.MinVersionIsolationSegmentV3)
isolationSegmentName = helpers.NewIsolationSegmentName()
})
Describe("help", func() {
Context("when --help flag is set", func() {
It("Displays command usage to output", func() {
session := helpers.CF("create-isolation-segment", "--help")
Eventually(session).Should(Say("NAME:"))
Eventually(session).Should(Say("create-isolation-segment - Create an isolation segment"))
Eventually(session).Should(Say("USAGE:"))
Eventually(session).Should(Say("cf create-isolation-segment SEGMENT_NAME"))
Eventually(session).Should(Say("NOTES:"))
Eventually(session).Should(Say("The isolation segment name must match the placement tag applied to the Diego cell."))
Eventually(session).Should(Say("SEE ALSO:"))
Eventually(session).Should(Say("enable-org-isolation, isolation-segments"))
Eventually(session).Should(Exit(0))
})
})
})
Context("when the environment is not setup correctly", func() {
It("fails with the appropriate errors", func() {
helpers.CheckEnvironmentTargetedCorrectly(false, false, ReadOnlyOrg, "create-isolation-segment", "isolation-seg-name")
})
Context("when the v3 api does not exist", func() {
var server *Server
BeforeEach(func() {
server = helpers.StartAndTargetServerWithoutV3API()
})
AfterEach(func() {
server.Close()
})
It("fails with error message that the minimum version is not met", func() {
session := helpers.CF("create-isolation-segment", isolationSegmentName)
Eventually(session).Should(Say("FAILED"))
Eventually(session.Err).Should(Say("This command requires CF API version 3\\.11\\.0 or higher\\."))
Eventually(session).Should(Exit(1))
})
})
Context("when the v3 api version is lower than the minimum version", func() {
var server *Server
BeforeEach(func() {
server = helpers.StartAndTargetServerWithAPIVersions(helpers.DefaultV2Version, "3.0.0")
})
AfterEach(func() {
server.Close()
})
It("fails with error message that the minimum version is not met", func() {
session := helpers.CF("create-isolation-segment", isolationSegmentName)
Eventually(session).Should(Say("FAILED"))
Eventually(session.Err).Should(Say("This command requires CF API version 3\\.11\\.0 or higher\\."))
Eventually(session).Should(Exit(1))
})
})
})
Context("when the environment is set up correctly", func() {
BeforeEach(func() {
helpers.LoginCF()
})
Context("when the isolation segment does not exist", func() {
It("creates the isolation segment", func() {
session := helpers.CF("create-isolation-segment", isolationSegmentName)
userName, _ := helpers.GetCredentials()
Eventually(session).Should(Say("Creating isolation segment %s as %s...", isolationSegmentName, userName))
Eventually(session).Should(Say("OK"))
Eventually(session).Should(Exit(0))
})
})
Context("when the isolation segment already exists", func() {
BeforeEach(func() {
Eventually(helpers.CF("create-isolation-segment", isolationSegmentName)).Should(Exit(0))
})
It("returns an ok", func() {
session := helpers.CF("create-isolation-segment", isolationSegmentName)
Eventually(session.Err).Should(Say("Isolation segment %s already exists", isolationSegmentName))
Eventually(session).Should(Say("OK"))
Eventually(session).Should(Exit(0))
})
})
})
})