shipit-engine 0.11.0 → 0.12.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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +41 -37
  3. data/app/assets/javascripts/task/tty.js.coffee +40 -22
  4. data/app/assets/stylesheets/_pages/_deploy.scss +1 -0
  5. data/app/controllers/shipit/api/locks_controller.rb +3 -3
  6. data/app/controllers/shipit/api/stacks_controller.rb +14 -1
  7. data/app/controllers/shipit/commit_checks_controller.rb +9 -2
  8. data/app/controllers/shipit/shipit_controller.rb +1 -1
  9. data/app/controllers/shipit/stacks_controller.rb +11 -5
  10. data/app/controllers/shipit/status_controller.rb +1 -1
  11. data/app/controllers/shipit/webhooks_controller.rb +15 -5
  12. data/app/helpers/shipit/deploys_helper.rb +1 -1
  13. data/app/helpers/shipit/shipit_helper.rb +2 -0
  14. data/app/jobs/shipit/perform_commit_checks_job.rb +2 -0
  15. data/app/jobs/shipit/perform_task_job.rb +18 -8
  16. data/app/models/shipit/commit.rb +22 -12
  17. data/app/models/shipit/commit_checks.rb +20 -53
  18. data/app/models/shipit/deploy.rb +1 -1
  19. data/app/models/shipit/ephemeral_commit_checks.rb +76 -0
  20. data/app/models/shipit/stack.rb +40 -10
  21. data/app/models/shipit/status.rb +14 -8
  22. data/app/models/shipit/status_group.rb +1 -1
  23. data/app/models/shipit/task.rb +2 -0
  24. data/app/models/shipit/unknown_status.rb +4 -0
  25. data/app/models/shipit/user.rb +9 -1
  26. data/app/serializers/shipit/stack_serializer.rb +6 -1
  27. data/app/views/shipit/commit_checks/_checks.html.erb +13 -0
  28. data/app/views/shipit/commit_checks/show.html.erb +5 -0
  29. data/app/views/shipit/stacks/_header.html.erb +1 -1
  30. data/app/views/shipit/stacks/show.html.erb +15 -0
  31. data/config/routes.rb +2 -1
  32. data/db/migrate/20140226233935_create_baseline.rb +10 -10
  33. data/db/migrate/20160802092812_add_continuous_delivery_delayed_since_to_stacks.rb +5 -0
  34. data/db/migrate/20160822131405_add_locked_since_to_stacks.rb +5 -0
  35. data/lib/shipit.rb +4 -0
  36. data/lib/shipit/command.rb +1 -1
  37. data/lib/shipit/commands.rb +10 -7
  38. data/lib/shipit/csv_serializer.rb +1 -1
  39. data/lib/shipit/stack_commands.rb +17 -5
  40. data/lib/shipit/task_commands.rb +2 -2
  41. data/lib/shipit/version.rb +1 -1
  42. data/lib/snippets/push-to-heroku +20 -16
  43. data/test/controllers/api/deploys_controller_test.rb +8 -8
  44. data/test/controllers/api/hooks_controller_test.rb +11 -9
  45. data/test/controllers/api/locks_controller_test.rb +16 -6
  46. data/test/controllers/api/outputs_controller_test.rb +1 -1
  47. data/test/controllers/api/stacks_controller_test.rb +48 -3
  48. data/test/controllers/api/tasks_controller_test.rb +6 -6
  49. data/test/controllers/commit_checks_controller_test.rb +3 -3
  50. data/test/controllers/deploys_controller_test.rb +13 -13
  51. data/test/controllers/rollbacks_controller_test.rb +7 -7
  52. data/test/controllers/stacks_controller_test.rb +36 -29
  53. data/test/controllers/tasks_controller_test.rb +14 -14
  54. data/test/controllers/webhooks_controller_test.rb +16 -25
  55. data/test/dummy/config/application.rb +0 -3
  56. data/test/dummy/config/environments/test.rb +2 -2
  57. data/test/dummy/data/stacks/byroot/junk/production/git/bar.txt +2 -0
  58. data/test/dummy/data/stacks/byroot/junk/production/git/bin/slow +7 -0
  59. data/test/dummy/data/stacks/byroot/junk/production/git/bin/timeout +10 -0
  60. data/test/dummy/data/stacks/byroot/junk/production/git/dkfdsf +0 -0
  61. data/test/dummy/data/stacks/byroot/junk/production/git/dskjfsd +0 -0
  62. data/test/dummy/data/stacks/byroot/junk/production/git/dslkjfjsdf +0 -0
  63. data/test/dummy/data/stacks/byroot/junk/production/git/plopfizz +0 -0
  64. data/test/dummy/data/stacks/byroot/junk/production/git/sd +0 -0
  65. data/test/dummy/data/stacks/byroot/junk/production/git/sdkfjsdf +1 -0
  66. data/test/dummy/data/stacks/byroot/junk/production/git/sdlfjsdfdsfj +0 -0
  67. data/test/dummy/data/stacks/byroot/junk/production/git/sdlkfjsdlkfjsdlkfjdsfsdfksdfjsldkfjsdlkfjsdf +0 -0
  68. data/test/dummy/data/stacks/byroot/junk/production/git/shipit.yml +21 -0
  69. data/test/dummy/data/stacks/byroot/junk/production/git/toto.txt +2 -0
  70. data/test/dummy/db/development.sqlite3 +0 -0
  71. data/test/dummy/db/schema.rb +15 -13
  72. data/test/dummy/db/test.sqlite3 +0 -0
  73. data/test/fixtures/shipit/commit_deployments.yml +8 -8
  74. data/test/fixtures/shipit/output_chunks.yml +12 -12
  75. data/test/fixtures/shipit/tasks.yml +9 -1
  76. data/test/fixtures/shipit/users.yml +9 -2
  77. data/test/jobs/perform_task_job_test.rb +14 -11
  78. data/test/models/commits_test.rb +33 -14
  79. data/test/models/stacks_test.rb +78 -4
  80. data/test/models/users_test.rb +16 -0
  81. data/test/unit/commands_test.rb +4 -0
  82. data/test/unit/deploy_commands_test.rb +1 -1
  83. metadata +133 -34
  84. data/app/jobs/shipit/git_mirror_update_job.rb +0 -14
  85. data/app/views/shipit/deploys/_checks.html.erb +0 -11
