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,74 +1,78 @@
1
1
  require 'test_helper'
2
2
 
3
- class Api::HooksControllerTest < ActionController::TestCase
4
- setup do
5
- authenticate!
6
- @stack = stacks(:shipit)
7
- end
3
+ module Shipit
4
+ module Api
5
+ class HooksControllerTest < ActionController::TestCase
6
+ setup do
7
+ authenticate!
8
+ @stack = shipit_stacks(:shipit)
9
+ end
8
10
 
9
- test "#index without a stack_id returns the list of global hooks" do
10
- hook = Hook.global.first
11
+ test "#index without a stack_id returns the list of global hooks" do
12
+ hook = Hook.global.first
11
13
 
12
- get :index
13
- assert_response :ok
14
- assert_json '0.id', hook.id
15
- assert_json '0.url', hook.url
16
- assert_json '0.content_type', hook.content_type
17
- assert_no_json '0.stack'
18
- end
14
+ get :index
15
+ assert_response :ok
16
+ assert_json '0.id', hook.id
17
+ assert_json '0.url', hook.url
18
+ assert_json '0.content_type', hook.content_type
19
+ assert_no_json '0.stack'
20
+ end
19
21
 
20
- test "#index with a stack_id returns the list of scoped hooks" do
21
- hook = Hook.scoped_to(@stack).first
22
+ test "#index with a stack_id returns the list of scoped hooks" do
23
+ hook = Hook.scoped_to(@stack).first
22
24
 
23
- get :index, stack_id: @stack.to_param
24
- assert_response :ok
25
- assert_json '0.id', hook.id
26
- assert_json '0.url', hook.url
27
- assert_json '0.content_type', hook.content_type
28
- assert_json '0.stack.id', @stack.id
29
- end
25
+ get :index, stack_id: @stack.to_param
26
+ assert_response :ok
27
+ assert_json '0.id', hook.id
28
+ assert_json '0.url', hook.url
29
+ assert_json '0.content_type', hook.content_type
30
+ assert_json '0.stack.id', @stack.id
31
+ end
30
32
 
31
- test "#show returns the hooks" do
32
- hook = Hook.scoped_to(@stack).first
33
+ test "#show returns the hooks" do
34
+ hook = Hook.scoped_to(@stack).first
33
35
 
34
- get :show, stack_id: @stack.to_param, id: hook.id
35
- assert_response :ok
36
+ get :show, stack_id: @stack.to_param, id: hook.id
37
+ assert_response :ok
36
38
 
37
- assert_json 'id', hook.id
38
- assert_json 'url', hook.url
39
- assert_json 'content_type', hook.content_type
40
- assert_json 'stack.id', @stack.id
41
- end
39
+ assert_json 'id', hook.id
40
+ assert_json 'url', hook.url
41
+ assert_json 'content_type', hook.content_type
42
+ assert_json 'stack.id', @stack.id
43
+ end
42
44
 
43
- test "#create adds a new hook" do
44
- assert_difference -> { Hook.count }, 1 do
45
- post :create, url: 'https://example.com/hook', events: %w(deploy rollback)
46
- end
47
- assert_json 'url', 'https://example.com/hook'
48
- assert_json 'id', Hook.last.id
49
- end
45
+ test "#create adds a new hook" do
46
+ assert_difference -> { Hook.count }, 1 do
47
+ post :create, url: 'https://example.com/hook', events: %w(deploy rollback)
48
+ end
49
+ assert_json 'url', 'https://example.com/hook'
50
+ assert_json 'id', Hook.last.id
51
+ end
50
52
 
51
- test "#create do not allow to set protected attributes" do
52
- post :create, url: 'https://example.com/hook', events: %w(deploy rollback), created_at: 2.months.ago.to_s(:db)
53
- Hook.last.created_at > 2.seconds.ago
54
- end
53
+ test "#create do not allow to set protected attributes" do
54
+ post :create, url: 'https://example.com/hook', events: %w(deploy rollback), created_at: 2.months.ago.to_s(:db)
55
+ Hook.last.created_at > 2.seconds.ago
56
+ end
55
57
 
56
- test "#create returns validation errors" do
57
- post :create, url: '../etc/passwd', events: %w(deploy)
58
- assert_response :unprocessable_entity
59
- assert_json 'errors', 'url' => ['is not a valid URL']
60
- end
58
+ test "#create returns validation errors" do
59
+ post :create, url: '../etc/passwd', events: %w(deploy)
60
+ assert_response :unprocessable_entity
61
+ assert_json 'errors', 'url' => ['is not a valid URL']
62
+ end
61
63
 
