shipit-engine 0.5.2 → 0.6.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 (274) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/shipit/api/cacheable.rb +13 -0
  3. data/app/controllers/concerns/shipit/api/paginable.rb +37 -0
  4. data/app/controllers/concerns/shipit/api/rendering.rb +25 -0
  5. data/app/controllers/concerns/{api/paginable.rb → shipit/pagination.rb} +5 -13
  6. data/app/controllers/shipit/api/base_controller.rb +68 -0
  7. data/app/controllers/shipit/api/deploys_controller.rb +17 -0
  8. data/app/controllers/shipit/api/hooks_controller.rb +53 -0
  9. data/app/controllers/shipit/api/locks_controller.rb +32 -0
  10. data/app/controllers/shipit/api/outputs_controller.rb +17 -0
  11. data/app/controllers/shipit/api/stacks_controller.rb +21 -0
  12. data/app/controllers/shipit/api/tasks_controller.rb +20 -0
  13. data/app/controllers/shipit/commit_checks_controller.rb +26 -0
  14. data/app/controllers/shipit/deploys_controller.rb +47 -0
  15. data/app/controllers/shipit/github_authentication_controller.rb +27 -0
  16. data/app/controllers/shipit/rollbacks_controller.rb +26 -0
  17. data/app/controllers/shipit/shipit_controller.rb +62 -0
  18. data/app/controllers/shipit/stacks_controller.rb +81 -0
  19. data/app/controllers/shipit/status_controller.rb +7 -0
  20. data/app/controllers/shipit/tasks_controller.rb +48 -0
  21. data/app/controllers/shipit/webhooks_controller.rb +101 -0
  22. data/app/helpers/shipit/chunks_helper.rb +8 -0
  23. data/app/helpers/shipit/deploys_helper.rb +28 -0
  24. data/app/helpers/shipit/github_url_helper.rb +48 -0
  25. data/app/helpers/shipit/shipit_helper.rb +64 -0
  26. data/app/helpers/shipit/stacks_helper.rb +78 -0
  27. data/app/helpers/shipit/tasks_helper.rb +11 -0
  28. data/app/jobs/shipit/background_job.rb +24 -0
  29. data/app/jobs/shipit/background_job/unique.rb +28 -0
  30. data/app/jobs/shipit/cache_deploy_spec_job.rb +12 -0
  31. data/app/jobs/shipit/chunk_rollup_job.rb +21 -0
  32. data/app/jobs/shipit/clear_git_cache_job.rb +9 -0
  33. data/app/jobs/shipit/deliver_hook_job.rb +9 -0
  34. data/app/jobs/shipit/destroy_stack_job.rb +9 -0
  35. data/app/jobs/shipit/emit_event_job.rb +10 -0
  36. data/app/jobs/shipit/fetch_commit_stats_job.rb +9 -0
  37. data/app/jobs/shipit/fetch_deployed_revision_job.rb +23 -0
  38. data/app/jobs/shipit/git_mirror_update_job.rb +12 -0
  39. data/app/jobs/shipit/github_sync_job.rb +55 -0
  40. data/app/jobs/shipit/perform_commit_checks_job.rb +7 -0
  41. data/app/jobs/shipit/perform_task_job.rb +57 -0
  42. data/app/jobs/shipit/refresh_github_user_job.rb +9 -0
  43. data/app/jobs/shipit/refresh_statuses_job.rb +14 -0
  44. data/app/jobs/shipit/setup_github_hook_job.rb +11 -0
  45. data/app/models/shipit/anonymous_user.rb +43 -0
  46. data/app/models/shipit/api_client.rb +44 -0
  47. data/app/models/shipit/commit.rb +209 -0
  48. data/app/models/shipit/commit_checks.rb +90 -0
  49. data/app/models/shipit/delivery.rb +47 -0
  50. data/app/models/shipit/deploy.rb +153 -0
  51. data/app/models/shipit/deploy_spec.rb +150 -0
  52. data/app/models/shipit/deploy_spec/bundler_discovery.rb +61 -0
  53. data/app/models/shipit/deploy_spec/capistrano_discovery.rb +29 -0
  54. data/app/models/shipit/deploy_spec/file_system.rb +64 -0
  55. data/app/models/shipit/deploy_spec/pypi_discovery.rb +34 -0
  56. data/app/models/shipit/deploy_spec/rubygems_discovery.rb +34 -0
  57. data/app/models/shipit/github_hook.rb +148 -0
  58. data/app/models/shipit/hook.rb +86 -0
  59. data/app/models/shipit/membership.rb +8 -0
  60. data/app/models/shipit/missing_status.rb +21 -0
  61. data/app/models/shipit/output_chunk.rb +11 -0
  62. data/app/models/shipit/rollback.rb +31 -0
  63. data/app/models/shipit/stack.rb +308 -0
  64. data/app/models/shipit/status.rb +44 -0
  65. data/app/models/shipit/status_group.rb +35 -0
  66. data/app/models/shipit/task.rb +201 -0
  67. data/app/models/shipit/task_definition.rb +38 -0
  68. data/app/models/shipit/team.rb +69 -0
  69. data/app/models/shipit/unknown_status.rb +43 -0
  70. data/app/models/shipit/user.rb +83 -0
  71. data/app/models/shipit/variable_definition.rb +21 -0
  72. data/app/serializers/concerns/shipit/conditional_attributes.rb +22 -0
  73. data/app/serializers/shipit/anonymous_user_serializer.rb +4 -0
  74. data/app/serializers/shipit/commit_serializer.rb +8 -0
  75. data/app/serializers/shipit/deploy_serializer.rb +15 -0
  76. data/app/serializers/shipit/hook_serializer.rb +12 -0
  77. data/app/serializers/shipit/rollback_serializer.rb +7 -0
  78. data/app/serializers/shipit/short_commit_serializer.rb +9 -0
  79. data/app/serializers/shipit/stack_serializer.rb +33 -0
  80. data/app/serializers/shipit/tail_task_serializer.rb +39 -0
  81. data/app/serializers/shipit/task_serializer.rb +30 -0
  82. data/app/serializers/shipit/user_serializer.rb +5 -0
  83. data/app/views/{commits → shipit/commits}/_commit.html.erb +1 -1
  84. data/app/views/{commits → shipit/commits}/_commit_author.html.erb +0 -0
  85. data/app/views/{deploys → shipit/deploys}/_checklist.html.erb +0 -0
  86. data/app/views/{deploys → shipit/deploys}/_checks.html.erb +0 -0
  87. data/app/views/{deploys → shipit/deploys}/_concurrent_deploy_warning.html.erb +0 -0
  88. data/app/views/{deploys → shipit/deploys}/_deploy.html.erb +1 -1
  89. data/app/views/{deploys → shipit/deploys}/_monitoring.html.erb +0 -0
  90. data/app/views/{deploys → shipit/deploys}/_summary.html.erb +0 -0
  91. data/app/views/{deploys → shipit/deploys}/new.html.erb +3 -3
  92. data/app/views/{deploys → shipit/deploys}/rollback.html.erb +2 -2
  93. data/app/views/{deploys → shipit/deploys}/show.html.erb +1 -1
  94. data/app/views/{github_authentication → shipit/github_authentication}/failed.html.erb +0 -0
  95. data/app/views/{stacks → shipit/stacks}/_header.html.erb +0 -0
  96. data/app/views/{stacks → shipit/stacks}/index.html.erb +0 -0
  97. data/app/views/{stacks → shipit/stacks}/new.html.erb +0 -0
  98. data/app/views/{stacks → shipit/stacks}/settings.html.erb +1 -1
  99. data/app/views/{stacks → shipit/stacks}/show.html.erb +2 -2
  100. data/app/views/{statuses → shipit/statuses}/_group.html.erb +1 -1
  101. data/app/views/{statuses → shipit/statuses}/_status.html.erb +0 -0
  102. data/app/views/{tasks → shipit/tasks}/_task.html.erb +1 -1
  103. data/app/views/{tasks → shipit/tasks}/_task_output.html.erb +1 -1
  104. data/app/views/{tasks → shipit/tasks}/index.html.erb +1 -1
  105. data/app/views/{tasks → shipit/tasks}/new.html.erb +1 -1
  106. data/app/views/{tasks → shipit/tasks}/show.html.erb +1 -1
  107. data/db/migrate/20160104151742_increase_tasks_type_size_back.rb +5 -0
  108. data/db/migrate/20160104151833_convert_sti_columns.rb +10 -0
  109. data/lib/shipit.rb +11 -10
  110. data/lib/shipit/command.rb +171 -0
  111. data/lib/shipit/commands.rb +25 -0
  112. data/lib/shipit/deploy_commands.rb +21 -0
  113. data/lib/shipit/engine.rb +3 -0
  114. data/lib/shipit/rollback_commands.rb +7 -0
  115. data/lib/shipit/stack_commands.rb +60 -0
  116. data/lib/shipit/task_commands.rb +68 -0
  117. data/lib/shipit/version.rb +1 -1
  118. data/lib/tasks/cron.rake +3 -3
  119. data/test/controllers/api/base_controller_test.rb +18 -14
  120. data/test/controllers/api/deploys_controller_test.rb +56 -52
  121. data/test/controllers/api/hooks_controller_test.rb +62 -58
  122. data/test/controllers/api/locks_controller_test.rb +38 -34
  123. data/test/controllers/api/outputs_controller_test.rb +15 -11
  124. data/test/controllers/api/stacks_controller_test.rb +56 -52
  125. data/test/controllers/api/tasks_controller_test.rb +30 -26
  126. data/test/controllers/commit_checks_controller_test.rb +29 -27
  127. data/test/controllers/deploys_controller_test.rb +68 -66
  128. data/test/controllers/github_authentication_controller_test.rb +9 -7
  129. data/test/controllers/rollbacks_controller_test.rb +43 -41
  130. data/test/controllers/stacks_controller_test.rb +131 -128
  131. data/test/controllers/status_controller_test.rb +8 -6
  132. data/test/controllers/tasks_controller_test.rb +70 -68
  133. data/test/controllers/webhooks_controller_test.rb +127 -125
  134. data/test/dummy/db/development.sqlite3 +0 -0
  135. data/test/dummy/db/schema.rb +2 -2
  136. data/test/dummy/db/seeds.rb +133 -131
  137. data/test/dummy/db/test.sqlite3 +0 -0
  138. data/test/fixtures/{api_clients.yml → shipit/api_clients.yml} +0 -0
  139. data/test/fixtures/{commits.yml → shipit/commits.yml} +0 -0
  140. data/test/fixtures/{deliveries.yml → shipit/deliveries.yml} +0 -0
  141. data/test/fixtures/{github_hooks.yml → shipit/github_hooks.yml} +4 -4
  142. data/test/fixtures/{hooks.yml → shipit/hooks.yml} +0 -0
  143. data/test/fixtures/{memberships.yml → shipit/memberships.yml} +0 -0
  144. data/test/fixtures/{output_chunks.yml → shipit/output_chunks.yml} +0 -0
  145. data/test/fixtures/{stacks.yml → shipit/stacks.yml} +0 -0
  146. data/test/fixtures/{statuses.yml → shipit/statuses.yml} +0 -0
  147. data/test/fixtures/{tasks.yml → shipit/tasks.yml} +8 -8
  148. data/test/fixtures/{teams.yml → shipit/teams.yml} +0 -0
  149. data/test/fixtures/{users.yml → shipit/users.yml} +0 -0
  150. data/test/helpers/api_helper.rb +1 -1
  151. data/test/helpers/fixture_aliases_helper.rb +4 -4
  152. data/test/jobs/cache_deploy_spec_job_test.rb +15 -13
  153. data/test/jobs/chunk_rollup_job_test.rb +30 -28
  154. data/test/jobs/deliver_hook_job_test.rb +11 -9
  155. data/test/jobs/destroy_stack_job_test.rb +11 -9
  156. data/test/jobs/emit_event_job_test.rb +10 -8
  157. data/test/jobs/fetch_commit_stats_job_test.rb +10 -8
  158. data/test/jobs/fetch_deployed_revision_job_test.rb +24 -22
  159. data/test/jobs/github_sync_job_test.rb +51 -49
  160. data/test/jobs/perform_task_job_test.rb +78 -76
  161. data/test/jobs/refresh_github_user_job_test.rb +10 -8
  162. data/test/jobs/refresh_status_job_test.rb +14 -12
  163. data/test/jobs/unique_job_test.rb +18 -15
  164. data/test/models/api_client_test.rb +20 -18
  165. data/test/models/commit_checks_test.rb +63 -61
  166. data/test/models/commits_test.rb +317 -314
  167. data/test/models/delivery_test.rb +29 -27
  168. data/test/models/deploys_test.rb +289 -287
  169. data/test/models/github_hook_test.rb +45 -43
  170. data/test/models/hook_test.rb +44 -42
  171. data/test/models/membership_test.rb +9 -7
  172. data/test/models/missing_status_test.rb +16 -14
  173. data/test/models/output_chunk_test.rb +14 -12
  174. data/test/models/rollbacks_test.rb +14 -12
  175. data/test/models/stacks_test.rb +272 -270
  176. data/test/models/status_group_test.rb +18 -16
  177. data/test/models/status_test.rb +42 -40
  178. data/test/models/task_definitions_test.rb +27 -25
  179. data/test/models/team_test.rb +39 -37
  180. data/test/models/users_test.rb +61 -59
  181. data/test/unit/command_test.rb +43 -41
  182. data/test/unit/commands_test.rb +8 -6
  183. data/test/unit/csv_serializer_test.rb +28 -26
  184. data/test/unit/deploy_commands_test.rb +179 -176
  185. data/test/unit/deploy_spec_test.rb +237 -235
  186. data/test/unit/github_url_helper_test.rb +19 -17
  187. data/test/unit/shipit_test.rb +44 -42
  188. metadata +139 -137
  189. data/app/controllers/api/base_controller.rb +0 -66
  190. data/app/controllers/api/deploys_controller.rb +0 -15
  191. data/app/controllers/api/hooks_controller.rb +0 -51
  192. data/app/controllers/api/locks_controller.rb +0 -30
  193. data/app/controllers/api/outputs_controller.rb +0 -15
  194. data/app/controllers/api/stacks_controller.rb +0 -19
  195. data/app/controllers/api/tasks_controller.rb +0 -18
  196. data/app/controllers/commit_checks_controller.rb +0 -24
  197. data/app/controllers/concerns/api/cacheable.rb +0 -11
  198. data/app/controllers/concerns/api/rendering.rb +0 -23
  199. data/app/controllers/concerns/pagination.rb +0 -25
  200. data/app/controllers/deploys_controller.rb +0 -45
  201. data/app/controllers/github_authentication_controller.rb +0 -25
  202. data/app/controllers/rollbacks_controller.rb +0 -24
  203. data/app/controllers/shipit_controller.rb +0 -54
  204. data/app/controllers/stacks_controller.rb +0 -79
  205. data/app/controllers/status_controller.rb +0 -5
  206. data/app/controllers/tasks_controller.rb +0 -46
  207. data/app/controllers/webhooks_controller.rb +0 -99
  208. data/app/helpers/chunks_helper.rb +0 -6
  209. data/app/helpers/deploys_helper.rb +0 -26
  210. data/app/helpers/github_url_helper.rb +0 -46
  211. data/app/helpers/shipit_helper.rb +0 -62
  212. data/app/helpers/stacks_helper.rb +0 -76
  213. data/app/helpers/tasks_helper.rb +0 -9
  214. data/app/jobs/background_job.rb +0 -22
  215. data/app/jobs/background_job/unique.rb +0 -26
  216. data/app/jobs/cache_deploy_spec_job.rb +0 -10
  217. data/app/jobs/chunk_rollup_job.rb +0 -19
  218. data/app/jobs/clear_git_cache_job.rb +0 -7
  219. data/app/jobs/deliver_hook_job.rb +0 -7
  220. data/app/jobs/destroy_stack_job.rb +0 -7
  221. data/app/jobs/emit_event_job.rb +0 -8
  222. data/app/jobs/fetch_commit_stats_job.rb +0 -7
  223. data/app/jobs/fetch_deployed_revision_job.rb +0 -21
  224. data/app/jobs/git_mirror_update_job.rb +0 -10
  225. data/app/jobs/github_sync_job.rb +0 -53
  226. data/app/jobs/perform_commit_checks_job.rb +0 -5
  227. data/app/jobs/perform_task_job.rb +0 -55
  228. data/app/jobs/refresh_github_user_job.rb +0 -7
  229. data/app/jobs/refresh_statuses_job.rb +0 -12
  230. data/app/jobs/setup_github_hook_job.rb +0 -9
  231. data/app/models/anonymous_user.rb +0 -41
  232. data/app/models/api_client.rb +0 -42
  233. data/app/models/commit.rb +0 -207
  234. data/app/models/commit_checks.rb +0 -88
  235. data/app/models/delivery.rb +0 -45
  236. data/app/models/deploy.rb +0 -151
  237. data/app/models/deploy_spec.rb +0 -148
  238. data/app/models/deploy_spec/bundler_discovery.rb +0 -59
  239. data/app/models/deploy_spec/capistrano_discovery.rb +0 -27
  240. data/app/models/deploy_spec/file_system.rb +0 -62
  241. data/app/models/deploy_spec/pypi_discovery.rb +0 -32
  242. data/app/models/deploy_spec/rubygems_discovery.rb +0 -32
  243. data/app/models/github_hook.rb +0 -144
  244. data/app/models/hook.rb +0 -84
  245. data/app/models/membership.rb +0 -6
  246. data/app/models/missing_status.rb +0 -18
  247. data/app/models/output_chunk.rb +0 -9
  248. data/app/models/rollback.rb +0 -29
  249. data/app/models/stack.rb +0 -306
  250. data/app/models/status.rb +0 -42
  251. data/app/models/status_group.rb +0 -33
  252. data/app/models/task.rb +0 -197
  253. data/app/models/task_definition.rb +0 -36
  254. data/app/models/team.rb +0 -67
  255. data/app/models/unknown_status.rb +0 -41
  256. data/app/models/user.rb +0 -81
  257. data/app/models/variable_definition.rb +0 -19
  258. data/app/serializers/anonymous_user_serializer.rb +0 -2
  259. data/app/serializers/commit_serializer.rb +0 -6
  260. data/app/serializers/concerns/conditional_attributes.rb +0 -20
  261. data/app/serializers/deploy_serializer.rb +0 -13
  262. data/app/serializers/hook_serializer.rb +0 -10
  263. data/app/serializers/rollback_serializer.rb +0 -5
  264. data/app/serializers/short_commit_serializer.rb +0 -7
  265. data/app/serializers/stack_serializer.rb +0 -31
  266. data/app/serializers/tail_task_serializer.rb +0 -37
  267. data/app/serializers/task_serializer.rb +0 -28
  268. data/app/serializers/user_serializer.rb +0 -3
  269. data/lib/command.rb +0 -169
  270. data/lib/commands.rb +0 -23
  271. data/lib/deploy_commands.rb +0 -19
  272. data/lib/rollback_commands.rb +0 -5
  273. data/lib/stack_commands.rb +0 -58
  274. data/lib/task_commands.rb +0 -66