@@ -12,7 +12,7 @@ module Shipit
12
12
 
13
13
  test "#create triggers a new deploy for the stack" do
14
14
  assert_difference -> { @stack.deploys.count }, 1 do
15
- post :create, stack_id: @stack.to_param, sha: @commit.sha
15
+ post :create, params: {stack_id: @stack.to_param, sha: @commit.sha}
16
16
  end
17
17
  assert_response :accepted
18
18
  assert_json 'status', 'pending'
@@ -20,7 +20,7 @@ module Shipit
20
20
 
21
21
  test "#create triggers a new deploy for whitelisted variables" do
22
22
  correct_env = {'SAFETY_DISABLED' => 1}
23
- post :create, stack_id: @stack.to_param, sha: @commit.sha, env: correct_env
23
+ post :create, params: {stack_id: @stack.to_param, sha: @commit.sha, env: correct_env}
24
24
  assert_response :accepted
25
25
  assert_json 'type', 'deploy'
26
26
  assert_json 'status', 'pending'
@@ -28,26 +28,26 @@ module Shipit
28
28
 
29
29
  test "#create refuses to trigger a new deploy with incorrect variables" do
30
30
  incorrect_env = {'DANGEROUS_VARIABLE' => 1}
31
- post :create, stack_id: @stack.to_param, sha: @commit.sha, env: incorrect_env
31
+ post :create, params: {stack_id: @stack.to_param, sha: @commit.sha, env: incorrect_env}
32
32
  assert_response :unprocessable_entity
33
33
  assert_json 'message', 'Variables DANGEROUS_VARIABLE have not been whitelisted'
34
34
  end
35
35
 
36
36
  test "#create use the claimed user as author" do
37
37
  request.headers['X-Shipit-User'] = @user.login
38
- post :create, stack_id: @stack.to_param, sha: @commit.sha
38
+ post :create, params: {stack_id: @stack.to_param, sha: @commit.sha}
39
39
  deploy = Deploy.last
40
40
  deploy.user == @user
41
41
  end
42
42
 
43
43
  test "#create renders a 422 if the sha isn't found" do