62
- test "#update changes an existing hook" do
63
- hook = Hook.global.first
64
- patch :update, id: hook.id, url: 'https://shipit.com/'
65
- assert_response :ok
66
- assert_json 'url', 'https://shipit.com/'
67
- end
64
+ test "#update changes an existing hook" do
65
+ hook = Hook.global.first
66
+ patch :update, id: hook.id, url: 'https://shipit.com/'
67
+ assert_response :ok
68
+ assert_json 'url', 'https://shipit.com/'
69
+ end
68
70
 
69
- test "#destroy removes an existing hook" do
70
- hook = Hook.global.first
71
- delete :destroy, id: hook.id
72
- assert_response :no_content
71
+ test "#destroy removes an existing hook" do
72
+ hook = Hook.global.first
73
+ delete :destroy, id: hook.id
74
+ assert_response :no_content
75
+ end
76
+ end
73
77
  end
74
78
  end
@@ -1,43 +1,47 @@
1
1
  require 'test_helper'
2
2
 
3
- class Api::LocksControllerTest < ActionController::TestCase
4
- setup do
5
- authenticate!
6
- @stack = stacks(:shipit)
7
- end
3
+ module Shipit
4
+ module Api
5
+ class LocksControllerTest < ActionController::TestCase
6
+ setup do
7
+ authenticate!
8
+ @stack = shipit_stacks(:shipit)
9
+ end
8
10
 
9
- test "#create sets a lock" do
10
- post :create, stack_id: @stack.to_param, reason: 'Just for fun!'
11
- assert_response :ok
12
- assert_json 'is_locked', true
13
- assert_json 'lock_reason', 'Just for fun!'
14
- end
11
+ test "#create sets a lock" do
12
+ post :create, stack_id: @stack.to_param, reason: 'Just for fun!'
13
+ assert_response :ok
14
+ assert_json 'is_locked', true
15
+ assert_json 'lock_reason', 'Just for fun!'
16
+ end
15
17
 
16
- test "#create fails if already locked" do
17
- @stack.update!(lock_reason: "Don't forget me")
18
- post :create, stack_id: @stack.to_param, reason: 'Just for fun!'
19
- assert_response :conflict
20
- end
18
+ test "#create fails if already locked" do
19
+ @stack.update!(lock_reason: "Don't forget me")
20
+ post :create, stack_id: @stack.to_param, reason: 'Just for fun!'
21
+ assert_response :conflict
22
+ end
21
23
 
22
- test "#update sets a lock" do
23
- put :update, stack_id: @stack.to_param, reason: 'Just for fun!'
24
- assert_response :ok
25
- assert_json 'is_locked', true
26
- assert_json 'lock_reason', 'Just for fun!'
27
- end
24
+ test "#update sets a lock" do
25
+ put :update, stack_id: @stack.to_param, reason: 'Just for fun!'
26
+ assert_response :ok
27
+ assert_json 'is_locked', true
28
+ assert_json 'lock_reason', 'Just for fun!'
29
+ end
28
30
 
29
- test "#update can override a previous lock" do
30
- @stack.update!(lock_reason: 'Meh...')
31
- put :update, stack_id: @stack.to_param, reason: 'Just for fun!'
32
- assert_response :ok
33
- assert_json 'is_locked', true
34
- assert_json 'lock_reason', 'Just for fun!'
35
- end
31
+ test "#update can override a previous lock" do
32
+ @stack.update!(lock_reason: 'Meh...')
33
+ put :update, stack_id: @stack.to_param, reason: 'Just for fun!'
34
+ assert_response :ok
35
+ assert_json 'is_locked', true
36
+ assert_json 'lock_reason', 'Just for fun!'
37
+ end
36
38
 
37
- test "#destroy clears the lock" do
38
- @stack.update!(lock_reason: 'Meh...')
39
- delete :destroy, stack_id: @stack.to_param
40
- assert_response :ok
41
- assert_json 'is_locked', false
39
+ test "#destroy clears the lock" do
40
+ @stack.update!(lock_reason: 'Meh...')
41
+ delete :destroy, stack_id: @stack.to_param
42
+ assert_response :ok
43
+ assert_json 'is_locked', false
44
+ end
45
+ end
42
46
  end
43
47
  end
@@ -1,17 +1,21 @@
1
1
  require 'test_helper'
2
2
 
3
- class Api::OutputsControllerTest < ActionController::TestCase
4
- setup do
5
- @stack = stacks(:shipit)
6
- authenticate!
7
- end
3
+ module Shipit
4
+ module Api
5
+ class OutputsControllerTest < ActionController::TestCase
6
+ setup do
7
+ @stack = shipit_stacks(:shipit)
8
+ authenticate!
9
+ end
8
10
 
