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
|
|
@@ -13,7 +14,7 @@ module Shipit
|
|
|
13
14
|
@client.save!
|
|
14
15
|
|
|
15
16
|
assert_no_difference 'Stack.count' do
|
|
16
|
-
post :create, params: {repo_name: 'rails', repo_owner: 'rails', environment: 'staging', branch: 'staging'}
|
|
17
|
+
post :create, params: { repo_name: 'rails', repo_owner: 'rails', environment: 'staging', branch: 'staging' }
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
assert_response :forbidden
|
|
@@ -22,7 +23,7 @@ module Shipit
|
|
|
22
23
|
|
|
23
24
|
test "#create fails with invalid stack" do
|
|
24
25
|
assert_no_difference "Stack.count" do
|
|
25
|
-
post :create, params: {repo_owner: 'some', repo_name: 'owner/path'}
|
|
26
|
+
post :create, params: { repo_owner: 'some', repo_name: 'owner/path' }
|
|
26
27
|
end
|
|
27
28
|
assert_response :unprocessable_entity
|
|
28
29
|
assert_json 'errors', 'repository' => ['is invalid']
|
|
@@ -30,7 +31,7 @@ module Shipit
|
|
|
30
31
|
|
|
31
32
|
test "#create creates a stack and renders it back" do
|
|
32
33
|
assert_difference -> { Stack.count } do
|
|
33
|
-
post :create, params: {repo_name: 'rails', repo_owner: 'rails', environment: 'staging', branch: 'staging'}
|
|
34
|
+
post :create, params: { repo_name: 'rails', repo_owner: 'rails', environment: 'staging', branch: 'staging' }
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
assert_response :ok
|
|
@@ -61,6 +62,26 @@ module Shipit
|
|
|
61
62
|
]
|
|
62
63
|
end
|
|
63
64
|
|
|
65
|
+
test "#update updates a stack and renders it back" do
|
|
66
|
+
assert_equal true, @stack.merge_queue_enabled
|
|
67
|
+
assert_equal false, @stack.ignore_ci
|
|
68
|
+
assert_equal false, @stack.continuous_deployment
|
|
69
|
+
|
|
70
|
+
patch :update, params: {
|
|
71
|
+
id: @stack.to_param,
|
|
72
|
+
merge_queue_enabled: false,
|
|
73
|
+
ignore_ci: true,
|
|
74
|
+
continuous_deployment: true,
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
assert_response :ok
|
|
78
|
+
@stack.reload
|
|
79
|
+
|
|
80
|
+
assert_equal false, @stack.merge_queue_enabled
|
|
81
|
+
assert_equal true, @stack.ignore_ci
|
|
82
|
+
assert_equal true, @stack.continuous_deployment
|
|
83
|
+
end
|
|
84
|
+
|
|
64
85
|
test "#index returns a list of stacks" do
|
|
65
86
|
stack = Stack.last
|
|
66
87
|
|
|
@@ -73,7 +94,7 @@ module Shipit
|
|
|
73
94
|
end
|
|
74
95
|
|
|
75
96
|
test "#index is paginable" do
|
|
76
|
-
get :index, params: {page_size: 1}
|
|
97
|
+
get :index, params: { page_size: 1 }
|
|
77
98
|
assert_json do |list|
|
|
78
99
|
assert_instance_of Array, list
|
|
79
100
|
assert_equal 1, list.size
|
|
@@ -85,7 +106,7 @@ module Shipit
|
|
|
85
106
|
end
|
|
86
107
|
|
|
87
108
|
test "the `next` link is not provided when the last page is reached" do
|
|
88
|
-
get :index, params: {page_size: Stack.count}
|
|
109
|
+
get :index, params: { page_size: Stack.count }
|
|
89
110
|
assert_no_link 'next'
|
|
90
111
|
end
|
|
91
112
|
|
|
@@ -105,20 +126,20 @@ module Shipit
|
|
|
105
126
|
end
|
|
106
127
|
|
|
107
128
|
test "#show renders the stack" do
|
|
108
|
-
get :show, params: {id: @stack.to_param}
|
|
129
|
+
get :show, params: { id: @stack.to_param }
|
|
109
130
|
assert_response :ok
|
|
110
131
|
assert_json 'id', @stack.id
|
|
111
132
|
end
|
|
112
133
|
|
|
113
134
|
test "#show returns last_deployed_at column for stack" do
|
|
114
|
-
get :show, params: {id: @stack.to_param}
|
|
135
|
+
get :show, params: { id: @stack.to_param }
|
|
115
136
|
assert_response :ok
|
|
116
137
|
assert_json 'last_deployed_at', @stack.last_deployed_at
|
|
117
138
|
end
|
|
118
139
|
|
|
119
140
|
test "#destroy schedules stack deletion job" do
|
|
120
141
|
assert_enqueued_with(job: DestroyStackJob) do
|
|
121
|
-
delete :destroy, params: {id: @stack.to_param}
|
|
142
|
+
delete :destroy, params: { id: @stack.to_param }
|
|
122
143
|
end
|
|
123
144
|
assert_response :accepted
|
|
124
145
|
end
|
|
@@ -128,7 +149,7 @@ module Shipit
|
|
|
128
149
|
@client.save!
|
|
129
150
|
|
|
130
151
|
assert_no_difference 'Stack.count' do
|
|
131
|
-
delete :destroy, params: {id: @stack.to_param}
|
|
152
|
+
delete :destroy, params: { id: @stack.to_param }
|
|
132
153
|
end
|
|
133
154
|
|
|
134
155
|
assert_response :forbidden
|
|
@@ -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
|
test "#index returns a list of tasks" do
|
|
12
13
|
task = @stack.tasks.last
|
|
13
14
|
|
|
14
|
-
get :index, params: {stack_id: @stack.to_param}
|
|
15
|
+
get :index, params: { stack_id: @stack.to_param }
|
|
15
16
|
assert_response :ok
|
|
16
17
|
assert_json '0.id', task.id
|
|
17
18
|
end
|
|
@@ -19,18 +20,18 @@ module Shipit
|
|
|
19
20
|
test "#show returns a task" do
|
|
20
21
|
task = @stack.tasks.last
|
|
21
22
|
|
|
22
|
-
get :show, params: {stack_id: @stack.to_param, id: task.id}
|
|
23
|
+
get :show, params: { stack_id: @stack.to_param, id: task.id }
|
|
23
24
|
assert_response :ok
|
|
24
25
|
assert_json 'id', task.id
|
|
25
26
|
end
|
|
26
27
|
|
|
27
28
|
test "#trigger returns 404 with unknown task" do
|
|
28
|
-
post :trigger, params: {stack_id: @stack.to_param, task_name: 'shave_the_yak'}
|
|
29
|
+
post :trigger, params: { stack_id: @stack.to_param, task_name: 'shave_the_yak' }
|
|
29
30
|
assert_response :not_found
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
test "#trigger triggers a custom task" do
|
|
33
|
-
post :trigger, params: {stack_id: @stack.to_param, task_name: 'restart'}
|
|
34
|
+
post :trigger, params: { stack_id: @stack.to_param, task_name: 'restart' }
|
|
34
35
|
assert_response :accepted
|
|
35
36
|
assert_json 'type', 'task'
|
|
36
37
|
assert_json 'status', 'pending'
|
|
@@ -43,15 +44,15 @@ module Shipit
|
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
test "#trigger refuses to trigger a task with tasks not whitelisted" do
|
|
46
|
-
env = {'DANGEROUS_VARIABLE' => 'bar'}
|
|
47
|
-
post :trigger, params: {stack_id: @stack.to_param, task_name: 'restart', env: env}
|
|
47
|
+
env = { 'DANGEROUS_VARIABLE' => 'bar' }
|
|
48
|
+
post :trigger, params: { stack_id: @stack.to_param, task_name: 'restart', env: env }
|
|
48
49
|
assert_response :unprocessable_entity
|
|
49
50
|
assert_json 'message', 'Variables DANGEROUS_VARIABLE have not been whitelisted'
|
|
50
51
|
end
|
|
51
52
|
|
|
52
53
|
test "#trigger triggers a task with only whitelisted env variables" do
|
|
53
|
-
env = {'FOO' => 'bar'}
|
|
54
|
-
post :trigger, params: {stack_id: @stack.to_param, task_name: 'restart', env: env}
|
|
54
|
+
env = { 'FOO' => 'bar' }
|
|
55
|
+
post :trigger, params: { stack_id: @stack.to_param, task_name: 'restart', env: env }
|
|
55
56
|
assert_response :accepted
|
|
56
57
|
assert_json 'type', 'task'
|
|
57
58
|
assert_json 'status', 'pending'
|
|
@@ -64,8 +65,8 @@ module Shipit
|
|
|
64
65
|
end
|
|
65
66
|
|
|
66
67
|
test "#trigger triggers a task with explicitly passed and default variables" do
|
|
67
|
-
env = {'WALRUS' => 'overridden value'}
|
|
68
|
-
post :trigger, params: {stack_id: @stack.to_param, task_name: 'restart', env: env}
|
|
68
|
+
env = { 'WALRUS' => 'overridden value' }
|
|
69
|
+
post :trigger, params: { stack_id: @stack.to_param, task_name: 'restart', env: env }
|
|
69
70
|
assert_response :accepted
|
|
70
71
|
|
|
71
72
|
# FOO and BAR are variables with a default value
|
|
@@ -78,14 +79,14 @@ module Shipit
|
|
|
78
79
|
end
|
|
79
80
|
|
|
80
81
|
test "#trigger returns a 404 when the task doesn't exist" do
|
|
81
|
-
post :trigger, params: {stack_id: @stack.to_param, task_name: 'doesnt_exist'}
|
|
82
|
+
post :trigger, params: { stack_id: @stack.to_param, task_name: 'doesnt_exist' }
|
|
82
83
|
assert_response :not_found
|
|
83
84
|
end
|
|
84
85
|
|
|
85
86
|
test "#trigger returns 409 when a task is already running" do
|
|
86
87
|
shipit_deploys(:shipit_running).update!(allow_concurrency: false, status: 'running')
|
|
87
88
|
assert_predicate @stack, :active_task?
|
|
88
|
-
post :trigger, params: {stack_id: @stack.to_param, task_name: 'restart'}
|
|
89
|
+
post :trigger, params: { stack_id: @stack.to_param, task_name: 'restart' }
|
|
89
90
|
assert_response :conflict
|
|
90
91
|
assert_json 'message', 'A task is already running.'
|
|
91
92
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
|
|
2
3
|
require 'test_helper'
|
|
3
4
|
|
|
@@ -42,8 +43,8 @@ module Shipit
|
|
|
42
43
|
api_client: {
|
|
43
44
|
name: 'walrus_app',
|
|
44
45
|
permissions: [
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
'read:stack',
|
|
47
|
+
'lock:stack',
|
|
47
48
|
],
|
|
48
49
|
},
|
|
49
50
|
}
|
|
@@ -68,7 +69,7 @@ module Shipit
|
|
|
68
69
|
|
|
69
70
|
test "#create when not valid renders new" do
|
|
70
71
|
assert_no_difference "Stack.count" do
|
|
71
|
-
post :create, params: {api_client: {name: 'walrus_app', permissions: ['invalid']}}
|
|
72
|
+
post :create, params: { api_client: { name: 'walrus_app', permissions: ['invalid'] } }
|
|
72
73
|
end
|
|
73
74
|
|
|
74
75
|
assert flash[:warning]
|
|
@@ -76,7 +77,7 @@ module Shipit
|
|
|
76
77
|
end
|
|
77
78
|
|
|
78
79
|
test "#show is success" do
|
|
79
|
-
get :show, params: {id: @api_client.id}
|
|
80
|
+
get :show, params: { id: @api_client.id }
|
|
80
81
|
assert_response :ok
|
|
81
82
|
end
|
|
82
83
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'uri'
|
|
2
3
|
require 'test_helper'
|
|
3
4
|
|
|
@@ -10,7 +11,7 @@ module Shipit
|
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
test ":fetch returns ok with json" do
|
|
13
|
-
get :fetch, params: {stack_id: @stack.to_param}
|
|
14
|
+
get :fetch, params: { stack_id: @stack.to_param }
|
|
14
15
|
assert_response :ok
|
|
15
16
|
data = JSON.parse(response.body)
|
|
16
17
|
assert_includes data, 'ccmenu_url'
|
|
@@ -18,12 +19,12 @@ module Shipit
|
|
|
18
19
|
|
|
19
20
|
test ":fetch creates a read only api client" do
|
|
20
21
|
assert_difference 'ApiClient.count' do
|
|
21
|
-
get :fetch, params: {stack_id: @stack.to_param}
|
|
22
|
+
get :fetch, params: { stack_id: @stack.to_param }
|
|
22
23
|
end
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
test ":fetch url includes api token on query string" do
|
|
26
|
-
get :fetch, params: {stack_id: @stack.to_param}
|
|
27
|
+
get :fetch, params: { stack_id: @stack.to_param }
|
|
27
28
|
data = JSON.parse(response.body)
|
|
28
29
|
client = ApiClient.last
|
|
29
30
|
query = Rack::Utils.parse_nested_query(URI(data['ccmenu_url']).query)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
module Shipit
|
|
@@ -12,7 +13,7 @@ module Shipit
|
|
|
12
13
|
end
|
|
13
14
|
|
|
14
15
|
test ":tail is success" do
|
|
15
|
-
get :tail, params: {stack_id: @stack.to_param, sha: @commit.sha}
|
|
16
|
+
get :tail, params: { stack_id: @stack.to_param, sha: @commit.sha }
|
|
16
17
|
assert_response :success
|
|
17
18
|
assert_json 'output', 'foobar'
|
|
18
19
|
assert_json 'url', stack_tail_commit_checks_path(@stack, sha: @commit.sha, since: 6)
|
|
@@ -21,14 +22,14 @@ module Shipit
|
|
|
21
22
|
|
|
22
23
|
test ":tail doesn't provide another url if the task is finished" do
|
|
23
24
|
@checks.status = 'success'
|
|
24
|
-
get :tail, params: {stack_id: @stack.to_param, sha: @commit.sha}
|
|
25
|
+
get :tail, params: { stack_id: @stack.to_param, sha: @commit.sha }
|
|
25
26
|
assert_response :success
|
|
26
27
|
assert_json 'url', nil
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
test ":tail returns only the output after the provided offset" do
|
|
30
31
|
@checks.status = 'success'
|
|
31
|
-
get :tail, params: {stack_id: @stack.to_param, sha: @commit.sha, since: 5}
|
|
32
|
+
get :tail, params: { stack_id: @stack.to_param, sha: @commit.sha, since: 5 }
|
|
32
33
|
assert_response :success
|
|
33
34
|
assert_json 'output', 'r'
|
|
34
35
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
module Shipit
|
|
@@ -15,7 +16,7 @@ module Shipit
|
|
|
15
16
|
patch(:update, params: {
|
|
16
17
|
stack_id: @stack.to_param,
|
|
17
18
|
id: @commit.id,
|
|
18
|
-
commit: {locked: true},
|
|
19
|
+
commit: { locked: true },
|
|
19
20
|
})
|
|
20
21
|
|
|
21
22
|
assert_response(:ok)
|
|
@@ -30,7 +31,7 @@ module Shipit
|
|
|
30
31
|
patch(:update, params: {
|
|
31
32
|
stack_id: @stack.to_param,
|
|
32
33
|
id: @commit.id,
|
|
33
|
-
commit: {locked: false},
|
|
34
|
+
commit: { locked: false },
|
|
34
35
|
})
|
|
35
36
|
|
|
36
37
|
assert_response(:ok)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'test_helper'
|
|
2
3
|
|
|
3
4
|
module Shipit
|
|
@@ -12,30 +13,30 @@ module Shipit
|
|
|
12
13
|
end
|
|
13
14
|
|
|
14
15
|
test ":show is success" do
|
|
15
|
-
get :show, params: {stack_id: @stack.to_param, id: @stack.deploys.last.id}
|
|
16
|
+
get :show, params: { stack_id: @stack.to_param, id: @stack.deploys.last.id }
|
|
16
17
|
assert_response :success
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
test "deploys can be observed as raw text" do
|
|
20
|
-
get :show, params: {stack_id: @stack, id: @deploy.id, format: 'txt'}
|
|
21
|
+
get :show, params: { stack_id: @stack, id: @deploy.id, format: 'txt' }
|
|
21
22
|
assert_response :success
|
|
22
23
|
assert_equal("text/plain", @response.media_type)
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
test ":new is success" do
|
|
26
|
-
get :new, params: {stack_id: @stack.to_param, sha: @commit.sha}
|
|
27
|
+
get :new, params: { stack_id: @stack.to_param, sha: @commit.sha }
|
|
27
28
|
assert_response :success
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
test ":new works for not yet deployed stacks" do
|
|
31
32
|
@stack = shipit_stacks(:undeployed_stack)
|
|
32
|
-
get :new, params: {stack_id: @stack.to_param, sha: @stack.commits.last.sha}
|
|
33
|
+
get :new, params: { stack_id: @stack.to_param, sha: @stack.commits.last.sha }
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
test ":new shows a warning if a deploy is already running" do
|
|
36
37
|
shipit_deploys(:shipit_running).update!(allow_concurrency: false, status: 'running')
|
|
37
38
|
|
|
38
|
-
get :new, params: {stack_id: @stack.to_param, sha: @commit.sha}
|
|
39
|
+
get :new, params: { stack_id: @stack.to_param, sha: @commit.sha }
|
|
39
40
|
assert_response :success
|
|
40
41
|
assert_select '.warning.concurrent-deploy h2' do |elements|
|
|
41
42
|
assert_equal 'Lando Walrussian is already deploying!', elements.first.text
|
|
@@ -43,21 +44,31 @@ module Shipit
|
|
|
43
44
|
assert_select '#new_deploy #force', 1
|
|
44
45
|
end
|
|
45
46
|
|
|
47
|
+
test ":new selects default value" do
|
|
48
|
+
@stack = shipit_stacks(:shipit_undeployed)
|
|
49
|
+
get :new, params: { stack_id: @stack.to_param, sha: @stack.commits.last.sha }
|
|
50
|
+
assert_response :success
|
|
51
|
+
|
|
52
|
+
assert_select '.variables-fields option[selected=selected]' do |elements|
|
|
53
|
+
assert_equal 'us-central', elements.first.text
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
46
57
|
test ":create persists a new deploy" do
|
|
47
58
|
assert_difference '@stack.deploys.count', 1 do
|
|
48
|
-
post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}}
|
|
59
|
+
post :create, params: { stack_id: @stack.to_param, deploy: { until_commit_id: @commit.id } }
|
|
49
60
|
end
|
|
50
61
|
end
|
|
51
62
|
|
|
52
63
|
test ":create can receive an :env hash" do
|
|
53
|
-
env = {'SAFETY_DISABLED' => '1'}
|
|
54
|
-
post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: env}}
|
|
64
|
+
env = { 'SAFETY_DISABLED' => '1' }
|
|
65
|
+
post :create, params: { stack_id: @stack.to_param, deploy: { until_commit_id: @commit.id, env: env } }
|
|
55
66
|
new_deploy = Deploy.last
|
|
56
67
|
assert_equal env, new_deploy.env
|
|
57
68
|
end
|
|
58
69
|
|
|
59
70
|
test ":create ignore :env keys not declared in the deploy spec" do
|
|
60
|
-
post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: {'H4X0R' => '1'}}}
|
|
71
|
+
post :create, params: { stack_id: @stack.to_param, deploy: { until_commit_id: @commit.id, env: { 'H4X0R' => '1' } } }
|
|
61
72
|
new_deploy = Deploy.last
|
|
62
73
|
assert_equal({}, new_deploy.env)
|
|
63
74
|
end
|
|
@@ -66,7 +77,7 @@ module Shipit
|
|
|
66
77
|
shipit_deploys(:shipit_running).update_column(:status, 'running')
|
|
67
78
|
|
|
68
79
|
assert_difference '@stack.deploys.count', 1 do
|
|
69
|
-
post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}, force: 'true'}
|
|
80
|
+
post :create, params: { stack_id: @stack.to_param, deploy: { until_commit_id: @commit.id }, force: 'true' }
|
|
70
81
|
end
|
|
71
82
|
end
|
|
72
83
|
|
|
@@ -74,26 +85,26 @@ module Shipit
|
|
|
74
85
|
shipit_deploys(:shipit_running).update!(allow_concurrency: false, status: 'running')
|
|
75
86
|
|
|
76
87
|
assert_no_difference '@stack.deploys.count' do
|
|
77
|
-
post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}}
|
|
88
|
+
post :create, params: { stack_id: @stack.to_param, deploy: { until_commit_id: @commit.id } }
|
|
78
89
|
end
|
|
79
90
|
assert_redirected_to new_stack_deploy_path(@stack, sha: @commit.sha)
|
|
80
91
|
end
|
|
81
92
|
|
|
82
93
|
test ":create redirects to the new deploy" do
|
|
83
|
-
post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}}
|
|
94
|
+
post :create, params: { stack_id: @stack.to_param, deploy: { until_commit_id: @commit.id } }
|
|
84
95
|
new_deploy = Deploy.last
|
|
85
96
|
assert_redirected_to stack_deploy_path(@stack, new_deploy)
|
|
86
97
|
end
|
|
87
98
|
|
|
88
99
|
test ":rollback is success" do
|
|
89
|
-
get :rollback, params: {stack_id: @stack.to_param, id: @deploy.id}
|
|
100
|
+
get :rollback, params: { stack_id: @stack.to_param, id: @deploy.id }
|
|
90
101
|
assert_response :success
|
|
91
102
|
end
|
|
92
103
|
|
|
93
104
|
test ":rollback shows a warning if a deploy is already running" do
|
|
94
105
|
shipit_deploys(:shipit_running).update!(allow_concurrency: false, status: 'running')
|
|
95
106
|
|
|
96
|
-
get :rollback, params: {stack_id: @stack.to_param, id: @deploy.id}
|
|
107
|
+
get :rollback, params: { stack_id: @stack.to_param, id: @deploy.id }
|
|
97
108
|
assert_response :success
|
|
98
109
|
assert_select '.warning.concurrent-deploy h2' do |elements|
|
|
99
110
|
assert_equal 'Lando Walrussian is already deploying!', elements.first.text
|
|
@@ -118,13 +129,13 @@ module Shipit
|
|
|
118
129
|
|
|
119
130
|
rollback_commit = @stack.commits.where(id: 2).first
|
|
120
131
|
|
|
121
|
-
get :show, params: {stack_id: @stack, id: latest_deploy.id, format: 'html'}
|
|
132
|
+
get :show, params: { stack_id: @stack, id: latest_deploy.id, format: 'html' }
|
|
122
133
|
|
|
123
134
|
expected_result = "Abort and Rollback to <span class=\"short-sha-no-bg\">#{rollback_commit.short_sha}</span>"
|
|
124
135
|
expected_rolling_back_element = "Aborting with Rollback... to <span class=\"short-sha-no-bg\">#{rollback_commit.short_sha}</span>"
|
|
125
136
|
|
|
126
|
-
assert_select 'span.caption--ready', {html: expected_result}, "rollback button element was not found, or did not match the expected result of '#{expected_result}'"
|
|
127
|
-
assert_select 'span.caption--pending', {html: expected_rolling_back_element}, "ready rollback button element was not found, or did not match the expected result of '#{expected_rolling_back_element}'"
|
|
137
|
+
assert_select 'span.caption--ready', { html: expected_result }, "rollback button element was not found, or did not match the expected result of '#{expected_result}'"
|
|
138
|
+
assert_select 'span.caption--pending', { html: expected_rolling_back_element }, "ready rollback button element was not found, or did not match the expected result of '#{expected_rolling_back_element}'"
|
|
128
139
|
end
|
|
129
140
|
|
|
130
141
|
test ":rollback (regression) works correctly when a previous deploy is not found" do
|
|
@@ -140,17 +151,17 @@ module Shipit
|
|
|
140
151
|
|
|
141
152
|
rollback_commit = @stack.commits.where(id: rollback_commit_id).take
|
|
142
153
|
|
|
143
|
-
get :show, params: {stack_id: @stack, id: latest_deploy.id, format: 'html'}
|
|
154
|
+
get :show, params: { stack_id: @stack, id: latest_deploy.id, format: 'html' }
|
|
144
155
|
|
|
145
156
|
expected_result = "Abort and Rollback to <span class=\"short-sha-no-bg\">#{rollback_commit.short_sha}</span>"
|
|
146
157
|
expected_rolling_back_element = "Aborting with Rollback... to <span class=\"short-sha-no-bg\">#{rollback_commit.short_sha}</span>"
|
|
147
158
|
|
|
148
|
-
assert_select 'span.caption--ready', {html: expected_result}, "rollback button element was not found, or did not match the expected result of '#{expected_result}'"
|
|
149
|
-
assert_select 'span.caption--pending', {html: expected_rolling_back_element}, "ready rollback button element was not found, or did not match the expected result of '#{expected_rolling_back_element}'"
|
|
159
|
+
assert_select 'span.caption--ready', { html: expected_result }, "rollback button element was not found, or did not match the expected result of '#{expected_result}'"
|
|
160
|
+
assert_select 'span.caption--pending', { html: expected_rolling_back_element }, "ready rollback button element was not found, or did not match the expected result of '#{expected_rolling_back_element}'"
|
|
150
161
|
end
|
|
151
162
|
|
|
152
163
|
test ":revert redirect to the proper rollback page" do
|
|
153
|
-
get :revert, params: {stack_id: @stack.to_param, id: shipit_deploys(:shipit2).id}
|
|
164
|
+
get :revert, params: { stack_id: @stack.to_param, id: shipit_deploys(:shipit2).id }
|
|
154
165
|
assert_redirected_to rollback_stack_deploy_path(@stack, shipit_deploys(:shipit))
|
|
155
166
|
end
|
|
156
167
|
end
|