44
- post :create, stack_id: @stack.to_param, sha: '123443543545'
44
+ post :create, params: {stack_id: @stack.to_param, sha: '123443543545'}
45
45
  assert_response :unprocessable_entity
46
46
  assert_json 'errors', 'sha' => ['Unknown revision']
47
47
  end
48
48
 
49
49
  test "#create renders a 422 if the sha format is invalid" do
50
- post :create, stack_id: @stack.to_param, sha: '1'
50
+ post :create, params: {stack_id: @stack.to_param, sha: '1'}
51
51
  assert_response :unprocessable_entity
52
52
  assert_json 'errors', 'sha' => ['is too short (minimum is 6 characters)']
53
53
  end
@@ -56,7 +56,7 @@ module Shipit
56
56
  @stack.update!(lock_reason: 'Something broken')
57
57
 
58
58
  assert_no_difference -> { @stack.deploys.count } do
59
- post :create, stack_id: @stack.to_param, sha: @commit.sha
59
+ post :create, params: {stack_id: @stack.to_param, sha: @commit.sha}
60
60
  end
61
61
  assert_response :unprocessable_entity
62
62
  assert_json 'errors.force', ["Can't deploy a locked stack"]
@@ -66,7 +66,7 @@ module Shipit
66
66
  @stack.update!(lock_reason: 'Something broken')
67
67
 
68
68
  assert_difference -> { @stack.deploys.count }, 1 do
69
- post :create, stack_id: @stack.to_param, sha: @commit.sha, force: true
69
+ post :create, params: {stack_id: @stack.to_param, sha: @commit.sha, force: 'true'}
70
70
  end
71
71
  assert_response :accepted
72
72
  assert_json 'status', 'pending'
@@ -26,7 +26,7 @@ module Shipit
26
26
  test "#index with a stack_id returns the list of scoped hooks" do
27
27
  hook = Hook.scoped_to(@stack).first
28
28
 
29
- get :index, stack_id: @stack.to_param
29
+ get :index, params: {stack_id: @stack.to_param}
30
30
  assert_response :ok
31
31
  assert_json '0.id', hook.id
32
32
  assert_json '0.delivery_url', hook.delivery_url
@@ -37,7 +37,7 @@ module Shipit
37
37
  test "#show returns the hooks" do
38
38
  hook = Hook.scoped_to(@stack).first
39
39
 
40
- get :show, stack_id: @stack.to_param, id: hook.id
40
+ get :show, params: {stack_id: @stack.to_param, id: hook.id}
41
41
  assert_response :ok
42
42
 
43
43
  assert_json 'id', hook.id
@@ -48,7 +48,7 @@ module Shipit
48
48
 
49
49
  test "#create adds a new hook" do
50
50
  assert_difference -> { Hook.count }, 1 do
51
- post :create, delivery_url: 'https://example.com/hook', events: %w(deploy rollback)
51
+ post :create, params: {delivery_url: 'https://example.com/hook', events: %w(deploy rollback)}
52
52
  end
53
53
  hook = Hook.last
54
54
  assert_json 'delivery_url', 'https://example.com/hook'
@@ -57,28 +57,30 @@ module Shipit
57
57
  end
58
58
 
59
59
  test "#create do not allow to set protected attributes" do
60
- post :create, delivery_url: 'https://example.com/hook',
61
- events: %w(deploy rollback),
62
- created_at: 2.months.ago.to_s(:db)
60
+ post :create, params: {
61
+ delivery_url: 'https://example.com/hook',
62
+ events: %w(deploy rollback),
63
+ created_at: 2.months.ago.to_s(:db),
64
+ }
63
65
  Hook.last.created_at > 2.seconds.ago
64
66
  end
65
67
 
66
68
  test "#create returns validation errors" do
67
- post :create, delivery_url: '../etc/passwd', events: %w(deploy)
69
+ post :create, params: {delivery_url: '../etc/passwd', events: %w(deploy)}
68
70
  assert_response :unprocessable_entity
69
71
  assert_json 'errors', 'delivery_url' => ['is not a valid URL']
70
72
  end
71
73
 
72
74
  test "#update changes an existing hook" do
73
75
  hook = Hook.global.first
74
- patch :update, id: hook.id, delivery_url: 'https://shipit.com/'
76
+ patch :update, params: {id: hook.id, delivery_url: 'https://shipit.com/'}
75
77
  assert_response :ok