@@ -1,90 +1,92 @@
1
1
  require 'test_helper'
2
2
 
3
- class DeploysControllerTest < ActionController::TestCase
4
- setup do
5
- Deploy.where(status: %w(running pending)).update_all(status: 'success')
6
- @stack = stacks(:shipit)
7
- @deploy = deploys(:shipit)
8
- @commit = commits(:second)
9
- session[:user_id] = users(:walrus).id
10
- end
3
+ module Shipit
4
+ class DeploysControllerTest < ActionController::TestCase
5
+ setup do
6
+ Deploy.where(status: %w(running pending)).update_all(status: 'success')
7
+ @stack = shipit_stacks(:shipit)
8
+ @deploy = shipit_deploys(:shipit)
9
+ @commit = shipit_commits(:second)
10
+ session[:user_id] = shipit_users(:walrus).id
11
+ end
11
12
 
12
- test ":show is success" do
13
- get :show, stack_id: @stack.to_param, id: @deploy.id
14
- assert_response :success
15
- end
13
+ test ":show is success" do
14
+ get :show, stack_id: @stack.to_param, id: @deploy.id
15
+ assert_response :success
16
+ end
16
17
 
17
- test ":new is success" do
18
- get :new, stack_id: @stack.to_param, sha: @commit.sha
19
- assert_response :success
20
- end
18
+ test ":new is success" do
19
+ get :new, stack_id: @stack.to_param, sha: @commit.sha
20
+ assert_response :success
21
+ end
21
22
 