9
- test "#show returns the task output as plain text" do
10
- task = @stack.tasks.last
11
+ test "#show returns the task output as plain text" do
12
+ task = @stack.tasks.last
11
13
 
12
- get :show, stack_id: @stack.to_param, task_id: task.id
13
- assert_response :ok
14
- assert_equal 'text/plain', response.content_type
15
- assert_equal task.chunk_output, response.body
14
+ get :show, stack_id: @stack.to_param, task_id: task.id
15
+ assert_response :ok
16
+ assert_equal 'text/plain', response.content_type
17
+ assert_equal task.chunk_output, response.body
18
+ end
19
+ end
16
20
  end
17
21
  end
@@ -1,57 +1,61 @@
1
1
  require 'test_helper'
2
2
 
3
- class Api::StacksControllerTest < ActionController::TestCase
4
- setup do
5
- authenticate!
6
- @stack = stacks(:shipit)
7
- end
8
-
9
- test "#index returns a list of stacks" do
10
- stack = Stack.last
11
-
12
- get :index
13
- assert_response :ok
14
- assert_json '0.id', stack.id
15
- assert_json do |stacks|
16
- assert_equal 3, stacks.size
17
- end
18
- end
19
-
20
- test "#index is paginable" do
21
- get :index, page_size: 1
22
- assert_json do |list|
23
- assert_instance_of Array, list
24
- assert_equal 1, list.size
25
-
26
- stack_id = list.last['id']
27
- assert_link 'next', api_stacks_url(since: stack_id, page_size: 1)
28
- assert_link 'first', api_stacks_url(page_size: 1)
29
- end
30
- end
31
-
32
- test "the `next` link is not provided when the last page is reached" do
33
- get :index, page_size: Stack.count
34
- assert_no_link 'next'
35
- end
36
-
37
- test "an api client scoped to a stack will only see that one stack" do
38
- authenticate!(:here_come_the_walrus)
39
- get :index
40
- assert_json do |stacks|
41
- assert_equal 1, stacks.size
3
+ module Shipit
4
+ module Api
5
+ class StacksControllerTest < ActionController::TestCase
6
+ setup do
7
+ authenticate!
8
+ @stack = shipit_stacks(:shipit)
9
+ end
10
+
11
+ test "#index returns a list of stacks" do
12
+ stack = Stack.last
13
+
14
+ get :index
15
+ assert_response :ok
16
+ assert_json '0.id', stack.id
17
+ assert_json do |stacks|
18
+ assert_equal 3, stacks.size
19
+ end
20
+ end
21
+
22
+ test "#index is paginable" do
23
+ get :index, page_size: 1
24
+ assert_json do |list|
25
+ assert_instance_of Array, list
26
+ assert_equal 1, list.size
27
+
28
+ stack_id = list.last['id']
29
+ assert_link 'next', api_stacks_url(since: stack_id, page_size: 1)
30
+ assert_link 'first', api_stacks_url(page_size: 1)
31
+ end
32
+ end
33
+
34
+ test "the `next` link is not provided when the last page is reached" do
35
+ get :index, page_size: Stack.count
36
+ assert_no_link 'next'
37
+ end
38
+
39
+ test "an api client scoped to a stack will only see that one stack" do
40
+ authenticate!(:here_come_the_walrus)
41
+ get :index
42
+ assert_json do |stacks|
43
+ assert_equal 1, stacks.size
44
+ end
45
+ end
46
+
47
+ test "a request with insufficient permissions will render a 403" do
48
+ @client.update!(permissions: [])
49
+ get :index
50
+ assert_response :forbidden
51
+ assert_json 'message', 'This operation requires the `read:stack` permission'
52
+ end
53
+
54
+ test "#show renders the stack" do
55
+ get :show, id: @stack.to_param
56
+ assert_response :ok
57
+ assert_json 'id', @stack.id
58
+ end
42
59
  end
43
60
  end
44
-
45
- test "a request with insufficient permissions will render a 403" do
46
- @client.update!(permissions: [])
47
- get :index
48
- assert_response :forbidden
49
- assert_json 'message', 'This operation requires the `read:stack` permission'
50
- end
51
-
52
- test "#show renders the stack" do
53
- get :show, id: @stack.to_param
54
- assert_response :ok
55
- assert_json 'id', @stack.id
56
- end
57
61
  end
@@ -1,36 +1,40 @@
1
1
  require 'test_helper'
2
2
 
3
- class Api::TasksControllerTest < ActionController::TestCase
4
- setup do
5
- @stack = stacks(:shipit)
6
- authenticate!
7
- end
3
+ module Shipit
4
+ module Api
5
+ class TasksControllerTest < ActionController::TestCase
6
+ setup do
7
+ @stack = shipit_stacks(:shipit)
8
+ authenticate!
9
+ end
8
10
 