76
78
  assert_json 'delivery_url', 'https://shipit.com/'
77
79
  end
78
80
 
79
81
  test "#destroy removes an existing hook" do
80
82
  hook = Hook.global.first
81
- delete :destroy, id: hook.id
83
+ delete :destroy, params: {id: hook.id}
82
84
  assert_response :no_content
83
85
  end
84
86
  end
@@ -9,20 +9,21 @@ module Shipit
9
9
  end
10
10
 
11
11
  test "#create sets a lock" do
12
- post :create, stack_id: @stack.to_param, reason: 'Just for fun!'
12
+ post :create, params: {stack_id: @stack.to_param, reason: 'Just for fun!'}
13
13
  assert_response :ok
14
14
  assert_json 'is_locked', true
15
15
  assert_json 'lock_reason', 'Just for fun!'
16
+ assert_json { |json| assert_not_nil json['locked_since'] }
16
17
  end
17
18
 
18
19
  test "#create fails if already locked" do
19
20
  @stack.update!(lock_reason: "Don't forget me")
20
- post :create, stack_id: @stack.to_param, reason: 'Just for fun!'
21
+ post :create, params: {stack_id: @stack.to_param, reason: 'Just for fun!'}
21
22
  assert_response :conflict
22
23
  end
23
24
 
24
25
  test "#update sets a lock" do
25
- put :update, stack_id: @stack.to_param, reason: 'Just for fun!'
26
+ put :update, params: {stack_id: @stack.to_param, reason: 'Just for fun!'}
26
27
  assert_response :ok
27
28
  assert_json 'is_locked', true
28
29
  assert_json 'lock_reason', 'Just for fun!'
@@ -30,17 +31,26 @@ module Shipit
30
31
 
31
32
  test "#update can override a previous lock" do
32
33
  @stack.update!(lock_reason: 'Meh...')
33
- put :update, stack_id: @stack.to_param, reason: 'Just for fun!'
34
+ put :update, params: {stack_id: @stack.to_param, reason: 'Just for fun!'}
34
35
  assert_response :ok
35
36
  assert_json 'is_locked', true
36
37
  assert_json 'lock_reason', 'Just for fun!'
37
38
  end
38
39
 
40
+ test "#update does not override previous locked_since" do
41
+ since = Time.current.round
42
+ @stack.update!(lock_reason: 'Meh...', locked_since: since)
43
+ put :update, params: {stack_id: @stack.to_param, reason: 'Just for fun!'}
44
+ assert_response :ok
45
+ assert_json 'locked_since', since.utc.iso8601(3)
46
+ end
47
+
39
48
  test "#destroy clears the lock" do
40
- @stack.update!(lock_reason: 'Meh...')
41
- delete :destroy, stack_id: @stack.to_param
49
+ @stack.update!(lock_reason: 'Meh...', locked_since: Time.current)
50
+ delete :destroy, params: {stack_id: @stack.to_param}
42
51
  assert_response :ok
43
52
  assert_json 'is_locked', false
53
+ assert_json { |json| assert_nil json['locked_since'] }
44
54
  end
45
55
  end
46
56
  end
@@ -11,7 +11,7 @@ module Shipit
11
11
  test "#show returns the task output as plain text" do
12
12
  task = @stack.tasks.last
13
13
 
14
- get :show, stack_id: @stack.to_param, task_id: task.id
14
+ get :show, params: {stack_id: @stack.to_param, task_id: task.id}
15
15
  assert_response :ok
16
16
  assert_equal 'text/plain', response.content_type
17
17
  assert_equal task.chunk_output, response.body
@@ -8,6 +8,51 @@ module Shipit
8
8
  @stack = shipit_stacks(:shipit)
9
9
  end
10
10
 
