|
12 | 12 | let(:user_email) { Sham.email } |
13 | 13 | let(:user_name) { 'some-username' } |
14 | 14 |
|
15 | | - before do |
16 | | - space.organization.add_user(user) |
17 | | - space.add_developer(user) |
18 | | - end |
19 | | - |
20 | 15 | describe 'POST /v3/apps' do |
21 | 16 | let(:buildpack) { VCAP::CloudController::Buildpack.make(stack: stack.name) } |
22 | 17 | let(:create_request) do |
|
50 | 45 | } |
51 | 46 | end |
52 | 47 |
|
| 48 | + before do |
| 49 | + space.organization.add_user(user) |
| 50 | + space.add_developer(user) |
| 51 | + end |
| 52 | + |
53 | 53 | it 'creates an app' do |
54 | 54 | post '/v3/apps', create_request.to_json, user_header |
55 | 55 | expect(last_response.status).to eq(201) |
|
353 | 353 | end |
354 | 354 |
|
355 | 355 | describe 'GET /v3/apps' do |
| 356 | + before do |
| 357 | + space.organization.add_user(user) |
| 358 | + space.add_developer(user) |
| 359 | + end |
| 360 | + |
356 | 361 | describe 'query list parameters' do |
357 | 362 | it_behaves_like 'request_spec_shared_examples.rb list query endpoint' do |
358 | 363 | let(:request) { 'v3/apps' } |
|
1062 | 1067 | } |
1063 | 1068 |
|
1064 | 1069 | before do |
| 1070 | + space.organization.add_user(user) |
| 1071 | + space.add_developer(user) |
1065 | 1072 | app_model.lifecycle_data.buildpacks = [buildpack.name] |
1066 | 1073 | app_model.lifecycle_data.stack = stack.name |
1067 | 1074 | app_model.lifecycle_data.save |
|
1236 | 1243 | end |
1237 | 1244 |
|
1238 | 1245 | describe 'GET /v3/apps/:guid/env' do |
| 1246 | + before do |
| 1247 | + space.organization.add_user(user) |
| 1248 | + space.add_developer(user) |
| 1249 | + end |
| 1250 | + |
1239 | 1251 | it 'returns the environment of the app, including environment variables provided by the system' do |
1240 | 1252 | app_model = VCAP::CloudController::AppModel.make( |
1241 | 1253 | name: 'my_app', |
|
1363 | 1375 | let(:order_by) { '-created_at' } |
1364 | 1376 |
|
1365 | 1377 | before do |
| 1378 | + space.organization.add_user(user) |
| 1379 | + space.add_developer(user) |
1366 | 1380 | VCAP::CloudController::BuildpackLifecycle.new(package, staging_message).create_lifecycle_data_model(build) |
1367 | 1381 | VCAP::CloudController::BuildpackLifecycle.new(package, staging_message).create_lifecycle_data_model(second_build) |
1368 | 1382 | build.update(state: droplet.state, error_description: droplet.error_description) |
|
1464 | 1478 | let(:kpack_client) { instance_double(Kubernetes::KpackClient, delete_image: nil) } |
1465 | 1479 |
|
1466 | 1480 | before do |
| 1481 | + space.organization.add_user(user) |
| 1482 | + space.add_developer(user) |
1467 | 1483 | allow(CloudController::DependencyLocator.instance).to receive(:kpack_client).and_return(kpack_client) |
1468 | 1484 | end |
1469 | 1485 |
|
|
1543 | 1559 | end |
1544 | 1560 |
|
1545 | 1561 | before do |
| 1562 | + space.organization.add_user(user) |
| 1563 | + space.add_developer(user) |
| 1564 | + |
1546 | 1565 | VCAP::CloudController::AppLabelModel.make( |
1547 | 1566 | resource_guid: app_model.guid, |
1548 | 1567 | key_name: 'delete-me', |
|
1686 | 1705 | desired_state: 'STOPPED', |
1687 | 1706 | ) |
1688 | 1707 | } |
| 1708 | + |
| 1709 | + before do |
| 1710 | + space.organization.add_user(user) |
| 1711 | + space.add_developer(user) |
| 1712 | + end |
| 1713 | + |
1689 | 1714 | it 'starts the app' do |
1690 | 1715 | app_model.lifecycle_data.buildpacks = ['http://example.com/git'] |
1691 | 1716 | app_model.lifecycle_data.stack = stack.name |
|
1888 | 1913 | end |
1889 | 1914 |
|
1890 | 1915 | before do |
| 1916 | + space.organization.add_user(user) |
| 1917 | + space.add_developer(user) |
1891 | 1918 | app_model.lifecycle_data.buildpacks = ['http://example.com/git'] |
1892 | 1919 | app_model.lifecycle_data.stack = stack.name |
1893 | 1920 | app_model.lifecycle_data.save |
|
1985 | 2012 | ) |
1986 | 2013 | } |
1987 | 2014 |
|
| 2015 | + before do |
| 2016 | + space.organization.add_user(user) |
| 2017 | + space.add_developer(user) |
| 2018 | + end |
| 2019 | + |
1988 | 2020 | context 'app lifecycle is buildpack' do |
1989 | 2021 | let!(:droplet) do |
1990 | 2022 | VCAP::CloudController::DropletModel.make( |
|
2147 | 2179 | let(:app_guid) { droplet_model.app_guid } |
2148 | 2180 |
|
2149 | 2181 | before do |
| 2182 | + space.organization.add_user(user) |
| 2183 | + space.add_developer(user) |
2150 | 2184 | droplet_model.buildpack_lifecycle_data.update(buildpacks: ['http://buildpack.git.url.com'], stack: 'stack-name') |
2151 | 2185 | app_model.droplet_guid = droplet_model.guid |
2152 | 2186 | app_model.save |
|
2190 | 2224 | let(:app_guid) { droplet_model.app_guid } |
2191 | 2225 |
|
2192 | 2226 | before do |
| 2227 | + space.organization.add_user(user) |
| 2228 | + space.add_developer(user) |
2193 | 2229 | droplet_model.buildpack_lifecycle_data.update(buildpacks: ['http://buildpack.git.url.com'], stack: 'stack-name') |
2194 | 2230 | app_model.droplet_guid = droplet_model.guid |
2195 | 2231 | app_model.save |
|
2247 | 2283 | end |
2248 | 2284 |
|
2249 | 2285 | before do |
| 2286 | + space.organization.add_user(user) |
| 2287 | + space.add_developer(user) |
2250 | 2288 | app_model.lifecycle_data.buildpacks = ['http://example.com/git'] |
2251 | 2289 | app_model.lifecycle_data.stack = stack.name |
2252 | 2290 | app_model.lifecycle_data.save |
|
2418 | 2456 | end |
2419 | 2457 |
|
2420 | 2458 | describe 'PATCH /v3/apps/:guid/environment_variables' do |
| 2459 | + before do |
| 2460 | + space.organization.add_user(user) |
| 2461 | + space.add_developer(user) |
| 2462 | + end |
| 2463 | + |
2421 | 2464 | it 'patches the environment variables for the app' do |
2422 | 2465 | app_model = VCAP::CloudController::AppModel.make( |
2423 | 2466 | name: 'name1', |
|
2457 | 2500 | end |
2458 | 2501 |
|
2459 | 2502 | describe 'GET /v3/apps/:guid/environment_variables' do |
| 2503 | + before do |
| 2504 | + space.organization.add_user(user) |
| 2505 | + space.add_developer(user) |
| 2506 | + end |
| 2507 | + |
2460 | 2508 | it 'gets the environment variables for the app' do |
2461 | 2509 | app_model = VCAP::CloudController::AppModel.make(name: 'name1', space: space, desired_state: 'STOPPED', environment_variables: { meep: 'moop' }) |
2462 | 2510 |
|
|
2477 | 2525 | ) |
2478 | 2526 | end |
2479 | 2527 | end |
| 2528 | + |
| 2529 | + describe 'GET /v3/apps/:guid/permissions' do |
| 2530 | + let(:org) { VCAP::CloudController::Organization.make } |
| 2531 | + let(:space) { VCAP::CloudController::Space.make(organization: org) } |
| 2532 | + let(:app_model) { VCAP::CloudController::AppModel.make(name: 'name1', space: space, desired_state: 'STOPPED') } |
| 2533 | + let(:api_call) { lambda { |user_headers| get "/v3/apps/#{app_model.guid}/permissions", nil, user_headers } } |
| 2534 | + |
| 2535 | + let(:read_all_response) do |
| 2536 | + { |
| 2537 | + "read_basic_data": true, |
| 2538 | + "read_sensitive_data": true |
| 2539 | + } |
| 2540 | + end |
| 2541 | + |
| 2542 | + let(:read_basic_response) do |
| 2543 | + { |
| 2544 | + "read_basic_data": true, |
| 2545 | + "read_sensitive_data": false |
| 2546 | + } |
| 2547 | + end |
| 2548 | + |
| 2549 | + let(:expected_codes_and_responses) do |
| 2550 | + h = Hash.new(code: 404) |
| 2551 | + h['admin'] = { code: 200, response_object: read_all_response } |
| 2552 | + h['admin_read_only'] = { code: 200, response_object: read_all_response } |
| 2553 | + h['global_auditor'] = { code: 200, response_object: read_basic_response } |
| 2554 | + h['org_manager'] = { code: 200, response_object: read_basic_response } |
| 2555 | + h['space_manager'] = { code: 200, response_object: read_basic_response } |
| 2556 | + h['space_auditor'] = { code: 200, response_object: read_basic_response } |
| 2557 | + h['space_developer'] = { code: 200, response_object: read_basic_response } |
| 2558 | + h.freeze |
| 2559 | + end |
| 2560 | + |
| 2561 | + it_behaves_like 'permissions for single object endpoint', ALL_PERMISSIONS |
| 2562 | + end |
2480 | 2563 | end |
0 commit comments