9
- test "#index returns a list of tasks" do
10
- task = @stack.tasks.last
11
+ test "#index returns a list of tasks" do
12
+ task = @stack.tasks.last
11
13
 
12
- get :index, stack_id: @stack.to_param
13
- assert_response :ok
14
- assert_json '0.id', task.id
15
- end
14
+ get :index, stack_id: @stack.to_param
15
+ assert_response :ok
16
+ assert_json '0.id', task.id
17
+ end
16
18
 
17
- test "#show returns a task" do
18
- task = @stack.tasks.last
19
+ test "#show returns a task" do
20
+ task = @stack.tasks.last
19
21
 
20
- get :show, stack_id: @stack.to_param, id: task.id
21
- assert_response :ok
22
- assert_json 'id', task.id
23
- end
22
+ get :show, stack_id: @stack.to_param, id: task.id
23
+ assert_response :ok
24
+ assert_json 'id', task.id
25
+ end
24
26
 
25
- test "#trigger triggers a custom task" do
26
- post :trigger, stack_id: @stack.to_param, task_name: 'restart'
27
- assert_response :accepted
28
- assert_json 'type', 'task'
29
- assert_json 'status', 'pending'
30
- end
27
+ test "#trigger triggers a custom task" do
28
+ post :trigger, stack_id: @stack.to_param, task_name: 'restart'
29
+ assert_response :accepted
30
+ assert_json 'type', 'task'
31
+ assert_json 'status', 'pending'
32
+ end
31
33
 
32
- test "#trigger returns a 404 when the task doesn't exist" do
33
- post :trigger, stack_id: @stack.to_param, task_name: 'doesnt_exist'
34
- assert_response :not_found
34
+ test "#trigger returns a 404 when the task doesn't exist" do
35
+ post :trigger, stack_id: @stack.to_param, task_name: 'doesnt_exist'
36
+ assert_response :not_found
37
+ end
38
+ end
35
39
  end
36
40
  end
@@ -1,34 +1,36 @@
1
1
  require 'test_helper'
2
2
 
3
- class CommitChecksControllerTest < ActionController::TestCase
4
- setup do
5
- @commit = commits(:fifth)
6
- @checks = @commit.checks
7
- @stack = @commit.stack
8
- @checks.write('foobar')
9
- @checks.status = 'running'
10
- session[:user_id] = users(:walrus).id
11
- end
3
+ module Shipit
4
+ class CommitChecksControllerTest < ActionController::TestCase
5
+ setup do
6
+ @commit = shipit_commits(:fifth)
7
+ @checks = @commit.checks
8
+ @stack = @commit.stack
9
+ @checks.write('foobar')
10
+ @checks.status = 'running'
11
+ session[:user_id] = shipit_users(:walrus).id
12
+ end
12
13
 
13
- test ":tail is success" do
14
- get :tail, stack_id: @stack.to_param, sha: @commit.sha
15
- assert_response :success
16
- assert_json 'output', 'foobar'
17
- assert_json 'url', stack_tail_commit_checks_path(@stack, sha: @commit.sha, since: 6)
18
- assert_json 'status', 'running'
19
- end
14
+ test ":tail is success" do
15
+ get :tail, stack_id: @stack.to_param, sha: @commit.sha
16
+ assert_response :success
17
+ assert_json 'output', 'foobar'
18
+ assert_json 'url', stack_tail_commit_checks_path(@stack, sha: @commit.sha, since: 6)
19
+ assert_json 'status', 'running'
20
+ end
20
21
 
21
- test ":tail doesn't provide another url if the task is finished" do
22
- @checks.status = 'success'
23
- get :tail, stack_id: @stack.to_param, sha: @commit.sha
24
- assert_response :success
25
- assert_json 'url', nil
26
- end
22
+ test ":tail doesn't provide another url if the task is finished" do
23
+ @checks.status = 'success'
24
+ get :tail, stack_id: @stack.to_param, sha: @commit.sha
25
+ assert_response :success
26
+ assert_json 'url', nil
27
+ end
27
28
 
28
- test ":tail returns only the output after the provided offset" do
29
- @checks.status = 'success'
30
- get :tail, stack_id: @stack.to_param, sha: @commit.sha, since: 5
31
- assert_response :success
32
- assert_json 'output', 'r'
29
+ test ":tail returns only the output after the provided offset" do
30
+ @checks.status = 'success'
31
+ get :tail, stack_id: @stack.to_param, sha: @commit.sha, since: 5
32
+ assert_response :success
33
+ assert_json 'output', 'r'
34
+ end
33
35
  end
34
36
  end