11
+ test "#create fails with insufficient permissions" do
12
+ @client.permissions.delete('write:stack')
13
+ @client.save!
14
+
15
+ assert_no_difference 'Stack.count' do
16
+ post :create, params: {repo_name: 'rails', repo_owner: 'rails', environment: 'staging', branch: 'staging'}
17
+ end
18
+
19
+ assert_response :forbidden
20
+ assert_json 'message', 'This operation requires the `write:stack` permission'
21
+ end
22
+
23
+ test "#create fails with invalid stack" do
24
+ assert_no_difference "Stack.count" do
25
+ post :create, params: {repo_owner: 'some', repo_name: 'owner/path'}
26
+ end
27
+ assert_response :unprocessable_entity
28
+ assert_json 'errors', 'repo_name' => ['is invalid']
29
+ end
30
+
31
+ test "#create creates a stack and renders it back" do
32
+ assert_difference -> { Stack.count } do
33
+ post :create, params: {repo_name: 'rails', repo_owner: 'rails', environment: 'staging', branch: 'staging'}
34
+ end
35
+
36
+ assert_response :ok
37
+ assert_json 'id', Stack.last.id
38
+ end
39
+
40
+ test "#create fails to create stack if it already exists" do
41
+ Stack.create!(
42
+ repo_name: 'rails',
43
+ repo_owner: 'rails',
44
+ environment: 'staging',
45
+ branch: 'staging',
46
+ )
47
+
48
+ assert_no_difference -> { Stack.count } do
49
+ post :create, params: {repo_name: 'rails', repo_owner: 'rails', environment: 'staging', branch: 'staging'}
50
+ end
51
+
52
+ assert_response :unprocessable_entity
53
+ assert_json 'errors', 'repo_name' => ['cannot be used more than once with this environment']
54
+ end
55
+
11
56
  test "#index returns a list of stacks" do
12
57
  stack = Stack.last
13
58
 
@@ -20,7 +65,7 @@ module Shipit
20
65
  end
21
66
 
22
67
  test "#index is paginable" do
23
- get :index, page_size: 1
68
+ get :index, params: {page_size: 1}
24
69
  assert_json do |list|
25
70
  assert_instance_of Array, list
26
71
  assert_equal 1, list.size
@@ -32,7 +77,7 @@ module Shipit
32
77
  end
33
78
 
34
79
  test "the `next` link is not provided when the last page is reached" do
35
- get :index, page_size: Stack.count
80
+ get :index, params: {page_size: Stack.count}
36
81
  assert_no_link 'next'
37
82
  end
38
83
 
@@ -52,7 +97,7 @@ module Shipit
52
97
  end
53
98
 
54
99
  test "#show renders the stack" do
55
- get :show, id: @stack.to_param
100
+ get :show, params: {id: @stack.to_param}
56
101
  assert_response :ok
57
102
  assert_json 'id', @stack.id
58
103
  end
@@ -11,7 +11,7 @@ module Shipit
11
11
  test "#index returns a list of tasks" do
12
12
  task = @stack.tasks.last
13
13
 
14
- get :index, stack_id: @stack.to_param
14
+ get :index, params: {stack_id: @stack.to_param}
15
15
  assert_response :ok
16
16
  assert_json '0.id', task.id
17
17
  end
@@ -19,13 +19,13 @@ module Shipit
19
19
  test "#show returns a task" do
20
20
  task = @stack.tasks.last
21
21
 
22
- get :show, stack_id: @stack.to_param, id: task.id
22
+ get :show, params: {stack_id: @stack.to_param, id: task.id}
23
23
  assert_response :ok
24
24
  assert_json 'id', task.id
25
25
  end
26
26
 
27
27
  test "#trigger triggers a custom task" do
28
- post :trigger, stack_id: @stack.to_param, task_name: 'restart'
28
+ post :trigger, params: {stack_id: @stack.to_param, task_name: 'restart'}
29
29
  assert_response :accepted
30
30
  assert_json 'type', 'task'
31
31
  assert_json 'status', 'pending'
@@ -33,21 +33,21 @@ module Shipit
33
33
 
34
34
  test "#trigger refuses to trigger a task with tasks not whitelisted" do
35
35
  env = {'DANGEROUS_VARIABLE' => 'bar'}
36
- post :trigger, stack_id: @stack.to_param, task_name: 'restart', env: env
36
+ post :trigger, params: {stack_id: @stack.to_param, task_name: 'restart', env: env}
37
37
  assert_response :unprocessable_entity
38
38
  assert_json 'message', 'Variables DANGEROUS_VARIABLE have not been whitelisted'
39
39
  end
40
40
 
41
41
  test "#trigger triggers a task with only whitelisted env variables" do
42
42
  env = {'FOO' => 'bar'}
