github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/actor/v2action/domain_test.go (about) 1 package v2action_test 2 3 import ( 4 "errors" 5 6 . "code.cloudfoundry.org/cli/actor/v2action" 7 "code.cloudfoundry.org/cli/actor/v2action/v2actionfakes" 8 "code.cloudfoundry.org/cli/api/cloudcontroller" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/ginkgo/extensions/table" 12 . "github.com/onsi/gomega" 13 ) 14 15 var _ = Describe("Domain Actions", func() { 16 var ( 17 actor Actor 18 fakeCloudControllerClient *v2actionfakes.FakeCloudControllerClient 19 ) 20 21 BeforeEach(func() { 22 fakeCloudControllerClient = new(v2actionfakes.FakeCloudControllerClient) 23 actor = NewActor(fakeCloudControllerClient, nil) 24 }) 25 26 Describe("GetDomain", func() { 27 Context("when the domain exists and is a shared domain", func() { 28 var expectedDomain ccv2.Domain 29 30 BeforeEach(func() { 31 expectedDomain = ccv2.Domain{ 32 GUID: "shared-domain-guid", 33 Name: "shared-domain", 34 } 35 fakeCloudControllerClient.GetSharedDomainReturns(expectedDomain, nil, nil) 36 }) 37 38 It("returns the shared domain", func() { 39 domain, _, err := actor.GetDomain("shared-domain-guid") 40 Expect(err).NotTo(HaveOccurred()) 41 Expect(domain).To(Equal(Domain(expectedDomain))) 42 43 Expect(fakeCloudControllerClient.GetSharedDomainCallCount()).To(Equal(1)) 44 Expect(fakeCloudControllerClient.GetSharedDomainArgsForCall(0)).To(Equal("shared-domain-guid")) 45 }) 46 }) 47 48 Context("when the domain exists and is a private domain", func() { 49 var expectedDomain ccv2.Domain 50 51 BeforeEach(func() { 52 expectedDomain = ccv2.Domain{ 53 GUID: "private-domain-guid", 54 Name: "private-domain", 55 } 56 fakeCloudControllerClient.GetSharedDomainReturns(ccv2.Domain{}, nil, cloudcontroller.ResourceNotFoundError{}) 57 fakeCloudControllerClient.GetPrivateDomainReturns(expectedDomain, nil, nil) 58 }) 59 60 It("returns the private domain", func() { 61 domain, _, err := actor.GetDomain("private-domain-guid") 62 Expect(err).NotTo(HaveOccurred()) 63 Expect(domain).To(Equal(Domain(expectedDomain))) 64 65 Expect(fakeCloudControllerClient.GetSharedDomainCallCount()).To(Equal(1)) 66 Expect(fakeCloudControllerClient.GetSharedDomainArgsForCall(0)).To(Equal("private-domain-guid")) 67 Expect(fakeCloudControllerClient.GetPrivateDomainCallCount()).To(Equal(1)) 68 Expect(fakeCloudControllerClient.GetPrivateDomainArgsForCall(0)).To(Equal("private-domain-guid")) 69 }) 70 }) 71 72 Context("when the domain does not exist", func() { 73 var expectedErr DomainNotFoundError 74 75 BeforeEach(func() { 76 fakeCloudControllerClient.GetSharedDomainReturns(ccv2.Domain{}, nil, cloudcontroller.ResourceNotFoundError{}) 77 fakeCloudControllerClient.GetPrivateDomainReturns(ccv2.Domain{}, nil, cloudcontroller.ResourceNotFoundError{}) 78 }) 79 80 It("returns a DomainNotFoundError", func() { 81 domain, _, err := actor.GetDomain("private-domain-guid") 82 Expect(err).To(MatchError(expectedErr)) 83 Expect(domain).To(Equal(Domain(ccv2.Domain{}))) 84 }) 85 }) 86 87 DescribeTable("when there are warnings and errors", func( 88 stubGetSharedDomain func(), 89 stubGetPrivateDomain func(), 90 expectedDomain Domain, 91 expectedWarnings Warnings, 92 expectingError bool, 93 expectedErr error, 94 ) { 95 stubGetSharedDomain() 96 stubGetPrivateDomain() 97 domain, warnings, err := actor.GetDomain("some-domain-guid") 98 Expect(domain).To(Equal(expectedDomain)) 99 Expect(warnings).To(ConsistOf(expectedWarnings)) 100 if expectingError { 101 Expect(err).To(MatchError(expectedErr)) 102 } else { 103 Expect(err).To(Not(HaveOccurred())) 104 } 105 }, 106 107 Entry( 108 "shared domain warning and error", 109 func() { 110 fakeCloudControllerClient.GetSharedDomainReturns(ccv2.Domain{}, []string{"shared-domain-warning"}, errors.New("shared domain error")) 111 }, 112 func() { fakeCloudControllerClient.GetPrivateDomainReturns(ccv2.Domain{}, nil, nil) }, 113 Domain{}, 114 Warnings{"shared-domain-warning"}, 115 true, 116 errors.New("shared domain error"), 117 ), 118 119 Entry( 120 "shared domain warning and resource not found; private domain warning & error", 121 func() { 122 fakeCloudControllerClient.GetSharedDomainReturns(ccv2.Domain{}, []string{"shared-domain-warning"}, cloudcontroller.ResourceNotFoundError{}) 123 }, 124 func() { 125 fakeCloudControllerClient.GetPrivateDomainReturns(ccv2.Domain{}, []string{"private-domain-warning"}, errors.New("private domain error")) 126 }, 127 Domain{}, 128 Warnings{"shared-domain-warning", "private-domain-warning"}, 129 true, 130 errors.New("private domain error"), 131 ), 132 ) 133 }) 134 135 Describe("GetSharedDomain", func() { 136 Context("when the shared domain exists", func() { 137 var expectedDomain ccv2.Domain 138 139 BeforeEach(func() { 140 expectedDomain = ccv2.Domain{ 141 GUID: "shared-domain-guid", 142 Name: "shared-domain", 143 } 144 fakeCloudControllerClient.GetSharedDomainReturns(expectedDomain, ccv2.Warnings{"shared domain warning"}, nil) 145 }) 146 147 It("returns the shared domain and all warnings", func() { 148 domain, warnings, err := actor.GetSharedDomain("shared-domain-guid") 149 Expect(err).NotTo(HaveOccurred()) 150 Expect(domain).To(Equal(Domain(expectedDomain))) 151 Expect(warnings).To(ConsistOf("shared domain warning")) 152 }) 153 }) 154 155 Context("when the API returns a not found error", func() { 156 var expectedErr DomainNotFoundError 157 158 BeforeEach(func() { 159 fakeCloudControllerClient.GetSharedDomainReturns(ccv2.Domain{}, ccv2.Warnings{"shared domain warning"}, cloudcontroller.ResourceNotFoundError{}) 160 }) 161 162 It("returns a DomainNotFoundError and all warnings", func() { 163 domain, warnings, err := actor.GetSharedDomain("shared-domain-guid") 164 Expect(err).To(MatchError(expectedErr)) 165 Expect(domain).To(Equal(Domain{})) 166 Expect(warnings).To(ConsistOf("shared domain warning")) 167 }) 168 }) 169 170 Context("when the API returns any other error", func() { 171 var expectedErr error 172 173 BeforeEach(func() { 174 expectedErr = errors.New("shared domain error") 175 fakeCloudControllerClient.GetSharedDomainReturns(ccv2.Domain{}, ccv2.Warnings{"shared domain warning"}, expectedErr) 176 }) 177 178 It("returns the same error and all warnings", func() { 179 domain, warnings, err := actor.GetSharedDomain("shared-domain-guid") 180 Expect(err).To(MatchError(expectedErr)) 181 Expect(domain).To(Equal(Domain{})) 182 Expect(warnings).To(ConsistOf("shared domain warning")) 183 }) 184 }) 185 }) 186 187 Describe("GetPrivateDomain", func() { 188 Context("when the private domain exists", func() { 189 var expectedDomain ccv2.Domain 190 191 BeforeEach(func() { 192 expectedDomain = ccv2.Domain{ 193 GUID: "private-domain-guid", 194 Name: "private-domain", 195 } 196 fakeCloudControllerClient.GetPrivateDomainReturns(expectedDomain, ccv2.Warnings{"private domain warning"}, nil) 197 }) 198 199 It("returns the private domain and all warnings", func() { 200 domain, warnings, err := actor.GetPrivateDomain("private-domain-guid") 201 Expect(err).NotTo(HaveOccurred()) 202 Expect(domain).To(Equal(Domain(expectedDomain))) 203 Expect(warnings).To(ConsistOf("private domain warning")) 204 }) 205 }) 206 207 Context("when the API returns a not found error", func() { 208 var expectedErr DomainNotFoundError 209 210 BeforeEach(func() { 211 fakeCloudControllerClient.GetPrivateDomainReturns(ccv2.Domain{}, ccv2.Warnings{"private domain warning"}, cloudcontroller.ResourceNotFoundError{}) 212 }) 213 214 It("returns a DomainNotFoundError and all warnings", func() { 215 domain, warnings, err := actor.GetPrivateDomain("private-domain-guid") 216 Expect(err).To(MatchError(expectedErr)) 217 Expect(domain).To(Equal(Domain{})) 218 Expect(warnings).To(ConsistOf("private domain warning")) 219 }) 220 }) 221 222 Context("when the API returns any other error", func() { 223 var expectedErr error 224 225 BeforeEach(func() { 226 expectedErr = errors.New("private domain error") 227 fakeCloudControllerClient.GetPrivateDomainReturns(ccv2.Domain{}, ccv2.Warnings{"private domain warning"}, expectedErr) 228 }) 229 230 It("returns the same error and all warnings", func() { 231 domain, warnings, err := actor.GetPrivateDomain("private-domain-guid") 232 Expect(err).To(MatchError(expectedErr)) 233 Expect(domain).To(Equal(Domain{})) 234 Expect(warnings).To(ConsistOf("private domain warning")) 235 }) 236 }) 237 }) 238 })