22
- test ":new shows a warning if a deploy is already running" do
23
- deploys(:shipit_running).update_column(:status, 'running')
23
+ test ":new shows a warning if a deploy is already running" do
24
+ shipit_deploys(:shipit_running).update_column(:status, 'running')
24
25
 
25
- get :new, stack_id: @stack.to_param, sha: @commit.sha
26
- assert_response :success
27
- assert_select '.warning.concurrent-deploy h2' do |elements|
28
- assert_equal 'Lando Walrussian is already deploying!', elements.first.text
26
+ get :new, stack_id: @stack.to_param, sha: @commit.sha
27
+ assert_response :success
28
+ assert_select '.warning.concurrent-deploy h2' do |elements|
29
+ assert_equal 'Lando Walrussian is already deploying!', elements.first.text
30
+ end
31
+ assert_select '#new_deploy #force', 1
29
32
  end
30
- assert_select '#new_deploy #force', 1
31
- end
32
33
 
33
- test ":create persists a new deploy" do
34
- assert_difference '@stack.deploys.count', 1 do
35
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}
34
+ test ":create persists a new deploy" do
35
+ assert_difference '@stack.deploys.count', 1 do
36
+ post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}
37
+ end
36
38
  end
37
- end
38
39
 
39
- test ":create can receive an :env hash" do
40
- env = {'SAFETY_DISABLED' => '1'}
41
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: env}
42
- new_deploy = Deploy.last
43
- assert_equal env, new_deploy.env
44
- end
40
+ test ":create can receive an :env hash" do
41
+ env = {'SAFETY_DISABLED' => '1'}
42
+ post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: env}
43
+ new_deploy = Deploy.last
44
+ assert_equal env, new_deploy.env
45
+ end
45
46
 
