Skip to content
This repository was archived by the owner on Jun 2, 2021. It is now read-only.

Commit 471901e

Browse files
Aakash Shahsethboyles
andcommitted
Fix request specs
* The production change was a little confusing to us. We believe it is a combination of initialization + how backgrounds jobs are marshalled into the database. Loading the `kpack_client` at runtime fixes this. [#171900207] Co-authored-by: Aakash Shah <ashah@pivotal.io> Co-authored-by: Seth Boyles <sboyles@pivotal.io>
1 parent d882d3b commit 471901e

11 files changed

Lines changed: 56 additions & 29 deletions

File tree

app/actions/app_delete.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ def underlying_errors
2929

3030
def initialize(user_audit_info)
3131
@user_audit_info = user_audit_info
32-
@kpack_client = CloudController::DependencyLocator.instance.kpack_client
3332
end
3433

3534
def delete(apps, record_event: true)
@@ -55,7 +54,7 @@ def delete(apps, record_event: true)
5554

5655
if kubernetes_api_configured?
5756
logger.info('Deleting associated kpack image')
58-
@kpack_client.delete_image(
57+
kpack_client.delete_image(
5958
app.guid,
6059
VCAP::CloudController::Config.config.get(:kubernetes, :kpack, :builder_namespace)
6160
)
@@ -69,6 +68,10 @@ def delete_without_event(apps)
6968

7069
private
7170

71+
def kpack_client
72+
CloudController::DependencyLocator.instance.kpack_client
73+
end
74+
7275
def kubernetes_api_configured?
7376
!!VCAP::CloudController::Config.config.get(:kubernetes, :host_url)
7477
end

spec/api/documentation/apps_api_spec.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,17 @@ def self.fields_info(required)
118118
end
119119

120120
describe 'Standard endpoints' do
121-
standard_model_delete_without_async :app
122-
standard_model_list 'ProcessModel', VCAP::CloudController::AppsController, path: :app, response_fields: true
123-
standard_model_get 'ProcessModel', path: :app, nested_associations: [:stack, :space], response_fields: true
121+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
124122

125123
before do
124+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
126125
TestConfig.override(diego: { staging: 'optional', running: 'optional' })
127126
end
128127

128+
standard_model_delete_without_async :app
129+
standard_model_list 'ProcessModel', VCAP::CloudController::AppsController, path: :app, response_fields: true
130+
standard_model_get 'ProcessModel', path: :app, nested_associations: [:stack, :space], response_fields: true
131+
129132
def after_standard_model_delete(guid)
130133
event = VCAP::CloudController::Event.find(type: 'audit.app.delete-request', actee: guid, actee_type: 'app')
131134
audited_event event

spec/request/apps_spec.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,6 +1461,11 @@
14611461
let!(:process) { VCAP::CloudController::ProcessModel.make(app: app_model) }
14621462
let!(:deployment) { VCAP::CloudController::DeploymentModel.make(app: app_model) }
14631463
let(:user_email) { nil }
1464+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
1465+
1466+
before do
1467+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
1468+
end
14641469

14651470
it 'deletes an App' do
14661471
delete "/v3/apps/#{app_model.guid}", nil, user_header

spec/request/spaces_spec.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -888,8 +888,11 @@
888888
s.add_shared_space(space)
889889
s
890890
end
891+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
891892

892893
before do
894+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
895+
893896
VCAP::CloudController::AppModel.make(space: space)
894897
VCAP::CloudController::Route.make(space: space)
895898
org.add_user(associated_user)

spec/request/v2/apps_spec.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,11 @@
11261126

11271127
describe 'DELETE /v2/apps/:guid' do
11281128
let!(:process) { VCAP::CloudController::ProcessModelFactory.make(space: space) }
1129+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
1130+
1131+
before do
1132+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
1133+
end
11291134

11301135
it 'deletes the specified app' do
11311136
delete "/v2/apps/#{process.guid}", nil, headers_for(user)

spec/unit/actions/app_delete_spec.rb

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ module VCAP::CloudController
1010

1111
let!(:app) { AppModel.make }
1212
let!(:app_dataset) { [app] }
13+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
14+
15+
before do
16+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
17+
end
1318

1419
describe '#delete' do
1520
it 'deletes the app record' do
@@ -41,6 +46,11 @@ module VCAP::CloudController
4146
app_delete.delete(app_dataset)
4247
end
4348

49+
it 'deletes the associated kpack Image' do
50+
expect(kpack_client).to receive(:delete_image).with(app.guid, 'cf-workloads')
51+
app_delete.delete(app_dataset)
52+
end
53+
4454
describe 'recursive deletion' do
4555
it 'deletes associated packages' do
4656
package = PackageModel.make(app: app)
@@ -319,29 +329,6 @@ module VCAP::CloudController
319329
end
320330
end
321331
end
322-
323-
context 'when targeting a kubernetes API' do
324-
let(:kpack_client) { instance_double(Kubernetes::KpackClient) }
325-
let!(:config) do
326-
TestConfig.override(
327-
kubernetes: {
328-
host_url: 'some-kubernetes-host-url',
329-
kpack: {
330-
builder_namespace: 'builder-namespace',
331-
},
332-
},
333-
)
334-
end
335-
336-
before do
337-
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
338-
end
339-
340-
it 'deletes the associated kpack Image' do
341-
expect(kpack_client).to receive(:delete_image).with(app.guid, 'builder-namespace')
342-
app_delete.delete(app_dataset)
343-
end
344-
end
345332
end
346333

347334
describe '#delete_without_event' do

spec/unit/actions/organization_delete_spec.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,13 @@ module VCAP::CloudController
77
let(:services_event_repository) { Repositories::ServiceEventRepository.new(user_audit_info) }
88
let(:user_audit_info) { UserAuditInfo.new(user_guid: user.guid, user_email: user_email) }
99
let(:space_delete) { SpaceDelete.new(user_audit_info, services_event_repository) }
10+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
1011
subject(:org_delete) { OrganizationDelete.new(space_delete, user_audit_info) }
1112

13+
before do
14+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
15+
end
16+
1217
describe '#delete' do
1318
let!(:org_1) { Organization.make }
1419
let!(:org_2) { Organization.make }
@@ -51,8 +56,10 @@ module VCAP::CloudController
5156
let!(:org_dataset) { Organization.where(guid: [org_1.guid, org_2.guid]) }
5257
let(:user) { User.make }
5358
let(:user_email) { 'user@example.com' }
59+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
5460

5561
before do
62+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
5663
stub_deprovision(service_instance, accepts_incomplete: true)
5764
stub_deprovision(service_instance_2, accepts_incomplete: true)
5865
end

spec/unit/actions/space_delete_spec.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ module VCAP::CloudController
1515
let(:space_dataset) { Space.dataset }
1616
let(:user) { User.make }
1717
let(:user_email) { 'user@example.com' }
18+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
19+
20+
before do
21+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
22+
end
1823

1924
it 'deletes both space records' do
2025
expect {

spec/unit/actions/v2/organization_delete_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ module V2
99
let(:user_audit_info) { UserAuditInfo.new(user_guid: user.guid, user_email: user_email) }
1010
let(:space_delete) { SpaceDelete.new(user_audit_info, services_event_repository) }
1111
subject(:org_delete) { V2::OrganizationDelete.new(space_delete) }
12-
1312
describe '#delete' do
1413
let!(:org_1) { Organization.make }
1514
let!(:org_2) { Organization.make }
@@ -38,8 +37,10 @@ module V2
3837
let!(:org_dataset) { Organization.where(guid: [org_1.guid, org_2.guid]) }
3938
let(:user) { User.make }
4039
let(:user_email) { 'user@example.com' }
40+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
4141

4242
before do
43+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
4344
stub_deprovision(service_instance, accepts_incomplete: true)
4445
stub_deprovision(service_instance_2, accepts_incomplete: true)
4546
end

spec/unit/controllers/runtime/organizations_controller_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,6 +1383,12 @@ def decoded_guids
13831383
end
13841384

13851385
context 'with recursive=true' do
1386+
let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) }
1387+
1388+
before do
1389+
allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client)
1390+
end
1391+
13861392
it 'deletes the org and all of its spaces' do
13871393
space_1 = Space.make(organization: org)
13881394
space_2 = Space.make(organization: org)

0 commit comments

Comments
 (0)