shipit-engine 0.31.0 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +4 -2
- data/Rakefile +4 -2
- data/app/assets/stylesheets/_pages/_stacks.scss +0 -3
- data/app/assets/stylesheets/merge_status.scss +0 -3
- data/app/controllers/concerns/shipit/active_model_serializers_patch.rb +1 -0
- data/app/controllers/concerns/shipit/api/cacheable.rb +1 -0
- data/app/controllers/concerns/shipit/api/paginable.rb +3 -2
- data/app/controllers/concerns/shipit/api/rendering.rb +5 -4
- data/app/controllers/concerns/shipit/authentication.rb +3 -2
- data/app/controllers/concerns/shipit/pagination.rb +2 -1
- data/app/controllers/shipit/api/base_controller.rb +11 -6
- data/app/controllers/shipit/api/ccmenu_controller.rb +2 -1
- data/app/controllers/shipit/api/commits_controller.rb +2 -1
- data/app/controllers/shipit/api/deploys_controller.rb +4 -3
- data/app/controllers/shipit/api/hooks_controller.rb +6 -5
- data/app/controllers/shipit/api/locks_controller.rb +5 -4
- data/app/controllers/shipit/api/outputs_controller.rb +2 -1
- data/app/controllers/shipit/api/pull_requests_controller.rb +7 -6
- data/app/controllers/shipit/api/release_statuses_controller.rb +3 -2
- data/app/controllers/shipit/api/rollbacks_controller.rb +33 -0
- data/app/controllers/shipit/api/stacks_controller.rb +18 -5
- data/app/controllers/shipit/api/tasks_controller.rb +6 -5
- data/app/controllers/shipit/api_clients_controller.rb +4 -3
- data/app/controllers/shipit/ccmenu_url_controller.rb +4 -3
- data/app/controllers/shipit/commit_checks_controller.rb +2 -1
- data/app/controllers/shipit/commits_controller.rb +2 -1
- data/app/controllers/shipit/deploys_controller.rb +3 -2
- data/app/controllers/shipit/github_authentication_controller.rb +4 -3
- data/app/controllers/shipit/merge_status_controller.rb +17 -16
- data/app/controllers/shipit/pull_requests_controller.rb +3 -2
- data/app/controllers/shipit/release_statuses_controller.rb +3 -2
- data/app/controllers/shipit/rollbacks_controller.rb +3 -2
- data/app/controllers/shipit/shipit_controller.rb +2 -1
- data/app/controllers/shipit/stacks_controller.rb +22 -7
- data/app/controllers/shipit/status_controller.rb +2 -1
- data/app/controllers/shipit/tasks_controller.rb +6 -5
- data/app/controllers/shipit/webhooks_controller.rb +3 -2
- data/app/helpers/shipit/chunks_helper.rb +1 -0
- data/app/helpers/shipit/deploys_helper.rb +4 -3
- data/app/helpers/shipit/github_url_helper.rb +1 -0
- data/app/helpers/shipit/merge_status_helper.rb +1 -0
- data/app/helpers/shipit/shipit_helper.rb +1 -0
- data/app/helpers/shipit/stacks_helper.rb +1 -0
- data/app/helpers/shipit/tasks_helper.rb +1 -0
- data/app/jobs/shipit/background_job.rb +4 -0
- data/app/jobs/shipit/background_job/unique.rb +1 -0
- data/app/jobs/shipit/cache_deploy_spec_job.rb +1 -0
- data/app/jobs/shipit/chunk_rollup_job.rb +4 -0
- data/app/jobs/shipit/clear_git_cache_job.rb +1 -0
- data/app/jobs/shipit/continuous_delivery_job.rb +2 -1
- data/app/jobs/shipit/create_on_github_job.rb +6 -1
- data/app/jobs/shipit/create_release_statuses_job.rb +1 -0
- data/app/jobs/shipit/deferred_touch_job.rb +4 -0
- data/app/jobs/shipit/deliver_hook_job.rb +1 -0
- data/app/jobs/shipit/destroy_job.rb +1 -0
- data/app/jobs/shipit/destroy_stack_job.rb +1 -0
- data/app/jobs/shipit/emit_event_job.rb +2 -1
- data/app/jobs/shipit/fetch_commit_stats_job.rb +1 -0
- data/app/jobs/shipit/fetch_deployed_revision_job.rb +1 -0
- data/app/jobs/shipit/github_sync_job.rb +2 -1
- data/app/jobs/shipit/mark_deploy_healthy_job.rb +1 -0
- data/app/jobs/shipit/merge_pull_requests_job.rb +1 -0
- data/app/jobs/shipit/perform_commit_checks_job.rb +1 -0
- data/app/jobs/shipit/perform_task_job.rb +12 -5
- data/app/jobs/shipit/purge_old_deliveries_job.rb +1 -0
- data/app/jobs/shipit/reap_dead_tasks_job.rb +21 -0
- data/app/jobs/shipit/refresh_check_runs_job.rb +1 -0
- data/app/jobs/shipit/refresh_github_user_job.rb +1 -0
- data/app/jobs/shipit/refresh_pull_request_job.rb +1 -0
- data/app/jobs/shipit/refresh_statuses_job.rb +1 -0
- data/app/jobs/shipit/setup_github_hook_job.rb +1 -0
- data/app/jobs/shipit/update_estimated_deploy_duration_job.rb +1 -0
- data/app/jobs/shipit/update_github_last_deployed_ref_job.rb +4 -3
- data/app/models/concerns/shipit/deferred_touch.rb +4 -3
- data/app/models/shipit/anonymous_user.rb +5 -0
- data/app/models/shipit/api_client.rb +3 -2
- data/app/models/shipit/application_record.rb +2 -1
- data/app/models/shipit/check_run.rb +4 -3
- data/app/models/shipit/command_line_user.rb +1 -0
- data/app/models/shipit/commit.rb +11 -4
- data/app/models/shipit/commit_checks.rb +1 -0
- data/app/models/shipit/commit_deployment.rb +3 -2
- data/app/models/shipit/commit_deployment_status.rb +2 -1
- data/app/models/shipit/commit_message.rb +1 -0
- data/app/models/shipit/delivery.rb +4 -3
- data/app/models/shipit/deploy.rb +6 -17
- data/app/models/shipit/deploy_spec.rb +22 -3
- data/app/models/shipit/deploy_spec/bundler_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/capistrano_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/file_system.rb +10 -3
- data/app/models/shipit/deploy_spec/kubernetes_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/lerna_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/npm_discovery.rb +5 -4
- data/app/models/shipit/deploy_spec/pypi_discovery.rb +1 -0
- data/app/models/shipit/deploy_spec/rubygems_discovery.rb +1 -0
- data/app/models/shipit/deploy_stats.rb +2 -1
- data/app/models/shipit/duration.rb +3 -2
- data/app/models/shipit/ephemeral_commit_checks.rb +1 -0
- data/app/models/shipit/github_hook.rb +2 -1
- data/app/models/shipit/github_status.rb +2 -1
- data/app/models/shipit/hook.rb +6 -5
- data/app/models/shipit/membership.rb +3 -2
- data/app/models/shipit/output_chunk.rb +7 -2
- data/app/models/shipit/pull_request.rb +6 -5
- data/app/models/shipit/record.rb +18 -0
- data/app/models/shipit/release_status.rb +3 -2
- data/app/models/shipit/repository.rb +10 -5
- data/app/models/shipit/rollback.rb +1 -0
- data/app/models/shipit/stack.rb +50 -16
- data/app/models/shipit/status.rb +3 -2
- data/app/models/shipit/status/common.rb +7 -6
- data/app/models/shipit/status/group.rb +1 -0
- data/app/models/shipit/status/missing.rb +2 -1
- data/app/models/shipit/status/unknown.rb +2 -1
- data/app/models/shipit/task.rb +38 -5
- data/app/models/shipit/task_definition.rb +1 -0
- data/app/models/shipit/team.rb +2 -1
- data/app/models/shipit/undeployed_commit.rb +1 -0
- data/app/models/shipit/unlimited_api_client.rb +1 -0
- data/app/models/shipit/user.rb +10 -8
- data/app/models/shipit/variable_definition.rb +1 -0
- data/app/models/shipit/webhooks.rb +1 -0
- data/app/models/shipit/webhooks/handlers/check_suite_handler.rb +1 -0
- data/app/models/shipit/webhooks/handlers/handler.rb +1 -0
- data/app/models/shipit/webhooks/handlers/membership_handler.rb +1 -0
- data/app/models/shipit/webhooks/handlers/push_handler.rb +1 -0
- data/app/models/shipit/webhooks/handlers/status_handler.rb +1 -0
- data/app/serializers/concerns/shipit/conditional_attributes.rb +1 -0
- data/app/serializers/shipit/anonymous_user_serializer.rb +1 -0
- data/app/serializers/shipit/command_line_user_serializer.rb +1 -0
- data/app/serializers/shipit/commit_serializer.rb +1 -0
- data/app/serializers/shipit/deploy_serializer.rb +2 -1
- data/app/serializers/shipit/hook_serializer.rb +1 -0
- data/app/serializers/shipit/pull_request_serializer.rb +1 -0
- data/app/serializers/shipit/rollback_serializer.rb +1 -0
- data/app/serializers/shipit/short_commit_serializer.rb +1 -0
- data/app/serializers/shipit/stack_serializer.rb +1 -0
- data/app/serializers/shipit/tail_task_serializer.rb +1 -0
- data/app/serializers/shipit/task_serializer.rb +2 -17
- data/app/serializers/shipit/user_serializer.rb +6 -1
- data/app/validators/ascii_only_validator.rb +1 -0
- data/app/validators/subset_validator.rb +1 -0
- data/app/views/layouts/shipit.html.erb +1 -1
- data/app/views/shipit/_variables.html.erb +1 -1
- data/app/views/shipit/ccmenu/project.xml.builder +2 -1
- data/app/views/shipit/deploys/show.html.erb +2 -2
- data/app/views/shipit/stacks/_header.html.erb +3 -0
- data/app/views/shipit/stacks/all_tasks.html.erb +28 -0
- data/app/views/shipit/stacks/index.html.erb +1 -1
- data/app/views/shipit/tasks/show.html.erb +1 -1
- data/config/initializers/inflections.rb +2 -1
- data/config/locales/en.yml +3 -3
- data/config/routes.rb +10 -2
- data/db/migrate/20200226211925_add_index_to_tasks_status.rb +5 -0
- data/db/migrate/20200427135152_add_pull_request_head_sha_to_commit.rb +5 -0
- data/db/migrate/20200615181558_add_rollback_once_aborted_to.rb +5 -0
- data/lib/shipit.rb +12 -2
- data/lib/shipit/cast_value.rb +1 -0
- data/lib/shipit/command.rb +13 -12
- data/lib/shipit/commands.rb +5 -4
- data/lib/shipit/csv_serializer.rb +1 -0
- data/lib/shipit/deploy_commands.rb +1 -0
- data/lib/shipit/engine.rb +7 -2
- data/lib/shipit/environment_variables.rb +2 -1
- data/lib/shipit/first_parent_commits_iterator.rb +1 -0
- data/lib/shipit/flock.rb +1 -0
- data/lib/shipit/github_app.rb +7 -6
- data/lib/shipit/github_http_cache_middleware.rb +1 -0
- data/lib/shipit/null_serializer.rb +1 -0
- data/lib/shipit/octokit_check_runs.rb +3 -2
- data/lib/shipit/octokit_iterator.rb +3 -2
- data/lib/shipit/paginator.rb +3 -2
- data/lib/shipit/rollback_commands.rb +1 -0
- data/lib/shipit/same_site_cookie_middleware.rb +29 -0
- data/lib/shipit/simple_message_verifier.rb +1 -0
- data/lib/shipit/stack_commands.rb +3 -2
- data/lib/shipit/stat.rb +1 -0
- data/lib/shipit/task_commands.rb +2 -0
- data/lib/shipit/version.rb +2 -1
- data/lib/snippets/release-gem +5 -1
- data/lib/tasks/cron.rake +2 -0
- data/lib/tasks/dev.rake +3 -2
- data/lib/tasks/shipit.rake +15 -14
- data/lib/tasks/teams.rake +1 -0
- data/test/controllers/api/base_controller_test.rb +3 -2
- data/test/controllers/api/ccmenu_controller_test.rb +8 -7
- data/test/controllers/api/commits_controller_test.rb +3 -2
- data/test/controllers/api/deploys_controller_test.rb +15 -14
- data/test/controllers/api/hooks_controller_test.rb +8 -7
- data/test/controllers/api/locks_controller_test.rb +7 -6
- data/test/controllers/api/outputs_controller_test.rb +2 -1
- data/test/controllers/api/pull_requests_controller_test.rb +8 -7
- data/test/controllers/api/release_statuses_controller_test.rb +2 -1
- data/test/controllers/api/rollback_controller_test.rb +113 -0
- data/test/controllers/api/stacks_controller_test.rb +30 -9
- data/test/controllers/api/tasks_controller_test.rb +13 -12
- data/test/controllers/api_clients_controller_test.rb +5 -4
- data/test/controllers/ccmenu_controller_test.rb +4 -3
- data/test/controllers/commit_checks_controller_test.rb +4 -3
- data/test/controllers/commits_controller_test.rb +3 -2
- data/test/controllers/deploys_controller_test.rb +32 -21
- data/test/controllers/github_authentication_controller_test.rb +1 -0
- data/test/controllers/merge_status_controller_test.rb +7 -6
- data/test/controllers/pull_requests_controller_test.rb +4 -3
- data/test/controllers/release_statuses_controller_test.rb +3 -2
- data/test/controllers/rollbacks_controller_test.rb +9 -8
- data/test/controllers/stacks_controller_test.rb +33 -19
- data/test/controllers/status_controller_test.rb +1 -0
- data/test/controllers/tasks_controller_test.rb +19 -18
- data/test/controllers/webhooks_controller_test.rb +11 -10
- data/test/dummy/config/environments/development.rb +2 -0
- data/test/dummy/config/environments/test.rb +2 -0
- data/test/dummy/db/schema.rb +4 -1
- data/test/fixtures/shipit/commits.yml +15 -0
- data/test/fixtures/shipit/repositories.yml +4 -0
- data/test/fixtures/shipit/stacks.yml +90 -14
- data/test/fixtures/timeout +2 -1
- data/test/helpers/api_helper.rb +1 -0
- data/test/helpers/fixture_aliases_helper.rb +1 -0
- data/test/helpers/hooks_helper.rb +2 -1
- data/test/helpers/json_helper.rb +15 -11
- data/test/helpers/links_helper.rb +4 -3
- data/test/helpers/payloads_helper.rb +1 -0
- data/test/helpers/queries_helper.rb +3 -2
- data/test/jobs/cache_deploy_spec_job_test.rb +2 -1
- data/test/jobs/chunk_rollup_job_test.rb +1 -0
- data/test/jobs/deliver_hook_job_test.rb +1 -0
- data/test/jobs/destroy_stack_job_test.rb +1 -0
- data/test/jobs/emit_event_job_test.rb +2 -1
- data/test/jobs/fetch_commit_stats_job_test.rb +1 -0
- data/test/jobs/fetch_deployed_revision_job_test.rb +1 -0
- data/test/jobs/github_sync_job_test.rb +1 -0
- data/test/jobs/mark_deploy_healthy_job_test.rb +1 -0
- data/test/jobs/merge_pull_requests_job_test.rb +1 -0
- data/test/jobs/perform_task_job_test.rb +4 -3
- data/test/jobs/purge_old_deliveries_job_test.rb +1 -0
- data/test/jobs/reap_dead_tasks_job_test.rb +68 -0
- data/test/jobs/refresh_github_user_job_test.rb +1 -0
- data/test/jobs/refresh_status_job_test.rb +1 -0
- data/test/jobs/unique_job_test.rb +1 -0
- data/test/jobs/update_github_last_deployed_ref_job_test.rb +1 -0
- data/test/middleware/same_site_cookie_middleware_test.rb +52 -0
- data/test/models/api_client_test.rb +1 -0
- data/test/models/commit_checks_test.rb +1 -0
- data/test/models/commit_deployment_status_test.rb +1 -0
- data/test/models/commit_deployment_test.rb +2 -1
- data/test/models/commits_test.rb +72 -6
- data/test/models/delivery_test.rb +2 -1
- data/test/models/deploy_spec_test.rb +47 -42
- data/test/models/deploy_stats_test.rb +1 -0
- data/test/models/deploys_test.rb +31 -22
- data/test/models/duration_test.rb +1 -0
- data/test/models/github_hook_test.rb +1 -0
- data/test/models/hook_test.rb +18 -10
- data/test/models/membership_test.rb +1 -0
- data/test/models/output_chunk_test.rb +1 -0
- data/test/models/pull_request_test.rb +4 -3
- data/test/models/release_statuses_test.rb +1 -0
- data/test/models/rollbacks_test.rb +1 -0
- data/test/models/shipit/check_run_test.rb +1 -0
- data/test/models/shipit/repository_test.rb +1 -0
- data/test/models/shipit/wehbooks/handlers_test.rb +1 -0
- data/test/models/stacks_test.rb +30 -8
- data/test/models/status/group_test.rb +1 -0
- data/test/models/status/missing_test.rb +1 -0
- data/test/models/status_test.rb +1 -0
- data/test/models/task_definitions_test.rb +9 -8
- data/test/models/tasks_test.rb +18 -1
- data/test/models/team_test.rb +4 -2
- data/test/models/undeployed_commits_test.rb +1 -0
- data/test/models/users_test.rb +13 -5
- data/test/test_command_integration.rb +3 -2
- data/test/test_helper.rb +34 -31
- data/test/unit/anonymous_user_serializer_test.rb +14 -0
- data/test/unit/command_test.rb +8 -7
- data/test/unit/commands_test.rb +1 -0
- data/test/unit/commit_serializer_test.rb +16 -0
- data/test/unit/csv_serializer_test.rb +3 -2
- data/test/unit/deploy_commands_test.rb +5 -4
- data/test/unit/deploy_serializer_test.rb +17 -0
- data/test/unit/environment_variables_test.rb +5 -4
- data/test/unit/github_app_test.rb +1 -0
- data/test/unit/github_url_helper_test.rb +1 -0
- data/test/unit/rollback_commands_test.rb +2 -1
- data/test/unit/shipit_helper_test.rb +17 -0
- data/test/unit/shipit_test.rb +1 -0
- data/test/unit/user_serializer_test.rb +14 -0
- data/test/unit/variable_definition_test.rb +1 -0
- metadata +155 -130
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
module Shipit
|
|
@@ -9,27 +10,27 @@ module Shipit
|
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
test "GET show" do
|
|
12
|
-
get :show, params: {referrer: 'https://github.com/Shopify/shipit-engine/pull/42', branch: 'master'}
|
|
13
|
+
get :show, params: { referrer: 'https://github.com/Shopify/shipit-engine/pull/42', branch: 'master' }
|
|
13
14
|
assert_response :ok
|
|
14
15
|
assert_includes response.body, 'Ready to ship!'
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
test "GET show when there is no matching stacks" do
|
|
18
|
-
get :show, params: {referrer: 'https://github.com/Shopify/unknown-repo/pull/42', branch: 'master'}
|
|
19
|
+
get :show, params: { referrer: 'https://github.com/Shopify/unknown-repo/pull/42', branch: 'master' }
|
|
19
20
|
assert_response :ok
|
|
20
21
|
assert_predicate response.body, :blank?
|
|
21
22
|
end
|
|
22
23
|
|
|
23
24
|
test "GET anonymous show returns a login message" do
|
|
24
25
|
session.delete(:user_id)
|
|
25
|
-
get :show, params: {referrer: 'https://github.com/Shopify/shipit-engine/pull/42', branch: 'master'}
|
|
26
|
+
get :show, params: { referrer: 'https://github.com/Shopify/shipit-engine/pull/42', branch: 'master' }
|
|
26
27
|
assert_response :ok
|
|
27
28
|
assert_includes response.body.downcase, 'please log in'
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
test "GET anonymous show when there is no matching stack is blank" do
|
|
31
32
|
session.delete(:user_id)
|
|
32
|
-
get :show, params: {referrer: 'https://github.com/Shopify/unknown-repo/pull/42', branch: 'master'}
|
|
33
|
+
get :show, params: { referrer: 'https://github.com/Shopify/unknown-repo/pull/42', branch: 'master' }
|
|
33
34
|
assert_response :ok
|
|
34
35
|
assert_predicate response.body, :blank?
|
|
35
36
|
end
|
|
@@ -47,7 +48,7 @@ module Shipit
|
|
|
47
48
|
merge_queue_enabled: true,
|
|
48
49
|
)
|
|
49
50
|
|
|
50
|
-
get :show, params: {referrer: 'https://github.com/Shopify/shipit-engine/pull/42', branch: 'master'}
|
|
51
|
+
get :show, params: { referrer: 'https://github.com/Shopify/shipit-engine/pull/42', branch: 'master' }
|
|
51
52
|
assert_response :ok
|
|
52
53
|
assert_includes response.body, 'shipit-engine/foo'
|
|
53
54
|
end
|
|
@@ -66,7 +67,7 @@ module Shipit
|
|
|
66
67
|
merge_queue_enabled: true,
|
|
67
68
|
)
|
|
68
69
|
|
|
69
|
-
get :show, params: {referrer: 'https://github.com/Shopify/shipit-engine/pull/42', branch: 'master'}
|
|
70
|
+
get :show, params: { referrer: 'https://github.com/Shopify/shipit-engine/pull/42', branch: 'master' }
|
|
70
71
|
assert_response :ok
|
|
71
72
|
assert_includes response.body, 'locked'
|
|
72
73
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
module Shipit
|
|
@@ -9,21 +10,21 @@ module Shipit
|
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
test "#index shows pending pull requests" do
|
|
12
|
-
get :index, params: {stack_id: @stack.to_param}
|
|
13
|
+
get :index, params: { stack_id: @stack.to_param }
|
|
13
14
|
assert_response :success
|
|
14
15
|
assert_select '.pr-list .pr', @stack.pull_requests.pending.count
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
test "#add can enqueue a pull request" do
|
|
18
19
|
assert_difference -> { PullRequest.count }, +1 do
|
|
19
|
-
post :create, params: {stack_id: @stack.to_param, number_or_url: '#5'}
|
|
20
|
+
post :create, params: { stack_id: @stack.to_param, number_or_url: '#5' }
|
|
20
21
|
end
|
|
21
22
|
assert_redirected_to stack_pull_requests_path(@stack)
|
|
22
23
|
end
|
|
23
24
|
|
|
24
25
|
test "#destroy can cancel a pending pull request" do
|
|
25
26
|
assert_predicate @pr, :pending?
|
|
26
|
-
delete :destroy, params: {stack_id: @stack.to_param, id: @pr.id}
|
|
27
|
+
delete :destroy, params: { stack_id: @stack.to_param, id: @pr.id }
|
|
27
28
|
assert_redirected_to stack_pull_requests_path(@stack)
|
|
28
29
|
assert_predicate @pr.reload, :canceled?
|
|
29
30
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
module Shipit
|
|
@@ -10,7 +11,7 @@ module Shipit
|
|
|
10
11
|
|
|
11
12
|
test ":create allow users to append release statuses and mark the deploy as success" do
|
|
12
13
|
assert_difference -> { ReleaseStatus.count }, +1 do
|
|
13
|
-
post :create, params: {stack_id: @stack, deploy_id: @deploy.id, status: 'success'}
|
|
14
|
+
post :create, params: { stack_id: @stack, deploy_id: @deploy.id, status: 'success' }
|
|
14
15
|
assert_response :created
|
|
15
16
|
end
|
|
16
17
|
|
|
@@ -23,7 +24,7 @@ module Shipit
|
|
|
23
24
|
|
|
24
25
|
test ":create allow users to append release statuses and mark the deploy as faulty" do
|
|
25
26
|
assert_difference -> { ReleaseStatus.count }, +1 do
|
|
26
|
-
post :create, params: {stack_id: @stack, deploy_id: @deploy.id, status: 'failure'}
|
|
27
|
+
post :create, params: { stack_id: @stack, deploy_id: @deploy.id, status: 'failure' }
|
|
27
28
|
assert_response :created
|
|
28
29
|
end
|
|
29
30
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
module Shipit
|
|
@@ -11,37 +12,37 @@ module Shipit
|
|
|
11
12
|
|
|
12
13
|
test ":create persists a new rollback" do
|
|
13
14
|
assert_difference '@stack.rollbacks.count', 1 do
|
|
14
|
-
post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}}
|
|
15
|
+
post :create, params: { stack_id: @stack.to_param, rollback: { parent_id: @deploy.id } }
|
|
15
16
|
end
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
test ":create can receive an :env hash" do
|
|
19
|
-
env = {'SAFETY_DISABLED' => '1'}
|
|
20
|
-
post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id, env: env}}
|
|
20
|
+
env = { 'SAFETY_DISABLED' => '1' }
|
|
21
|
+
post :create, params: { stack_id: @stack.to_param, rollback: { parent_id: @deploy.id, env: env } }
|
|
21
22
|
new_rollback = Rollback.last
|
|
22
23
|
assert_equal env, new_rollback.env
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
test ":create ignore :env keys not declared in the deploy spec" do
|
|
26
|
-
post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id, env: {'H4X0R' => '1'}}}
|
|
27
|
+
post :create, params: { stack_id: @stack.to_param, rollback: { parent_id: @deploy.id, env: { 'H4X0R' => '1' } } }
|
|
27
28
|
new_rollback = Rollback.last
|
|
28
29
|
assert_equal({}, new_rollback.env)
|
|
29
30
|
end
|
|
30
31
|
|
|
31
32
|
test ":create redirects to the new deploy" do
|
|
32
|
-
post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}}
|
|
33
|
+
post :create, params: { stack_id: @stack.to_param, rollback: { parent_id: @deploy.id } }
|
|
33
34
|
assert_redirected_to stack_deploy_path(@stack, Rollback.last)
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
test ":create locks deploys" do
|
|
37
|
-
post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}}
|
|
38
|
+
post :create, params: { stack_id: @stack.to_param, rollback: { parent_id: @deploy.id } }
|
|
38
39
|
assert @stack.reload.locked?
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
test ":create redirects back to the :new page if there is an active deploy" do
|
|
42
43
|
shipit_deploys(:shipit_running).update!(allow_concurrency: false, status: 'running')
|
|
43
44
|
assert_no_difference '@stack.deploys.count' do
|
|
44
|
-
post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}}
|
|
45
|
+
post :create, params: { stack_id: @stack.to_param, rollback: { parent_id: @deploy.id } }
|
|
45
46
|
end
|
|
46
47
|
assert_redirected_to rollback_stack_deploy_path(@stack, @deploy)
|
|
47
48
|
end
|
|
@@ -49,7 +50,7 @@ module Shipit
|
|
|
49
50
|
test ":create with `force` option ignore the active deploys" do
|
|
50
51
|
shipit_deploys(:shipit_running).update_column(:status, 'running')
|
|
51
52
|
assert_difference '@stack.deploys.count', 1 do
|
|
52
|
-
post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}, force: 'true'}
|
|
53
|
+
post :create, params: { stack_id: @stack.to_param, rollback: { parent_id: @deploy.id }, force: 'true' }
|
|
53
54
|
end
|
|
54
55
|
assert_redirected_to stack_deploy_path(@stack, Rollback.last)
|
|
55
56
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
module Shipit
|
|
@@ -46,13 +47,26 @@ module Shipit
|
|
|
46
47
|
)
|
|
47
48
|
end
|
|
48
49
|
|
|
50
|
+
test "#index list all stacks" do
|
|
51
|
+
get :index
|
|
52
|
+
assert_response :ok
|
|
53
|
+
assert_select ".stack", count: Stack.count
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
test "#index list a repo stacks if the :repo params is passed" do
|
|
57
|
+
repo = shipit_repositories(:shipit)
|
|
58
|
+
get :index, params: { repo: repo.full_name }
|
|
59
|
+
assert_response :ok
|
|
60
|
+
assert_select ".stack", count: repo.stacks.count
|
|
61
|
+
end
|
|
62
|
+
|
|
49
63
|
test "#show is success" do
|
|
50
|
-
get :show, params: {id: @stack.to_param}
|
|
64
|
+
get :show, params: { id: @stack.to_param }
|
|
51
65
|
assert_response :ok
|
|
52
66
|
end
|
|
53
67
|
|
|
54
68
|
test "#show with faulty and validating deploys is success" do
|
|
55
|
-
get :show, params: {id: shipit_stacks(:shipit_canaries).to_param}
|
|
69
|
+
get :show, params: { id: shipit_stacks(:shipit_canaries).to_param }
|
|
56
70
|
assert_response :ok
|
|
57
71
|
end
|
|
58
72
|
|
|
@@ -60,18 +74,18 @@ module Shipit
|
|
|
60
74
|
@stack = shipit_stacks(:check_runs)
|
|
61
75
|
assert_not_equal 0, CheckRun.where(stack_id: @stack.id).count
|
|
62
76
|
|
|
63
|
-
get :show, params: {id: @stack.to_param}
|
|
77
|
+
get :show, params: { id: @stack.to_param }
|
|
64
78
|
assert_response :ok
|
|
65
79
|
end
|
|
66
80
|
|
|
67
81
|
test "#show handles locked stacks without a lock_author" do
|
|
68
82
|
@stack.update!(lock_reason: "I am a lock with no author")
|
|
69
|
-
get :show, params: {id: @stack.to_param}
|
|
83
|
+
get :show, params: { id: @stack.to_param }
|
|
70
84
|
end
|
|
71
85
|
|
|
72
86
|
test "#show auto-links URLs in lock reason" do
|
|
73
87
|
@stack.update!(lock_reason: 'http://google.com')
|
|
74
|
-
get :show, params: {id: @stack.to_param}
|
|
88
|
+
get :show, params: { id: @stack.to_param }
|
|
75
89
|
assert_response :ok
|
|
76
90
|
assert_select 'a[href="http://google.com"]'
|
|
77
91
|
end
|
|
@@ -93,38 +107,38 @@ module Shipit
|
|
|
93
107
|
|
|
94
108
|
test "#create when not valid renders new" do
|
|
95
109
|
assert_no_difference "Stack.count" do
|
|
96
|
-
post :create, params: {stack: {repo_owner: 'some', repo_name: 'owner/path'}}
|
|
110
|
+
post :create, params: { stack: { repo_owner: 'some', repo_name: 'owner/path' } }
|
|
97
111
|
end
|
|
98
112
|
assert_response :success
|
|
99
113
|
end
|
|
100
114
|
|
|
101
115
|
test "#destroy enqueues a DestroyStackJob" do
|
|
102
116
|
assert_enqueued_with(job: DestroyStackJob, args: [@stack]) do
|
|
103
|
-
delete :destroy, params: {id: @stack.to_param}
|
|
117
|
+
delete :destroy, params: { id: @stack.to_param }
|
|
104
118
|
end
|
|
105
119
|
assert_redirected_to stacks_path
|
|
106
120
|
end
|
|
107
121
|
|
|
108
122
|
test "#settings is success" do
|
|
109
|
-
get :settings, params: {id: @stack.to_param}
|
|
123
|
+
get :settings, params: { id: @stack.to_param }
|
|
110
124
|
assert_response :success
|
|
111
125
|
end
|
|
112
126
|
|
|
113
127
|
test "#statistics is success" do
|
|
114
|
-
get :statistics, params: {id: @stack.to_param}
|
|
128
|
+
get :statistics, params: { id: @stack.to_param }
|
|
115
129
|
assert_response :success
|
|
116
130
|
end
|
|
117
131
|
|
|
118
132
|
test "#statistics redirects to #show if no deploys are present" do
|
|
119
133
|
@stack.deploys.destroy_all
|
|
120
|
-
get :statistics, params: {id: @stack.to_param}
|
|
134
|
+
get :statistics, params: { id: @stack.to_param }
|
|
121
135
|
assert_redirected_to stack_path(@stack)
|
|
122
136
|
end
|
|
123
137
|
|
|
124
138
|
test "#update allows to lock the stack" do
|
|
125
139
|
refute @stack.locked?
|
|
126
140
|
|
|
127
|
-
patch :update, params: {id: @stack.to_param, stack: {lock_reason: 'Went out to eat some chips!'}}
|
|
141
|
+
patch :update, params: { id: @stack.to_param, stack: { lock_reason: 'Went out to eat some chips!' } }
|
|
128
142
|
@stack.reload
|
|
129
143
|
assert @stack.locked?
|
|
130
144
|
assert_equal shipit_users(:walrus), @stack.lock_author
|
|
@@ -134,7 +148,7 @@ module Shipit
|
|
|
134
148
|
@stack.update!(lock_reason: 'Went out to eat some chips!')
|
|
135
149
|
assert @stack.locked?
|
|
136
150
|
|
|
137
|
-
patch :update, params: {id: @stack.to_param, stack: {lock_reason: ''}}
|
|
151
|
+
patch :update, params: { id: @stack.to_param, stack: { lock_reason: '' } }
|
|
138
152
|
@stack.reload
|
|
139
153
|
refute @stack.locked?
|
|
140
154
|
assert_instance_of AnonymousUser, @stack.lock_author
|
|
@@ -144,7 +158,7 @@ module Shipit
|
|
|
144
158
|
refute @stack.archived?
|
|
145
159
|
refute @stack.locked?
|
|
146
160
|
|
|
147
|
-
patch :update, params: {id: @stack.to_param, stack: {archived: "true"}}
|
|
161
|
+
patch :update, params: { id: @stack.to_param, stack: { archived: "true" } }
|
|
148
162
|
@stack.reload
|
|
149
163
|
assert @stack.archived?
|
|
150
164
|
assert @stack.locked?
|
|
@@ -157,7 +171,7 @@ module Shipit
|
|
|
157
171
|
assert @stack.locked?
|
|
158
172
|
assert @stack.archived?
|
|
159
173
|
|
|
160
|
-
patch :update, params: {id: @stack.to_param, stack: {archived: "false"}}
|
|
174
|
+
patch :update, params: { id: @stack.to_param, stack: { archived: "false" } }
|
|
161
175
|
@stack.reload
|
|
162
176
|
refute @stack.archived?
|
|
163
177
|
refute @stack.locked?
|
|
@@ -170,7 +184,7 @@ module Shipit
|
|
|
170
184
|
assert_enqueued_with(job: RefreshStatusesJob, args: [stack_id: @stack.id]) do
|
|
171
185
|
assert_enqueued_with(job: RefreshCheckRunsJob, args: [stack_id: @stack.id]) do
|
|
172
186
|
assert_enqueued_with(job: GithubSyncJob, args: [stack_id: @stack.id]) do
|
|
173
|
-
post :refresh, params: {id: @stack.to_param}
|
|
187
|
+
post :refresh, params: { id: @stack.to_param }
|
|
174
188
|
end
|
|
175
189
|
end
|
|
176
190
|
end
|
|
@@ -180,23 +194,23 @@ module Shipit
|
|
|
180
194
|
|
|
181
195
|
test "#clear_git_cache queues a ClearGitCacheJob" do
|
|
182
196
|
assert_enqueued_with(job: ClearGitCacheJob, args: [@stack]) do
|
|
183
|
-
post :clear_git_cache, params: {id: @stack.to_param}
|
|
197
|
+
post :clear_git_cache, params: { id: @stack.to_param }
|
|
184
198
|
end
|
|
185
199
|
assert_redirected_to stack_settings_path(@stack)
|
|
186
200
|
end
|
|
187
201
|
|
|
188
202
|
test "#clear_git_cache displays a flash message" do
|
|
189
|
-
post :clear_git_cache, params: {id: @stack.to_param}
|
|
203
|
+
post :clear_git_cache, params: { id: @stack.to_param }
|
|
190
204
|
assert_equal 'Git Cache clearing scheduled', flash[:success]
|
|
191
205
|
end
|
|
192
206
|
|
|
193
207
|
test "#update redirects to return_to parameter" do
|
|
194
|
-
patch :update, params: {id: @stack.to_param, stack: {ignore_ci: false}, return_to: stack_path(@stack)}
|
|
208
|
+
patch :update, params: { id: @stack.to_param, stack: { ignore_ci: false }, return_to: stack_path(@stack) }
|
|
195
209
|
assert_redirected_to stack_path(@stack)
|
|
196
210
|
end
|
|
197
211
|
|
|
198
212
|
test "#lookup redirects to the canonical URL" do
|
|
199
|
-
get :lookup, params: {id: @stack.id}
|
|
213
|
+
get :lookup, params: { id: @stack.id }
|
|
200
214
|
assert_redirected_to stack_path(@stack)
|
|
201
215
|
end
|
|
202
216
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
module Shipit
|
|
@@ -11,7 +12,7 @@ module Shipit
|
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
test "tasks defined in the shipit.yml can be displayed" do
|
|
14
|
-
get :new, params: {stack_id: @stack, definition_id: @definition.id}
|
|
15
|
+
get :new, params: { stack_id: @stack, definition_id: @definition.id }
|
|
15
16
|
assert_response :ok
|
|
16
17
|
end
|
|
17
18
|
|
|
@@ -20,7 +21,7 @@ module Shipit
|
|
|
20
21
|
|
|
21
22
|
assert_predicate @stack, :active_task?
|
|
22
23
|
assert_no_difference -> { @stack.tasks.count } do
|
|
23
|
-
post :create, params: {stack_id: @stack, definition_id: @definition.id}
|
|
24
|
+
post :create, params: { stack_id: @stack, definition_id: @definition.id }
|
|
24
25
|
end
|
|
25
26
|
assert_redirected_to new_stack_tasks_path(@stack, @definition)
|
|
26
27
|
end
|
|
@@ -30,7 +31,7 @@ module Shipit
|
|
|
30
31
|
|
|
31
32
|
assert_predicate @stack, :active_task?
|
|
32
33
|
assert_difference -> { @stack.tasks.count } do
|
|
33
|
-
post :create, params: {stack_id: @stack, definition_id: @definition.id, force: 'true'}
|
|
34
|
+
post :create, params: { stack_id: @stack, definition_id: @definition.id, force: 'true' }
|
|
34
35
|
end
|
|
35
36
|
assert_redirected_to stack_task_path(@stack, Task.last)
|
|
36
37
|
end
|
|
@@ -38,26 +39,26 @@ module Shipit
|
|
|
38
39
|
test "tasks defined in the shipit.yml can be triggered while the stack is being deployed if specified as such" do
|
|
39
40
|
@definition = @stack.find_task_definition('flush_cache')
|
|
40
41
|
assert_difference -> { @stack.tasks.count } do
|
|
41
|
-
post :create, params: {stack_id: @stack, definition_id: @definition.id}
|
|
42
|
+
post :create, params: { stack_id: @stack, definition_id: @definition.id }
|
|
42
43
|
end
|
|
43
44
|
assert_redirected_to stack_task_path(@stack, Task.last)
|
|
44
45
|
end
|
|
45
46
|
|
|
46
47
|
test "tasks with variables defined in the shipit.yml can be triggered with their variables set" do
|
|
47
|
-
env = {"FOO" => "0"}
|
|
48
|
+
env = { "FOO" => "0" }
|
|
48
49
|
|
|
49
|
-
post :create, params: {stack_id: @stack, definition_id: @definition.id, task: {env: env}, force: 'true'}
|
|
50
|
+
post :create, params: { stack_id: @stack, definition_id: @definition.id, task: { env: env }, force: 'true' }
|
|
50
51
|
|
|
51
52
|
assert_redirected_to stack_tasks_path(@stack, Task.last)
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
test "triggered tasks can be observed" do
|
|
55
|
-
get :show, params: {stack_id: @stack, id: @task.id}
|
|
56
|
+
get :show, params: { stack_id: @stack, id: @task.id }
|
|
56
57
|
assert_response :ok
|
|
57
58
|
end
|
|
58
59
|
|
|
59
60
|
test "triggered tasks can be observed as raw text" do
|
|
60
|
-
get :show, params: {stack_id: @stack, id: @task.id}, format: 'txt'
|
|
61
|
+
get :show, params: { stack_id: @stack, id: @task.id }, format: 'txt'
|
|
61
62
|
assert_response :success
|
|
62
63
|
assert_equal("text/plain", @response.media_type)
|
|
63
64
|
end
|
|
@@ -65,7 +66,7 @@ module Shipit
|
|
|
65
66
|
test ":abort call abort! on the deploy" do
|
|
66
67
|
@task = shipit_deploys(:shipit_running)
|
|
67
68
|
@task.ping
|
|
68
|
-
post :abort, params: {stack_id: @stack.to_param, id: @task.id}
|
|
69
|
+
post :abort, params: { stack_id: @stack.to_param, id: @task.id }
|
|
69
70
|
|
|
70
71
|
@task.reload
|
|
71
72
|
assert_response :success
|
|
@@ -77,7 +78,7 @@ module Shipit
|
|
|
77
78
|
test ":abort schedule the rollback if `rollback` is present" do
|
|
78
79
|
@task = shipit_deploys(:shipit_running)
|
|
79
80
|
@task.ping
|
|
80
|
-
post :abort, params: {stack_id: @stack.to_param, id: @task.id, rollback: 'true'}
|
|
81
|
+
post :abort, params: { stack_id: @stack.to_param, id: @task.id, rollback: 'true' }
|
|
81
82
|
|
|
82
83
|
@task.reload
|
|
83
84
|
assert_response :success
|
|
@@ -87,13 +88,13 @@ module Shipit
|
|
|
87
88
|
end
|
|
88
89
|
|
|
89
90
|
test ":index list the stack deploys" do
|
|
90
|
-
get :index, params: {stack_id: @stack.to_param}
|
|
91
|
+
get :index, params: { stack_id: @stack.to_param }
|
|
91
92
|
assert_response :success
|
|
92
93
|
assert_select '.task-list .task', @stack.tasks.count
|
|
93
94
|
end
|
|
94
95
|
|
|
95
96
|
test ":index paginates with the `since` parameter" do
|
|
96
|
-
get :index, params: {stack_id: @stack.to_param, since: @stack.tasks.last.id}
|
|
97
|
+
get :index, params: { stack_id: @stack.to_param, since: @stack.tasks.last.id }
|
|
97
98
|
assert_response :success
|
|
98
99
|
assert_select '.task-list .task', @stack.tasks.count - 1
|
|
99
100
|
end
|
|
@@ -102,7 +103,7 @@ module Shipit
|
|
|
102
103
|
@task = shipit_deploys(:shipit_running)
|
|
103
104
|
last_chunk = @task.chunks.last
|
|
104
105
|
|
|
105
|
-
get :tail, params: {stack_id: @stack.to_param, id: @task.id, last_id: last_chunk.id}, format: :json
|
|
106
|
+
get :tail, params: { stack_id: @stack.to_param, id: @task.id, last_id: last_chunk.id }, format: :json
|
|
106
107
|
assert_response :success
|
|
107
108
|
assert_json_keys %w(url status output)
|
|
108
109
|
assert_json 'status', @task.status
|
|
@@ -111,7 +112,7 @@ module Shipit
|
|
|
111
112
|
test ":tail doesn't returns the next url if the task is finished" do
|
|
112
113
|
@task = shipit_deploys(:shipit)
|
|
113
114
|
|
|
114
|
-
get :tail, params: {stack_id: @stack.to_param, id: @task.id}, format: :json
|
|
115
|
+
get :tail, params: { stack_id: @stack.to_param, id: @task.id }, format: :json
|
|
115
116
|
assert_response :success
|
|
116
117
|
assert_no_json 'url'
|
|
117
118
|
end
|
|
@@ -119,7 +120,7 @@ module Shipit
|
|
|
119
120
|
test ":tail returns the rollback url if the task have been aborted" do
|
|
120
121
|
@task = shipit_deploys(:shipit_aborted)
|
|
121
122
|
|
|
122
|
-
get :tail, params: {stack_id: @stack.to_param, id: @task.id}, format: :json
|
|
123
|
+
get :tail, params: { stack_id: @stack.to_param, id: @task.id }, format: :json
|
|
123
124
|
assert_response :success
|
|
124
125
|
assert_json_keys %w(status output rollback_url)
|
|
125
126
|
end
|
|
@@ -127,7 +128,7 @@ module Shipit
|
|
|
127
128
|
test ":lookup returns stack task url if the task is an instance of Task" do
|
|
128
129
|
@task = shipit_tasks(:shipit_restart)
|
|
129
130
|
|
|
130
|
-
get :lookup, params: {id: @task.id}
|
|
131
|
+
get :lookup, params: { id: @task.id }
|
|
131
132
|
|
|
132
133
|
assert_redirected_to stack_task_path(@task.stack, @task)
|
|
133
134
|
end
|
|
@@ -135,7 +136,7 @@ module Shipit
|
|
|
135
136
|
test ":lookup returns stack deploy url if the task is an instance of Deploy" do
|
|
136
137
|
@task = shipit_tasks(:shipit)
|
|
137
138
|
|
|
138
|
-
get :lookup, params: {id: @task.id}
|
|
139
|
+
get :lookup, params: { id: @task.id }
|
|
139
140
|
|
|
140
141
|
assert_redirected_to stack_deploy_path(@task.stack, @task)
|
|
141
142
|
end
|
|
@@ -143,7 +144,7 @@ module Shipit
|
|
|
143
144
|
test ":lookup returns stack deploy url if the task is an instance of Rollback" do
|
|
144
145
|
@task = shipit_tasks(:shipit_rollback)
|
|
145
146
|
|
|
146
|
-
get :lookup, params: {id: @task.id}
|
|
147
|
+
get :lookup, params: { id: @task.id }
|
|
147
148
|
|
|
148
149
|
assert_redirected_to stack_deploy_path(@task.stack, @task)
|
|
149
150
|
end
|