46
- test ":create ignore :env keys not declared in the deploy spec" do
47
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: {'H4X0R' => '1'}}
48
- new_deploy = Deploy.last
49
- assert_equal({}, new_deploy.env)
50
- end
47
+ test ":create ignore :env keys not declared in the deploy spec" do
48
+ post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id, env: {'H4X0R' => '1'}}
49
+ new_deploy = Deploy.last
50
+ assert_equal({}, new_deploy.env)
51
+ end
51
52
 
52
- test ":create with `force` option ignore the active deploys" do
53
- deploys(:shipit_running).update_column(:status, 'running')
53
+ test ":create with `force` option ignore the active deploys" do
54
+ shipit_deploys(:shipit_running).update_column(:status, 'running')
54
55
 
55
- assert_difference '@stack.deploys.count', 1 do
56
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}, force: true
56
+ assert_difference '@stack.deploys.count', 1 do
57
+ post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}, force: true
58
+ end
57
59
  end
58
- end
59
60
 
60
- test ":create redirect back to :new with a warning if there is an active deploy" do
61
- deploys(:shipit_running).update_column(:status, 'running')
61
+ test ":create redirect back to :new with a warning if there is an active deploy" do
62
+ shipit_deploys(:shipit_running).update_column(:status, 'running')
62
63
 