43
- post :trigger, stack_id: @stack.to_param, task_name: 'restart', env: env
43
+ post :trigger, params: {stack_id: @stack.to_param, task_name: 'restart', env: env}
44
44
  assert_response :accepted
45
45
  assert_json 'type', 'task'
46
46
  assert_json 'status', 'pending'
47
47
  end
48
48
 
49
49
  test "#trigger returns a 404 when the task doesn't exist" do
50
- post :trigger, stack_id: @stack.to_param, task_name: 'doesnt_exist'
50
+ post :trigger, params: {stack_id: @stack.to_param, task_name: 'doesnt_exist'}
51
51
  assert_response :not_found
52
52
  end
53
53
  end
@@ -12,7 +12,7 @@ module Shipit
12
12
  end
13
13
 
14
14
  test ":tail is success" do
15
- get :tail, stack_id: @stack.to_param, sha: @commit.sha
15
+ get :tail, params: {stack_id: @stack.to_param, sha: @commit.sha}
16
16
  assert_response :success
17
17
  assert_json 'output', 'foobar'
18
18
  assert_json 'url', stack_tail_commit_checks_path(@stack, sha: @commit.sha, since: 6)
@@ -21,14 +21,14 @@ module Shipit
21
21
 
22
22
  test ":tail doesn't provide another url if the task is finished" do
23
23
  @checks.status = 'success'
24
- get :tail, stack_id: @stack.to_param, sha: @commit.sha
24
+ get :tail, params: {stack_id: @stack.to_param, sha: @commit.sha}
25
25
  assert_response :success
26
26
  assert_json 'url', nil
27
27
  end
28
28
 
29
29
  test ":tail returns only the output after the provided offset" do
30
30
  @checks.status = 'success'
31
- get :tail, stack_id: @stack.to_param, sha: @commit.sha, since: 5
31
+ get :tail, params: {stack_id: @stack.to_param, sha: @commit.sha, since: 5}
32
32
  assert_response :success
33
33
  assert_json 'output', 'r'
34
34
  end
@@ -11,30 +11,30 @@ module Shipit
11
11
  end
12
12
 
13
13
  test ":show is success" do
14
- get :show, stack_id: @stack.to_param, id: @deploy.id
14
+ get :show, params: {stack_id: @stack.to_param, id: @deploy.id}
15
15
  assert_response :success
16
16
  end
17
17
 
18
18
  test "deploys can be observed as raw text" do
19
- get :show, stack_id: @stack, id: @deploy.id, format: "txt"
19
+ get :show, params: {stack_id: @stack, id: @deploy.id, format: 'txt'}
20
20
  assert_response :success
21
21
  assert_equal("text/plain", @response.content_type)
22
22
  end
23
23
 
24
24
  test ":new is success" do
25
- get :new, stack_id: @stack.to_param, sha: @commit.sha
25
+ get :new, params: {stack_id: @stack.to_param, sha: @commit.sha}
26
26
  assert_response :success
27
27
  end
28
28
 
29
29
  test ":new works for not yet deployed stacks" do
30
30
  @stack = shipit_stacks(:undeployed_stack)
31
- get :new, stack_id: @stack.to_param, sha: @stack.commits.last.sha
31
+ get :new, params: {stack_id: @stack.to_param, sha: @stack.commits.last.sha}
32
32
  end
33
33
 
34
34
  test ":new shows a warning if a deploy is already running" do
35
35
  shipit_deploys(:shipit_running).update_column(:status, 'running')
36
36
 
37
- get :new, stack_id: @stack.to_param, sha: @commit.sha
37
+ get :new, params: {stack_id: @stack.to_param, sha: @commit.sha}
38
38
  assert_response :success
39
39
  assert_select '.warning.concurrent-deploy h2' do |elements|
40
40
  assert_equal 'Lando Walrussian is already deploying!', elements.first.text
@@ -44,19 +44,19 @@ module Shipit
44
44
 
45
45
  test ":create persists a new deploy" do
46
46
  assert_difference '@stack.deploys.count', 1 do
47
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}
47
+ post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}}
48
48
  end
49
49
  end
50
50
 
51
51
  test ":create can receive an :env hash" do
52
52
  env = {'SAFETY_DISABLED' => '1'}
53
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: env}
53
+ post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: env}}
54
54
  new_deploy = Deploy.last