63
- assert_no_difference '@stack.deploys.count' do
64
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}
64
+ assert_no_difference '@stack.deploys.count' do
65
+ post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}
66
+ end
67
+ assert_redirected_to new_stack_deploy_path(@stack, sha: @commit.sha)
65
68
  end
66
- assert_redirected_to new_stack_deploy_path(@stack, sha: @commit.sha)
67
- end
68
69
 
69
- test ":create redirects to the new deploy" do
70
- post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}
71
- new_deploy = Deploy.last
72
- assert_redirected_to stack_deploy_path(@stack, new_deploy)
73
- end
70
+ test ":create redirects to the new deploy" do
71
+ post :create, stack_id: @stack.to_param, deploy: {until_commit_id: @commit.id}
72
+ new_deploy = Deploy.last
73
+ assert_redirected_to stack_deploy_path(@stack, new_deploy)
74
+ end
74
75
 
75
- test ":rollback is success" do
76
- get :rollback, stack_id: @stack.to_param, id: @deploy.id
77
- assert_response :success
78
- end
76
+ test ":rollback is success" do
77
+ get :rollback, stack_id: @stack.to_param, id: @deploy.id
78
+ assert_response :success
79
+ end
79
80
 
80
- test ":rollback shows a warning if a deploy is already running" do
81
- deploys(:shipit_running).update_column(:status, 'running')
81
+ test ":rollback shows a warning if a deploy is already running" do
82
+ shipit_deploys(:shipit_running).update_column(:status, 'running')
82
83
 
83
- get :rollback, stack_id: @stack.to_param, id: @deploy.id
84
- assert_response :success
85
- assert_select '.warning.concurrent-deploy h2' do |elements|
86
- assert_equal 'Lando Walrussian is already deploying!', elements.first.text
84
+ get :rollback, stack_id: @stack.to_param, id: @deploy.id
85
+ assert_response :success
86
+ assert_select '.warning.concurrent-deploy h2' do |elements|
87
+ assert_equal 'Lando Walrussian is already deploying!', elements.first.text
88
+ end
89
+ assert_select '#new_rollback #force', 1
87
90
  end
88
- assert_select '#new_rollback #force', 1
89
91
  end
90
92
  end
@@ -1,12 +1,14 @@
1
1
  require 'test_helper'
2
2
 
3
- class GithubAuthenticationControllerTest < ActionController::TestCase
4
- test ":callback can sign in to github" do
5
- @request.env['omniauth.auth'] = {info: {nickname: 'shipit'}}
6
- github_user = mock('Sawyer User')
7
- Shipit.github_api.stubs(:user).returns(github_user)
8
- User.expects(:find_or_create_from_github).with(github_user).returns(stub(id: 44))
3
+ module Shipit
4
+ class GithubAuthenticationControllerTest < ActionController::TestCase
5
+ test ":callback can sign in to github" do
6
+ @request.env['omniauth.auth'] = {info: {nickname: 'shipit'}}
7
+ github_user = mock('Sawyer User')
8
+ Shipit.github_api.stubs(:user).returns(github_user)
9
+ User.expects(:find_or_create_from_github).with(github_user).returns(stub(id: 44))
9
10
 
10
- get :callback
11
+ get :callback
12
+ end
11
13
  end
12
14
  end
@@ -1,55 +1,57 @@
1
1
  require 'test_helper'
2
2
 
3
- class RollbacksControllerTest < ActionController::TestCase
4
- setup do
5
- Deploy.where(status: %w(running pending)).update_all(status: 'success')
6
- @stack = stacks(:shipit)
7
- @deploy = deploys(:shipit)
8
- session[:user_id] = users(:walrus).id
9
- end
10
-
11
- test ":create persists a new rollback" do
12
- assert_difference '@stack.rollbacks.count', 1 do
13
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
3
+ module Shipit
4
+ class RollbacksControllerTest < ActionController::TestCase
5
+ setup do
6
+ Deploy.where(status: %w(running pending)).update_all(status: 'success')
7
+ @stack = shipit_stacks(:shipit)
8
+ @deploy = shipit_deploys(:shipit)
9
+ session[:user_id] = shipit_users(:walrus).id
14
10
  end
15
- end
16
11
 
17
- test ":create can receive an :env hash" do
18
- env = {'SAFETY_DISABLED' => '1'}
19
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id, env: env}
20
- new_rollback = Rollback.last
21
- assert_equal env, new_rollback.env
22
- end
12
+ test ":create persists a new rollback" do
13
+ assert_difference '@stack.rollbacks.count', 1 do
14
+ post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
15
+ end
16
+ end
23
17
 
24
- test ":create ignore :env keys not declared in the deploy spec" do
25
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id, env: {'H4X0R' => '1'}}
26
- new_rollback = Rollback.last
27
- assert_equal({}, new_rollback.env)
28
- end
18
+ test ":create can receive an :env hash" do
19
+ env = {'SAFETY_DISABLED' => '1'}
20
+ post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id, env: env}
21
+ new_rollback = Rollback.last
22
+ assert_equal env, new_rollback.env
23
+ end
29
24
 
30
- test ":create redirects to the new deploy" do
31
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
32
- assert_redirected_to stack_deploy_path(@stack, Rollback.last)
33
- end
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'}}
27
+ new_rollback = Rollback.last
28
+ assert_equal({}, new_rollback.env)
29
+ end
34
30
 
35
- test ":create locks deploys" do
36
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
37
- assert @stack.reload.locked?
38
- end
31
+ test ":create redirects to the new deploy" do
32
+ post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
33
+ assert_redirected_to stack_deploy_path(@stack, Rollback.last)
34
+ end
39
35
 
40
- test ":create redirects back to the :new page if there is an active deploy" do
41
- deploys(:shipit_running).update_column(:status, 'running')
42
- assert_no_difference '@stack.deploys.count' do
36
+ test ":create locks deploys" do
43
37
  post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
38
+ assert @stack.reload.locked?
39
+ end
40
+
41
+ test ":create redirects back to the :new page if there is an active deploy" do
42
+ shipit_deploys(:shipit_running).update_column(:status, 'running')
43
+ assert_no_difference '@stack.deploys.count' do
44
+ post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}
45
+ end
46
+ assert_redirected_to rollback_stack_deploy_path(@stack, @deploy)
44
47
  end
45
- assert_redirected_to rollback_stack_deploy_path(@stack, @deploy)
46
- end
47
48
 
48
- test ":create with `force` option ignore the active deploys" do
49
- deploys(:shipit_running).update_column(:status, 'running')
50
- assert_difference '@stack.deploys.count', 1 do
51
- post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}, force: true
49
+ test ":create with `force` option ignore the active deploys" do
50
+ shipit_deploys(:shipit_running).update_column(:status, 'running')
51
+ assert_difference '@stack.deploys.count', 1 do
52
+ post :create, stack_id: @stack.to_param, rollback: {parent_id: @deploy.id}, force: true
53
+ end
54
+ assert_redirected_to stack_deploy_path(@stack, Rollback.last)
52
55
  end
53
- assert_redirected_to stack_deploy_path(@stack, Rollback.last)
54
56
  end
55
57
  end
@@ -1,164 +1,167 @@
1
1
  require 'test_helper'
2
2
 
3
- class StacksControllerTest < ActionController::TestCase
4
- setup do
5
- @stack = stacks(:shipit)
6
- session[:user_id] = users(:walrus).id
7
- end
3
+ module Shipit
4
+ class StacksControllerTest < ActionController::TestCase
5
+ setup do
6
+ @routes = Shipit::Engine.routes
7
+ @stack = shipit_stacks(:shipit)
8
+ session[:user_id] = shipit_users(:walrus).id
9
+ end
8
10
 
9
- test "validates that Shipit.github_oauth_id is present" do
10
- Shipit.stubs(github_oauth_credentials: {'secret' => 'abc'})
11
- get :index
12
- assert_template 'missing_settings'
13
- assert_select "#github_oauth_id .missing"
14
- assert_select ".missing", count: 1
15
- end
11
+ test "validates that Shipit.github_oauth_id is present" do
12
+ Shipit.stubs(github_oauth_credentials: {'secret' => 'abc'})
13
+ get :index
14
+ assert_template 'missing_settings'
15
+ assert_select "#github_oauth_id .missing"
16
+ assert_select ".missing", count: 1
17
+ end
16
18
 