55
55
  assert_equal env, new_deploy.env
56
56
  end
57
57
 
58
58
  test ":create ignore :env keys not declared in the deploy spec" do
59
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: {'H4X0R' => '1'}}
59
+ post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: {'H4X0R' => '1'}}}
60
60
  new_deploy = Deploy.last
61
61
  assert_equal({}, new_deploy.env)
62
62
  end
@@ -65,7 +65,7 @@ module Shipit
65
65
  shipit_deploys(:shipit_running).update_column(:status, 'running')
66
66
 
67
67
  assert_difference '@stack.deploys.count', 1 do
68
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}, force: true
68
+ post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}, force: 'true'}
69
69
  end
70
70
  end
71
71
 
@@ -73,26 +73,26 @@ module Shipit
73
73
  shipit_deploys(:shipit_running).update_column(:status, 'running')
74
74
 
75
75
  assert_no_difference '@stack.deploys.count' do
76
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}
76
+ post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}}
77
77
  end
78
78
  assert_redirected_to new_stack_deploy_path(@stack, sha: @commit.sha)
79
79
  end
80
80
 
81
81
  test ":create redirects to the new deploy" do
82
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}
82
+ post :create, params: {stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}}
83
83
  new_deploy = Deploy.last
84
84
  assert_redirected_to stack_deploy_path(@stack, new_deploy)
85
85
  end
86
86
 
87
87
  test ":rollback is success" do
88
- get :rollback, stack_id: @stack.to_param, id: @deploy.id
88
+ get :rollback, params: {stack_id: @stack.to_param, id: @deploy.id}
89
89
  assert_response :success
90
90
  end
91
91
 
92
92
  test ":rollback shows a warning if a deploy is already running" do
93
93
  shipit_deploys(:shipit_running).update_column(:status, 'running')
94
94
 
95
- get :rollback, stack_id: @stack.to_param, id: @deploy.id
95
+ get :rollback, params: {stack_id: @stack.to_param, id: @deploy.id}
96
96
  assert_response :success
97
97
  assert_select '.warning.concurrent-deploy h2' do |elements|
98
98
  assert_equal 'Lando Walrussian is already deploying!', elements.first.text
@@ -11,37 +11,37 @@ module Shipit
11
11
 
12
12
  test ":create persists a new rollback" do
13
13
  assert_difference '@stack.rollbacks.count', 1 do
14
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
14
+ post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}}
15
15
  end
16
16
  end
17
17
 
18
18
  test ":create can receive an :env hash" do
19
19
  env = {'SAFETY_DISABLED' => '1'}
20
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id, env: env}
20
+ post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id, env: env}}
21
21
  new_rollback = Rollback.last
22
22
  assert_equal env, new_rollback.env
23
23
  end
24
24
 
25
25
  test ":create ignore :env keys not declared in the deploy spec" do
26
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id, env: {'H4X0R' => '1'}}
26
+ post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id, env: {'H4X0R' => '1'}}}
27
27
  new_rollback = Rollback.last
28
28
  assert_equal({}, new_rollback.env)
29
29
  end
30
30
 
31
31
  test ":create redirects to the new deploy" do
32
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
32
+ post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}}
33
33
  assert_redirected_to stack_deploy_path(@stack, Rollback.last)
34
34
  end
35
35
 
36
36
  test ":create locks deploys" do
37
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
37
+ post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}}
38
38
  assert @stack.reload.locked?
39
39
  end
40
40
 
41
41
  test ":create redirects back to the :new page if there is an active deploy" do
42
42
  shipit_deploys(:shipit_running).update_column(:status, 'running')
43
43
  assert_no_difference '@stack.deploys.count' do
44
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
44
+ post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}}
45
45
  end
46
46
  assert_redirected_to rollback_stack_deploy_path(@stack, @deploy)
47
47
  end
@@ -49,7 +49,7 @@ module Shipit
49
49
  test ":create with `force` option ignore the active deploys" do
50
50
  shipit_deploys(:shipit_running).update_column(:status, 'running')
51
51
  assert_difference '@stack.deploys.count', 1 do
52
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}, force: true
52
+ post :create, params: {stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}, force: 'true'}
53
53
  end
54
54
  assert_redirected_to stack_deploy_path(@stack, Rollback.last)
55
55
  end