17
- test "validates that Shipit.github_oauth_secret is present" do
18
- Shipit.stubs(github_oauth_credentials: {'id' => 'abc'})
19
- get :index
20
- assert_template 'missing_settings'
21
- assert_select "#github_oauth_secret .missing"
22
- assert_select ".missing", count: 1
23
- end
19
+ test "validates that Shipit.github_oauth_secret is present" do
20
+ Shipit.stubs(github_oauth_credentials: {'id' => 'abc'})
21
+ get :index
22
+ assert_template 'missing_settings'
23
+ assert_select "#github_oauth_secret .missing"
24
+ assert_select ".missing", count: 1
25
+ end
24
26
 
25
- test "validates that Shipit.github_api_credentials is present" do
26
- Shipit.stubs(github_api_credentials: {})
27
- get :index
28
- assert_template 'missing_settings'
29
- assert_select "#github_api .missing"
30
- assert_select ".missing", count: 1
31
- end
27
+ test "validates that Shipit.github_api_credentials is present" do
28
+ Shipit.stubs(github_api_credentials: {})
29
+ get :index
30
+ assert_template 'missing_settings'
31
+ assert_select "#github_api .missing"
32
+ assert_select ".missing", count: 1
33
+ end
32
34
 
33
- test "validates that Shipit.redis_url is present" do
34
- Shipit.stubs(redis_url: nil)
35
- get :index
36
- assert_template 'missing_settings'
37
- assert_select "#redis_url .missing"
38
- assert_select ".missing", count: 1
39
- end
35
+ test "validates that Shipit.redis_url is present" do
36
+ Shipit.stubs(redis_url: nil)
37
+ get :index
38
+ assert_template 'missing_settings'
39
+ assert_select "#redis_url .missing"
40
+ assert_select ".missing", count: 1
41
+ end
40
42
 
41
- test "validates that Shipit.host is present" do
42
- Shipit.stubs(host: nil)
43
- get :index
44
- assert_template 'missing_settings'
45
- assert_select "#host .missing"
46
- assert_select ".missing", count: 1
47
- end
43
+ test "validates that Shipit.host is present" do
44
+ Shipit.stubs(host: nil)
45
+ get :index
46
+ assert_template 'missing_settings'
47
+ assert_select "#host .missing"
48
+ assert_select ".missing", count: 1
49
+ end
48
50
 
49
- test "GitHub authentication is mandatory" do
50
- session[:user_id] = nil
51
- get :index
52
- assert_redirected_to '/github/auth/github?origin=http%3A%2F%2Ftest.host%2F'
53
- end
51
+ test "GitHub authentication is mandatory" do
52
+ session[:user_id] = nil
53
+ get :index
54
+ assert_redirected_to '/github/auth/github?origin=http%3A%2F%2Ftest.host%2F'
55
+ end
54
56
 
55
- test "current_user must be a member of Shipit.github_team" do
56
- Shipit.stubs(:github_team).returns(teams(:cyclimse_cooks))
57
- get :index
58
- assert_response :forbidden
59
- assert_equal 'You must be a member of cyclimse/cooks to access this application.', response.body
60
- end
57
+ test "current_user must be a member of Shipit.github_team" do
58
+ Shipit.stubs(:github_team).returns(shipit_teams(:cyclimse_cooks))
59
+ get :index
60
+ assert_response :forbidden
61
+ assert_equal 'You must be a member of cyclimse/cooks to access this application.', response.body
62
+ end
61
63
 
62
- test "#show is success" do
63
- get :show, id: @stack.to_param
64
- assert_response :ok
65
- end
64
+ test "#show is success" do
65
+ get :show, id: @stack.to_param
66
+ assert_response :ok
67
+ end
66
68
 
67
- test "#show handles locked stacks without a lock_author" do
68
- @stack.update!(lock_reason: "I am a lock with no author")
69
- get :show, id: @stack.to_param
70
- end
69
+ test "#show handles locked stacks without a lock_author" do
70
+ @stack.update!(lock_reason: "I am a lock with no author")
71
+ get :show, id: @stack.to_param
72
+ end
71
73
 
72
- test "#show auto-links URLs in lock reason" do
73
- @stack.update!(lock_reason: 'http://google.com')
74
- get :show, id: @stack.to_param
75
- assert_response :ok
76
- assert_select 'a[href="http://google.com"]'
77
- end
74
+ test "#show auto-links URLs in lock reason" do
75
+ @stack.update!(lock_reason: 'http://google.com')
76
+ get :show, id: @stack.to_param
77
+ assert_response :ok
78
+ assert_select 'a[href="http://google.com"]'
79
+ end
78
80
 
79
- test "#create creates a Stack, queues a job to setup webhooks and redirects to it" do
80
- params = {}
81
- params[:stack] = {
82
- repo_name: "rails",
83
- repo_owner: "rails",
84
- environment: "staging",
85
- branch: "staging",
86
- }
81
+ test "#create creates a Stack, queues a job to setup webhooks and redirects to it" do
82
+ params = {}
83
+ params[:stack] = {
84
+ repo_name: "rails",
85
+ repo_owner: "rails",
86
+ environment: "staging",
87
+ branch: "staging",
88
+ }
89
+
90
+ assert_difference "Stack.count" do
91
+ post :create, params
92
+ end
87
93
 
88
- assert_difference "Stack.count" do
89
- post :create, params
94
+ assert_redirected_to stack_path(Stack.last)
90
95
  end
91
96
 
92
- assert_redirected_to stack_path(Stack.last)
93
- end
97
+ test "#create when not valid renders new" do
98
+ assert_no_difference "Stack.count" do
99
+ post :create, stack: {repo_owner: 'some', repo_name: 'owner/path'}
100
+ end
94
101
 
95
- test "#create when not valid renders new" do
96
- assert_no_difference "Stack.count" do
97
- post :create, stack: {repo_owner: 'some', repo_name: 'owner/path'}
102
+ assert_template :new
98
103
  end
99
104
 
100
- assert_template :new
101
- end
102
-
103
- test "#destroy enqueues a DestroyStackJob" do
104
- assert_enqueued_with(job: DestroyStackJob, args: [@stack]) do
105
- delete :destroy, id: @stack.to_param
105
+ test "#destroy enqueues a DestroyStackJob" do
106
+ assert_enqueued_with(job: DestroyStackJob, args: [@stack]) do
107
+ delete :destroy, id: @stack.to_param
108
+ end
109
+ assert_redirected_to stacks_path
106
110
  end
107
- assert_redirected_to stacks_path
108
- end
109
111
 
110
- test "#settings is success" do
111
- get :settings, id: @stack.to_param
112
- assert_response :success
113
- end
112
+ test "#settings is success" do
113
+ get :settings, id: @stack.to_param
114
+ assert_response :success
115
+ end
114
116
 
115
- test "#update allows to lock the stack" do
116
- refute @stack.locked?
117
+ test "#update allows to lock the stack" do
118
+ refute @stack.locked?
117
119
 
118
- patch :update, id: @stack.to_param, stack: {lock_reason: 'Went out to eat some chips!'}
119
- @stack.reload
120
- assert @stack.locked?
121
- assert_equal users(:walrus), @stack.lock_author
122
- end
120
+ patch :update, id: @stack.to_param, stack: {lock_reason: 'Went out to eat some chips!'}
121
+ @stack.reload
122
+ assert @stack.locked?
123
+ assert_equal shipit_users(:walrus), @stack.lock_author
124
+ end
123
125
 
124
- test "#update allows to unlock the stack" do
125
- @stack.update!(lock_reason: 'Went out to eat some chips!')
126
- assert @stack.locked?
126
+ test "#update allows to unlock the stack" do
127
+ @stack.update!(lock_reason: 'Went out to eat some chips!')
128
+ assert @stack.locked?
127
129
 
128
- patch :update, id: @stack.to_param, stack: {lock_reason: ''}
129
- @stack.reload
130
- refute @stack.locked?
131
- assert_instance_of AnonymousUser, @stack.lock_author
132
- end
130
+ patch :update, id: @stack.to_param, stack: {lock_reason: ''}
131
+ @stack.reload
132
+ refute @stack.locked?
133
+ assert_instance_of AnonymousUser, @stack.lock_author
134
+ end
133
135
 
134
- test "#refresh queues a RefreshStatusesJob and a GithubSyncJob" do
135
- request.env['HTTP_REFERER'] = stack_settings_path(@stack)
136
+ test "#refresh queues a RefreshStatusesJob and a GithubSyncJob" do
137
+ request.env['HTTP_REFERER'] = stack_settings_path(@stack)
136
138
 
137
- assert_enqueued_with(job: RefreshStatusesJob, args: [stack_id: @stack.id]) do
138
- assert_enqueued_with(job: GithubSyncJob, args: [stack_id: @stack.id]) do
139
- post :refresh, id: @stack.to_param
139
+ assert_enqueued_with(job: RefreshStatusesJob, args: [stack_id: @stack.id]) do
140
+ assert_enqueued_with(job: GithubSyncJob, args: [stack_id: @stack.id]) do
141
+ post :refresh, id: @stack.to_param
142
+ end
140
143
  end
141
- end
142
144
 
143
- assert_redirected_to stack_settings_path(@stack)
144
- end
145
+ assert_redirected_to stack_settings_path(@stack)
146
+ end
145
147
 
146
- test "#sync_webhooks queues #{Stack::REQUIRED_HOOKS.count} SetupGithubHookJob" do
147
- assert_enqueued_jobs(Stack::REQUIRED_HOOKS.count) do
148
- post :sync_webhooks, id: @stack.to_param
148
+ test "#sync_webhooks queues #{Stack::REQUIRED_HOOKS.count} SetupGithubHookJob" do
149
+ assert_enqueued_jobs(Stack::REQUIRED_HOOKS.count) do
150
+ post :sync_webhooks, id: @stack.to_param
151
+ end
152
+ assert_redirected_to stack_settings_path(@stack)
149
153
  end
150
- assert_redirected_to stack_settings_path(@stack)
151
- end
152
154
 
153
- test "#clear_git_cache queues a ClearGitCacheJob" do
154
- assert_enqueued_with(job: ClearGitCacheJob, args: [@stack]) do
155
- post :clear_git_cache, id: @stack.to_param
155
+ test "#clear_git_cache queues a ClearGitCacheJob" do
156
+ assert_enqueued_with(job: ClearGitCacheJob, args: [@stack]) do
157
+ post :clear_git_cache, id: @stack.to_param
158
+ end
159
+ assert_redirected_to stack_settings_path(@stack)
156
160
  end
157
- assert_redirected_to stack_settings_path(@stack)
158
- end
159
161
 
160
- test "#update redirects to return_to parameter" do
161
- patch :update, id: @stack.to_param, stack: {ignore_ci: false}, return_to: stack_path(@stack)
162
- assert_redirected_to stack_path(@stack)
162
+ test "#update redirects to return_to parameter" do
163
+ patch :update, id: @stack.to_param, stack: {ignore_ci: false}, return_to: stack_path(@stack)
164
+ assert_redirected_to stack_path(@stack)
165
+ end
163
166
  end
164
167
  end