static 1.0.0 → 1.0.1

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 (296) hide show
  1. checksums.yaml +7 -0
  2. data/bin/static +11 -0
  3. data/lib/static/cli.rb +2 -2
  4. data/lib/static/version.rb +1 -1
  5. data/vendor/cfoundry-0.5.2/LICENSE +746 -0
  6. data/vendor/cfoundry-0.5.2/Rakefile +38 -0
  7. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/applications.rb +53 -0
  8. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/domains.rb +16 -0
  9. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/frameworks.rb +22 -0
  10. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/helper.rb +131 -0
  11. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/login.rb +21 -0
  12. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/organization_users.rb +21 -0
  13. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/organizations.rb +70 -0
  14. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/routes.rb +26 -0
  15. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/runtimes.rb +22 -0
  16. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/service_bindings.rb +22 -0
  17. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/service_instances.rb +22 -0
  18. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/services.rb +25 -0
  19. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/spaces.rb +49 -0
  20. data/vendor/cfoundry-0.5.2/lib/cc_api_stub/users.rb +84 -0
  21. data/vendor/cfoundry-0.5.2/lib/cc_api_stub.rb +17 -0
  22. data/vendor/cfoundry-0.5.2/lib/cfoundry/auth_token.rb +63 -0
  23. data/vendor/cfoundry-0.5.2/lib/cfoundry/baseclient.rb +201 -0
  24. data/vendor/cfoundry-0.5.2/lib/cfoundry/chatty_hash.rb +46 -0
  25. data/vendor/cfoundry-0.5.2/lib/cfoundry/client.rb +46 -0
  26. data/vendor/cfoundry-0.5.2/lib/cfoundry/concerns/login_helpers.rb +13 -0
  27. data/vendor/cfoundry-0.5.2/lib/cfoundry/errors.rb +160 -0
  28. data/vendor/cfoundry-0.5.2/lib/cfoundry/rest_client.rb +299 -0
  29. data/vendor/cfoundry-0.5.2/lib/cfoundry/test_support.rb +3 -0
  30. data/vendor/cfoundry-0.5.2/lib/cfoundry/trace_helpers.rb +40 -0
  31. data/vendor/cfoundry-0.5.2/lib/cfoundry/uaaclient.rb +112 -0
  32. data/vendor/cfoundry-0.5.2/lib/cfoundry/upload_helpers.rb +186 -0
  33. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/app.rb +363 -0
  34. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/base.rb +71 -0
  35. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/client.rb +193 -0
  36. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/framework.rb +21 -0
  37. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/model.rb +178 -0
  38. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/model_magic.rb +129 -0
  39. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/runtime.rb +24 -0
  40. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/service.rb +39 -0
  41. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/service_instance.rb +32 -0
  42. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/service_plan.rb +19 -0
  43. data/vendor/cfoundry-0.5.2/lib/cfoundry/v1/user.rb +22 -0
  44. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/app.rb +392 -0
  45. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/base.rb +83 -0
  46. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/client.rb +138 -0
  47. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/domain.rb +11 -0
  48. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/framework.rb +14 -0
  49. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/model.rb +148 -0
  50. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/model_magic.rb +449 -0
  51. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/organization.rb +16 -0
  52. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/route.rb +15 -0
  53. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/runtime.rb +12 -0
  54. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service.rb +19 -0
  55. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service_auth_token.rb +9 -0
  56. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service_binding.rb +10 -0
  57. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service_instance.rb +14 -0
  58. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/service_plan.rb +12 -0
  59. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/space.rb +18 -0
  60. data/vendor/cfoundry-0.5.2/lib/cfoundry/v2/user.rb +64 -0
  61. data/vendor/cfoundry-0.5.2/lib/cfoundry/validator.rb +39 -0
  62. data/vendor/cfoundry-0.5.2/lib/cfoundry/version.rb +4 -0
  63. data/vendor/cfoundry-0.5.2/lib/cfoundry/zip.rb +56 -0
  64. data/vendor/cfoundry-0.5.2/lib/cfoundry.rb +2 -0
  65. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/applications_spec.rb +69 -0
  66. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/domains_spec.rb +19 -0
  67. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/frameworks_spec.rb +19 -0
  68. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/login_spec.rb +20 -0
  69. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/organization_users_spec.rb +19 -0
  70. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/organizations_spec.rb +97 -0
  71. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/routes_spec.rb +19 -0
  72. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/runtimes_spec.rb +19 -0
  73. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/service_bindings_spec.rb +13 -0
  74. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/service_instances_spec.rb +19 -0
  75. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/services_spec.rb +12 -0
  76. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/spaces_spec.rb +38 -0
  77. data/vendor/cfoundry-0.5.2/spec/cc_api_stub/users_spec.rb +107 -0
  78. data/vendor/cfoundry-0.5.2/spec/cfoundry/auth_token_spec.rb +125 -0
  79. data/vendor/cfoundry-0.5.2/spec/cfoundry/baseclient_spec.rb +225 -0
  80. data/vendor/cfoundry-0.5.2/spec/cfoundry/client_spec.rb +15 -0
  81. data/vendor/cfoundry-0.5.2/spec/cfoundry/errors_spec.rb +80 -0
  82. data/vendor/cfoundry-0.5.2/spec/cfoundry/rest_client_spec.rb +281 -0
  83. data/vendor/cfoundry-0.5.2/spec/cfoundry/trace_helpers_spec.rb +72 -0
  84. data/vendor/cfoundry-0.5.2/spec/cfoundry/uaaclient_spec.rb +332 -0
  85. data/vendor/cfoundry-0.5.2/spec/cfoundry/upload_helpers_spec.rb +174 -0
  86. data/vendor/cfoundry-0.5.2/spec/cfoundry/v1/base_spec.rb +58 -0
  87. data/vendor/cfoundry-0.5.2/spec/cfoundry/v1/client_spec.rb +17 -0
  88. data/vendor/cfoundry-0.5.2/spec/cfoundry/v1/model_magic_spec.rb +43 -0
  89. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/app_spec.rb +144 -0
  90. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/base_spec.rb +299 -0
  91. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/client_spec.rb +73 -0
  92. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/model_magic_spec.rb +173 -0
  93. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/organization_spec.rb +15 -0
  94. data/vendor/cfoundry-0.5.2/spec/cfoundry/v2/space_spec.rb +15 -0
  95. data/vendor/cfoundry-0.5.2/spec/fakes/app_fake.rb +5 -0
  96. data/vendor/cfoundry-0.5.2/spec/fakes/domain_fake.rb +5 -0
  97. data/vendor/cfoundry-0.5.2/spec/fakes/framework_fake.rb +5 -0
  98. data/vendor/cfoundry-0.5.2/spec/fakes/organization_fake.rb +5 -0
  99. data/vendor/cfoundry-0.5.2/spec/fakes/route_fake.rb +5 -0
  100. data/vendor/cfoundry-0.5.2/spec/fakes/runtime_fake.rb +5 -0
  101. data/vendor/cfoundry-0.5.2/spec/fakes/service_fake.rb +5 -0
  102. data/vendor/cfoundry-0.5.2/spec/fakes/service_instance_fake.rb +5 -0
  103. data/vendor/cfoundry-0.5.2/spec/fakes/service_plan_fake.rb +5 -0
  104. data/vendor/cfoundry-0.5.2/spec/fakes/space_fake.rb +5 -0
  105. data/vendor/cfoundry-0.5.2/spec/fakes/user_fake.rb +5 -0
  106. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_dotfiles/xyz +1 -0
  107. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_nested_directories/foo/bar/baz/fizz +0 -0
  108. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_nested_directories/xyz +0 -0
  109. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/ignored_dir/file_in_ignored_dir.txt +1 -0
  110. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/ignored_file.txt +1 -0
  111. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/non_ignored_dir/file_in_non_ignored_dir.txt +1 -0
  112. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/non_ignored_dir/ignored_file.txt +1 -0
  113. data/vendor/cfoundry-0.5.2/spec/fixtures/apps/with_vmcignore/non_ignored_file.txt +1 -0
  114. data/vendor/cfoundry-0.5.2/spec/fixtures/empty_file +0 -0
  115. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_application.json +24 -0
  116. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_application_summary.json +57 -0
  117. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_application.json +11 -0
  118. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_domain.json +10 -0
  119. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_organization.json +11 -0
  120. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_route.json +13 -0
  121. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_service_instance.json +11 -0
  122. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_space.json +11 -0
  123. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_created_user.json +11 -0
  124. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_empty_search.json +7 -0
  125. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_frameworks.json +20 -0
  126. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization.json +144 -0
  127. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization_domains.json +34 -0
  128. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization_search.json +37 -0
  129. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization_summary.json +19 -0
  130. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_organization_users.json +81 -0
  131. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_runtimes.json +20 -0
  132. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_binding.json +22 -0
  133. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_bindings.json +24 -0
  134. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_instance.json +81 -0
  135. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_instances.json +0 -0
  136. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_service_types.json +124 -0
  137. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_space.json +45 -0
  138. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_space_summary.json +86 -0
  139. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_stats.json +29 -0
  140. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_user.json +112 -0
  141. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_user_organizations.json +92 -0
  142. data/vendor/cfoundry-0.5.2/spec/fixtures/fake_cc_user_with_managers.json +85 -0
  143. data/vendor/cfoundry-0.5.2/spec/spec_helper.rb +20 -0
  144. data/vendor/cfoundry-0.5.2/spec/support/fake_helper.rb +236 -0
  145. data/vendor/cfoundry-0.5.2/spec/support/randoms.rb +3 -0
  146. data/vendor/cfoundry-0.5.2/spec/support/shared_examples/cc_api_stub_request_examples.rb +79 -0
  147. data/vendor/cfoundry-0.5.2/spec/support/shared_examples/client_login_examples.rb +46 -0
  148. data/vendor/cfoundry-0.5.2/spec/support/shared_examples/model_summary_examples.rb +34 -0
  149. data/vendor/cfoundry-0.5.2/spec/support/v1_fake_helper.rb +144 -0
  150. data/vendor/cfoundry-0.5.2/vendor/errors/README.md +4 -0
  151. data/vendor/cfoundry-0.5.2/vendor/errors/v1.yml +189 -0
  152. data/vendor/cfoundry-0.5.2/vendor/errors/v2.yml +360 -0
  153. data/vendor/tunnel-vmc-plugin-0.2.2/Rakefile +39 -0
  154. data/vendor/tunnel-vmc-plugin-0.2.2/config/clients.yml +17 -0
  155. data/vendor/tunnel-vmc-plugin-0.2.2/helper-app/Gemfile +10 -0
  156. data/vendor/tunnel-vmc-plugin-0.2.2/helper-app/server.rb +43 -0
  157. data/vendor/tunnel-vmc-plugin-0.2.2/lib/tunnel-vmc-plugin/plugin.rb +178 -0
  158. data/vendor/tunnel-vmc-plugin-0.2.2/lib/tunnel-vmc-plugin/tunnel.rb +308 -0
  159. data/vendor/tunnel-vmc-plugin-0.2.2/lib/tunnel-vmc-plugin/version.rb +3 -0
  160. data/vendor/tunnel-vmc-plugin-0.2.2/spec/plugin_spec.rb +29 -0
  161. data/vendor/tunnel-vmc-plugin-0.2.2/spec/spec_helper.rb +15 -0
  162. data/vendor/vmc-0.5.0/LICENSE +1277 -0
  163. data/vendor/vmc-0.5.0/Rakefile +101 -0
  164. data/vendor/vmc-0.5.0/bin/vmc +11 -0
  165. data/vendor/vmc-0.5.0/lib/vmc/cli/app/app.rb +45 -0
  166. data/vendor/vmc-0.5.0/lib/vmc/cli/app/apps.rb +99 -0
  167. data/vendor/vmc-0.5.0/lib/vmc/cli/app/base.rb +82 -0
  168. data/vendor/vmc-0.5.0/lib/vmc/cli/app/crashes.rb +42 -0
  169. data/vendor/vmc-0.5.0/lib/vmc/cli/app/delete.rb +95 -0
  170. data/vendor/vmc-0.5.0/lib/vmc/cli/app/deprecated.rb +11 -0
  171. data/vendor/vmc-0.5.0/lib/vmc/cli/app/env.rb +78 -0
  172. data/vendor/vmc-0.5.0/lib/vmc/cli/app/files.rb +137 -0
  173. data/vendor/vmc-0.5.0/lib/vmc/cli/app/health.rb +26 -0
  174. data/vendor/vmc-0.5.0/lib/vmc/cli/app/instances.rb +53 -0
  175. data/vendor/vmc-0.5.0/lib/vmc/cli/app/logs.rb +76 -0
  176. data/vendor/vmc-0.5.0/lib/vmc/cli/app/push/create.rb +153 -0
  177. data/vendor/vmc-0.5.0/lib/vmc/cli/app/push/interactions.rb +94 -0
  178. data/vendor/vmc-0.5.0/lib/vmc/cli/app/push/sync.rb +64 -0
  179. data/vendor/vmc-0.5.0/lib/vmc/cli/app/push.rb +105 -0
  180. data/vendor/vmc-0.5.0/lib/vmc/cli/app/rename.rb +35 -0
  181. data/vendor/vmc-0.5.0/lib/vmc/cli/app/restart.rb +20 -0
  182. data/vendor/vmc-0.5.0/lib/vmc/cli/app/scale.rb +71 -0
  183. data/vendor/vmc-0.5.0/lib/vmc/cli/app/start.rb +150 -0
  184. data/vendor/vmc-0.5.0/lib/vmc/cli/app/stats.rb +67 -0
  185. data/vendor/vmc-0.5.0/lib/vmc/cli/app/stop.rb +27 -0
  186. data/vendor/vmc-0.5.0/lib/vmc/cli/domain/base.rb +12 -0
  187. data/vendor/vmc-0.5.0/lib/vmc/cli/domain/domains.rb +40 -0
  188. data/vendor/vmc-0.5.0/lib/vmc/cli/domain/map.rb +55 -0
  189. data/vendor/vmc-0.5.0/lib/vmc/cli/domain/unmap.rb +56 -0
  190. data/vendor/vmc-0.5.0/lib/vmc/cli/help.rb +15 -0
  191. data/vendor/vmc-0.5.0/lib/vmc/cli/interactive.rb +105 -0
  192. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/base.rb +14 -0
  193. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/create.rb +32 -0
  194. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/delete.rb +73 -0
  195. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/org.rb +45 -0
  196. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/orgs.rb +35 -0
  197. data/vendor/vmc-0.5.0/lib/vmc/cli/organization/rename.rb +36 -0
  198. data/vendor/vmc-0.5.0/lib/vmc/cli/route/base.rb +12 -0
  199. data/vendor/vmc-0.5.0/lib/vmc/cli/route/map.rb +80 -0
  200. data/vendor/vmc-0.5.0/lib/vmc/cli/route/routes.rb +26 -0
  201. data/vendor/vmc-0.5.0/lib/vmc/cli/route/unmap.rb +94 -0
  202. data/vendor/vmc-0.5.0/lib/vmc/cli/service/base.rb +8 -0
  203. data/vendor/vmc-0.5.0/lib/vmc/cli/service/bind.rb +44 -0
  204. data/vendor/vmc-0.5.0/lib/vmc/cli/service/create.rb +126 -0
  205. data/vendor/vmc-0.5.0/lib/vmc/cli/service/delete.rb +86 -0
  206. data/vendor/vmc-0.5.0/lib/vmc/cli/service/rename.rb +35 -0
  207. data/vendor/vmc-0.5.0/lib/vmc/cli/service/service.rb +42 -0
  208. data/vendor/vmc-0.5.0/lib/vmc/cli/service/services.rb +114 -0
  209. data/vendor/vmc-0.5.0/lib/vmc/cli/service/unbind.rb +38 -0
  210. data/vendor/vmc-0.5.0/lib/vmc/cli/space/base.rb +21 -0
  211. data/vendor/vmc-0.5.0/lib/vmc/cli/space/create.rb +60 -0
  212. data/vendor/vmc-0.5.0/lib/vmc/cli/space/delete.rb +95 -0
  213. data/vendor/vmc-0.5.0/lib/vmc/cli/space/rename.rb +39 -0
  214. data/vendor/vmc-0.5.0/lib/vmc/cli/space/space.rb +64 -0
  215. data/vendor/vmc-0.5.0/lib/vmc/cli/space/spaces.rb +55 -0
  216. data/vendor/vmc-0.5.0/lib/vmc/cli/space/switch.rb +16 -0
  217. data/vendor/vmc-0.5.0/lib/vmc/cli/start/base.rb +83 -0
  218. data/vendor/vmc-0.5.0/lib/vmc/cli/start/colors.rb +13 -0
  219. data/vendor/vmc-0.5.0/lib/vmc/cli/start/info.rb +126 -0
  220. data/vendor/vmc-0.5.0/lib/vmc/cli/start/login.rb +96 -0
  221. data/vendor/vmc-0.5.0/lib/vmc/cli/start/logout.rb +17 -0
  222. data/vendor/vmc-0.5.0/lib/vmc/cli/start/target.rb +71 -0
  223. data/vendor/vmc-0.5.0/lib/vmc/cli/start/target_interactions.rb +37 -0
  224. data/vendor/vmc-0.5.0/lib/vmc/cli/start/targets.rb +16 -0
  225. data/vendor/vmc-0.5.0/lib/vmc/cli/user/base.rb +29 -0
  226. data/vendor/vmc-0.5.0/lib/vmc/cli/user/create.rb +39 -0
  227. data/vendor/vmc-0.5.0/lib/vmc/cli/user/delete.rb +27 -0
  228. data/vendor/vmc-0.5.0/lib/vmc/cli/user/passwd.rb +50 -0
  229. data/vendor/vmc-0.5.0/lib/vmc/cli/user/register.rb +42 -0
  230. data/vendor/vmc-0.5.0/lib/vmc/cli/user/users.rb +32 -0
  231. data/vendor/vmc-0.5.0/lib/vmc/cli.rb +475 -0
  232. data/vendor/vmc-0.5.0/lib/vmc/constants.rb +13 -0
  233. data/vendor/vmc-0.5.0/lib/vmc/detect.rb +129 -0
  234. data/vendor/vmc-0.5.0/lib/vmc/errors.rb +17 -0
  235. data/vendor/vmc-0.5.0/lib/vmc/plugin.rb +56 -0
  236. data/vendor/vmc-0.5.0/lib/vmc/spacing.rb +89 -0
  237. data/vendor/vmc-0.5.0/lib/vmc/spec_helper.rb +1 -0
  238. data/vendor/vmc-0.5.0/lib/vmc/test_support.rb +6 -0
  239. data/vendor/vmc-0.5.0/lib/vmc/version.rb +3 -0
  240. data/vendor/vmc-0.5.0/lib/vmc.rb +8 -0
  241. data/vendor/vmc-0.5.0/spec/assets/hello-sinatra/Gemfile +3 -0
  242. data/vendor/vmc-0.5.0/spec/assets/hello-sinatra/config.ru +3 -0
  243. data/vendor/vmc-0.5.0/spec/assets/hello-sinatra/main.rb +6 -0
  244. data/vendor/vmc-0.5.0/spec/assets/specker_runner/specker_runner_input.rb +6 -0
  245. data/vendor/vmc-0.5.0/spec/assets/specker_runner/specker_runner_pause.rb +5 -0
  246. data/vendor/vmc-0.5.0/spec/console_app_specker/console_app_specker_matchers_spec.rb +152 -0
  247. data/vendor/vmc-0.5.0/spec/console_app_specker/specker_runner_spec.rb +157 -0
  248. data/vendor/vmc-0.5.0/spec/features/v1/new_user_flow_spec.rb +109 -0
  249. data/vendor/vmc-0.5.0/spec/features/v2/account_lifecycle_spec.rb +64 -0
  250. data/vendor/vmc-0.5.0/spec/features/v2/push_flow_spec.rb +125 -0
  251. data/vendor/vmc-0.5.0/spec/features/v2/switching_targets_spec.rb +32 -0
  252. data/vendor/vmc-0.5.0/spec/spec_helper.rb +63 -0
  253. data/vendor/vmc-0.5.0/spec/support/command_helper.rb +80 -0
  254. data/vendor/vmc-0.5.0/spec/support/config_helper.rb +15 -0
  255. data/vendor/vmc-0.5.0/spec/support/console_app_specker_matchers.rb +75 -0
  256. data/vendor/vmc-0.5.0/spec/support/fake_home_dir.rb +55 -0
  257. data/vendor/vmc-0.5.0/spec/support/interact_helper.rb +29 -0
  258. data/vendor/vmc-0.5.0/spec/support/shared_examples/errors.rb +40 -0
  259. data/vendor/vmc-0.5.0/spec/support/shared_examples/input.rb +14 -0
  260. data/vendor/vmc-0.5.0/spec/support/specker_runner.rb +79 -0
  261. data/vendor/vmc-0.5.0/spec/support/tracking_expector.rb +71 -0
  262. data/vendor/vmc-0.5.0/spec/vmc/cli/app/base_spec.rb +17 -0
  263. data/vendor/vmc-0.5.0/spec/vmc/cli/app/delete_spec.rb +188 -0
  264. data/vendor/vmc-0.5.0/spec/vmc/cli/app/instances_spec.rb +65 -0
  265. data/vendor/vmc-0.5.0/spec/vmc/cli/app/push/create_spec.rb +591 -0
  266. data/vendor/vmc-0.5.0/spec/vmc/cli/app/push_spec.rb +369 -0
  267. data/vendor/vmc-0.5.0/spec/vmc/cli/app/rename_spec.rb +104 -0
  268. data/vendor/vmc-0.5.0/spec/vmc/cli/app/scale_spec.rb +76 -0
  269. data/vendor/vmc-0.5.0/spec/vmc/cli/app/start_spec.rb +168 -0
  270. data/vendor/vmc-0.5.0/spec/vmc/cli/app/stats_spec.rb +68 -0
  271. data/vendor/vmc-0.5.0/spec/vmc/cli/domain/map_spec.rb +130 -0
  272. data/vendor/vmc-0.5.0/spec/vmc/cli/domain/unmap_spec.rb +69 -0
  273. data/vendor/vmc-0.5.0/spec/vmc/cli/organization/orgs_spec.rb +108 -0
  274. data/vendor/vmc-0.5.0/spec/vmc/cli/organization/rename_spec.rb +113 -0
  275. data/vendor/vmc-0.5.0/spec/vmc/cli/route/map_spec.rb +140 -0
  276. data/vendor/vmc-0.5.0/spec/vmc/cli/route/unmap_spec.rb +221 -0
  277. data/vendor/vmc-0.5.0/spec/vmc/cli/service/bind_spec.rb +25 -0
  278. data/vendor/vmc-0.5.0/spec/vmc/cli/service/delete_spec.rb +22 -0
  279. data/vendor/vmc-0.5.0/spec/vmc/cli/service/rename_spec.rb +105 -0
  280. data/vendor/vmc-0.5.0/spec/vmc/cli/service/service_spec.rb +23 -0
  281. data/vendor/vmc-0.5.0/spec/vmc/cli/service/unbind_spec.rb +25 -0
  282. data/vendor/vmc-0.5.0/spec/vmc/cli/space/create_spec.rb +73 -0
  283. data/vendor/vmc-0.5.0/spec/vmc/cli/space/rename_spec.rb +102 -0
  284. data/vendor/vmc-0.5.0/spec/vmc/cli/space/spaces_spec.rb +104 -0
  285. data/vendor/vmc-0.5.0/spec/vmc/cli/space/switch_space_spec.rb +55 -0
  286. data/vendor/vmc-0.5.0/spec/vmc/cli/start/info_spec.rb +160 -0
  287. data/vendor/vmc-0.5.0/spec/vmc/cli/start/login_spec.rb +142 -0
  288. data/vendor/vmc-0.5.0/spec/vmc/cli/start/logout_spec.rb +50 -0
  289. data/vendor/vmc-0.5.0/spec/vmc/cli/start/target_spec.rb +123 -0
  290. data/vendor/vmc-0.5.0/spec/vmc/cli/user/create_spec.rb +54 -0
  291. data/vendor/vmc-0.5.0/spec/vmc/cli/user/delete_spec.rb +51 -0
  292. data/vendor/vmc-0.5.0/spec/vmc/cli/user/passwd_spec.rb +102 -0
  293. data/vendor/vmc-0.5.0/spec/vmc/cli/user/register_spec.rb +140 -0
  294. data/vendor/vmc-0.5.0/spec/vmc/cli_spec.rb +448 -0
  295. data/vendor/vmc-0.5.0/spec/vmc/detect_spec.rb +54 -0
  296. metadata +446 -43
@@ -0,0 +1,140 @@
1
+ require 'spec_helper'
2
+
3
+ command VMC::Route::Map do
4
+ let(:client) { fake_client(:apps => apps, :routes => routes) }
5
+
6
+ let(:app) { fake(:app, :space => space, :name => "app-name") }
7
+ let(:space) { fake(:space, :domains => space_domains) }
8
+ let(:domain) { fake(:domain) }
9
+
10
+ let(:apps) { [app] }
11
+ let(:routes) { [] }
12
+ let(:domains) { [domain] }
13
+
14
+ let(:space_domains) { domains }
15
+
16
+ let(:host_name) { "some-host" }
17
+
18
+ context 'when targeting v2' do
19
+ shared_examples "mapping the route to the app" do
20
+ context 'and the domain is mapped to the space' do
21
+ let(:space_domains) { [domain] }
22
+
23
+ context 'and the route is mapped to the space' do
24
+ let(:routes) { [route] }
25
+ let(:route) do
26
+ fake(:route, :space => space, :host => host_name,
27
+ :domain => domain)
28
+ end
29
+
30
+ it 'binds the route to the app' do
31
+ mock(app).add_route(route)
32
+ subject
33
+ end
34
+ end
35
+
36
+ context 'and the route is not mapped to the space' do
37
+ let(:new_route) { fake(:route) }
38
+
39
+ before do
40
+ stub(client).route { new_route }
41
+ stub(app).add_route
42
+ stub(new_route).create!
43
+ end
44
+
45
+ it 'indicates that it is creating a route' do
46
+ subject
47
+ expect(output).to say("Creating route #{host_name}.#{domain.name}")
48
+ end
49
+
50
+ it "creates the route in the app's space" do
51
+ mock(new_route).create!
52
+ subject
53
+ expect(new_route.host).to eq host_name
54
+ expect(new_route.domain).to eq domain
55
+ expect(new_route.space).to eq space
56
+ end
57
+
58
+ it 'indicates that it is binding the route' do
59
+ subject
60
+ expect(output).to say("Binding #{host_name}.#{domain.name} to #{app.name}")
61
+ end
62
+
63
+ it 'binds the route to the app' do
64
+ mock(app).add_route(new_route)
65
+ subject
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ context 'when an app is specified' do
72
+ subject { vmc %W[map #{app.name} #{host_name} #{domain.name}] }
73
+
74
+ context 'and the domain is not already mapped to the space' do
75
+ let(:space_domains) { [] }
76
+
77
+ it 'indicates that the domain is invalid' do
78
+ subject
79
+ expect(error_output).to say("Unknown domain")
80
+ end
81
+ end
82
+
83
+ include_examples "mapping the route to the app"
84
+ end
85
+
86
+ context 'when an app is not specified' do
87
+ let(:space_domains) { [domain] }
88
+ let(:new_route) { fake(:route) }
89
+
90
+ subject { vmc %W[map --host #{host_name} #{domain.name}] }
91
+
92
+ before { stub_ask("Which application?", anything) { app } }
93
+
94
+ it 'asks for an app' do
95
+ stub(client).route { new_route }
96
+ stub(app).add_route
97
+ stub(new_route).create!
98
+ mock_ask("Which application?", anything) { app }
99
+ subject
100
+ end
101
+
102
+ include_examples "mapping the route to the app"
103
+ end
104
+
105
+ context "when a host is not specified" do
106
+ let(:new_route) { fake(:route) }
107
+
108
+ subject { vmc %W[map #{app.name} #{domain.name}] }
109
+
110
+ before do
111
+ stub(client).route { new_route }
112
+ stub(app).add_route
113
+ stub(new_route).create!
114
+ end
115
+
116
+ it "creates a route with an empty string as its host" do
117
+ mock(new_route).create!
118
+ subject
119
+ expect(new_route.host).to eq ""
120
+ end
121
+ end
122
+ end
123
+
124
+ context 'when targeting v1' do
125
+ let(:client) { v1_fake_client }
126
+ let(:app) { v1_fake :app, :name => "foo" }
127
+
128
+ subject { vmc %W[map #{app.name} foo.bar.com] }
129
+
130
+ before do
131
+ stub(client).app_by_name("foo") { app }
132
+ end
133
+
134
+ it "adds the domain to the app's urls" do
135
+ stub(app).update!
136
+ subject
137
+ expect(app.urls).to include "foo.bar.com"
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,221 @@
1
+ require 'spec_helper'
2
+
3
+ command VMC::Route::Unmap do
4
+ let(:client) { fake_client :apps => [app] }
5
+
6
+ let(:app){ fake(:app, :space => space, :name => "app-name") }
7
+ let(:space) { fake(:space, :name => "space-name", :domains => space_domains) }
8
+ let(:domain) { fake(:domain, :name => domain_name ) }
9
+ let(:domain_name) { "some-domain.com" }
10
+ let(:host_name) { "some-host" }
11
+ let(:url) { "#{host_name}.#{domain_name}" }
12
+ let(:space_domains) { [domain] }
13
+
14
+ describe 'metadata' do
15
+ let(:command) { Mothership.commands[:delete_service] }
16
+
17
+ describe 'command' do
18
+ subject { command }
19
+ its(:description) { should eq "Delete a service" }
20
+ it { expect(Mothership::Help.group(:services, :manage)).to include(subject) }
21
+ end
22
+
23
+ include_examples 'inputs must have descriptions'
24
+
25
+ describe 'arguments' do
26
+ subject { command.arguments }
27
+ it 'has the correct argument order' do
28
+ should eq([{:type => :optional, :value => nil, :name => :service }])
29
+ end
30
+ end
31
+ end
32
+
33
+ context 'when targeting v2' do
34
+ context "when an app and a url are specified" do
35
+ subject { vmc %W[unmap #{url} #{app.name}] }
36
+
37
+ context "when the given route is mapped to the given app" do
38
+ let(:app) { fake(:app, :space => space, :name => "app-name", :routes => [route]) }
39
+ let(:route) { fake(:route, :space => space, :host => host_name, :domain => domain) }
40
+
41
+ it "unmaps the url from the app" do
42
+ mock(app).remove_route(route)
43
+ subject
44
+ end
45
+ end
46
+
47
+ context "when the given route is NOT mapped to the given app" do
48
+ it "displays an error" do
49
+ subject
50
+ expect(error_output).to say("Unknown route")
51
+ end
52
+ end
53
+ end
54
+
55
+ context "when only an app is specified" do
56
+ let(:other_route) { fake(:route, :host => "abcd", :domain => domain) }
57
+ let(:route) { fake(:route, :host => "efgh", :domain => domain) }
58
+ let(:app) { fake(:app, :space => space, :routes => [route, other_route] )}
59
+
60
+ subject { vmc %W[unmap --app #{app.name}] }
61
+
62
+ it "asks the user to select from the app's urls" do
63
+ mock_ask("Which URL?", anything) do |_, opts|
64
+ expect(opts[:choices]).to eq [other_route, route]
65
+ route
66
+ end
67
+
68
+ stub(app).remove_route(anything)
69
+
70
+ subject
71
+ end
72
+
73
+ it "unmaps the selected url from the app" do
74
+ stub_ask("Which URL?", anything) { route }
75
+ mock(app).remove_route(route)
76
+ subject
77
+ end
78
+ end
79
+
80
+ context "when an app is specified and the --all option is given" do
81
+ let(:other_route) { fake(:route, :host => "abcd", :domain => domain) }
82
+ let(:route) { fake(:route, :host => "efgh", :domain => domain) }
83
+ let(:app) { fake(:app, :routes => [route, other_route]) }
84
+
85
+ subject { vmc %W[unmap --all --app #{app.name}] }
86
+
87
+ it "unmaps all routes from the given app" do
88
+ mock(app).remove_route(route)
89
+ mock(app).remove_route(other_route)
90
+ subject
91
+ end
92
+ end
93
+
94
+ context "when a url is specified and the --delete option is given" do
95
+ let(:route) { fake(:route, :host => host_name, :domain => domain) }
96
+ let(:client) { fake_client :routes => [route] }
97
+
98
+ subject { vmc %W[unmap #{url} --delete] }
99
+
100
+ it "deletes the route" do
101
+ mock(route).delete!
102
+ subject
103
+ end
104
+ end
105
+
106
+ context "when the --delete and --all options are both passed" do
107
+ let(:other_route) { fake(:route, :host => "abcd", :domain => domain) }
108
+ let(:route) { fake(:route, :host => "efgh", :domain => domain) }
109
+ let(:client) { fake_client :routes => [route, other_route] }
110
+
111
+ subject { vmc %W[unmap --delete --all] }
112
+
113
+ before do
114
+ any_instance_of(route.class) do |route|
115
+ stub(route).delete!
116
+ end
117
+ end
118
+
119
+ it "asks if the user really wants to unmap all urls" do
120
+ mock_ask("Really delete ALL URLS?", :default => false) { false }
121
+ subject
122
+ end
123
+
124
+ context "when the user responds with a yes" do
125
+ before { stub_ask("Really delete ALL URLS?", anything) { true } }
126
+
127
+ it "deletes all the user's routes" do
128
+ client.routes.each { |r| mock(r).delete! }
129
+ subject
130
+ end
131
+ end
132
+
133
+ context "when the user responds with a no" do
134
+ before { stub_ask("Really delete ALL URLS?", anything) { false } }
135
+
136
+ it "does not delete any routes" do
137
+ any_instance_of(route.class) do |route|
138
+ dont_allow(route).delete!
139
+ end
140
+ subject
141
+ end
142
+ end
143
+ end
144
+
145
+ context "when only a url is passed" do
146
+ let(:route) { fake(:route, :host => host_name, :domain => domain) }
147
+ let(:client) { fake_client :routes => [route] }
148
+
149
+ subject { vmc %W[unmap #{url}] }
150
+
151
+ it "displays an error message" do
152
+ subject
153
+ expect(error_output).to say("Missing either --delete or --app.")
154
+ end
155
+ end
156
+ end
157
+
158
+ context 'when targeting v1' do
159
+ let(:client) { CFoundry::V1::Client.new }
160
+ let(:app) { CFoundry::V1::App.new("some-app", client) }
161
+ let(:other_url) { "some.other.url.com" }
162
+
163
+ before do
164
+ stub(client).apps { app }
165
+ stub(client).app_by_name(app.name) { app }
166
+ end
167
+
168
+ context "when an app and a url are specified" do
169
+ subject { vmc %W[unmap #{url} #{app.name}] }
170
+
171
+ context "when the given url is not mapped to the app" do
172
+ before { app.urls = [other_url] }
173
+
174
+ it "displays an error message" do
175
+ subject
176
+ expect(error_output).to say(/URL .* not mapped/)
177
+ end
178
+ end
179
+
180
+ context "when the given url is mapped to the app" do
181
+ before { app.urls = [url, other_url] }
182
+
183
+ it "unmaps the url from the app" do
184
+ mock(app).update!
185
+ subject
186
+ expect(app.urls).to eq [other_url]
187
+ end
188
+ end
189
+ end
190
+
191
+ context "when only an app is specified" do
192
+ subject { vmc %W[unmap --app #{app.name}] }
193
+
194
+ before { app.urls = [url, other_url] }
195
+
196
+ it "asks for the url" do
197
+ mock_ask("Which URL?", :choices => [url, other_url]) { url }
198
+ stub(app).update!
199
+ subject
200
+ end
201
+
202
+ it "unmaps the selected url from the app" do
203
+ stub_ask("Which URL?", anything) { url }
204
+ mock(app).update!
205
+ subject
206
+ expect(app.urls).to eq [other_url]
207
+ end
208
+ end
209
+
210
+ context "when an app is specified and the --all option is given" do
211
+ subject { vmc %W[unmap --all --app #{app.name}] }
212
+
213
+ it "unmaps all routes from the given app" do
214
+ app.urls = ["foo", "bar"]
215
+ mock(app).update!
216
+ subject
217
+ expect(app.urls).to eq []
218
+ end
219
+ end
220
+ end
221
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe VMC::Service::Bind do
4
+ describe 'metadata' do
5
+ let(:command) { Mothership.commands[:bind_service] }
6
+
7
+ describe 'command' do
8
+ subject { command }
9
+ its(:description) { should eq "Bind a service to an application" }
10
+ it { expect(Mothership::Help.group(:services, :manage)).to include(subject) }
11
+ end
12
+
13
+ include_examples 'inputs must have descriptions'
14
+
15
+ describe 'arguments' do
16
+ subject { command.arguments }
17
+ it 'has the correct argument order' do
18
+ should eq([
19
+ { :type => :optional, :value => nil, :name => :service },
20
+ { :type => :optional, :value => nil, :name => :app }
21
+ ])
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe VMC::Service::Delete do
4
+ describe 'metadata' do
5
+ let(:command) { Mothership.commands[:delete_service] }
6
+
7
+ describe 'command' do
8
+ subject { command }
9
+ its(:description) { should eq "Delete a service" }
10
+ it { expect(Mothership::Help.group(:services, :manage)).to include(subject) }
11
+ end
12
+
13
+ include_examples 'inputs must have descriptions'
14
+
15
+ describe 'arguments' do
16
+ subject { command.arguments }
17
+ it 'has the correct argument order' do
18
+ should eq([{:type => :optional, :value => nil, :name => :service }])
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,105 @@
1
+ require 'spec_helper'
2
+ require "vmc/cli/service/rename"
3
+
4
+ describe VMC::Service::Rename do
5
+ let(:global) { { :color => false, :quiet => true } }
6
+ let(:inputs) { {} }
7
+ let(:given) { {} }
8
+ let(:client) { fake_client }
9
+ let(:service) {}
10
+ let(:new_name) { "some-new-name" }
11
+
12
+ before do
13
+ any_instance_of(VMC::CLI) do |cli|
14
+ stub(cli).client { client }
15
+ stub(cli).precondition { nil }
16
+ end
17
+ end
18
+
19
+ subject { Mothership.new.invoke(:rename_service, inputs, given, global) }
20
+
21
+ describe 'metadata' do
22
+ let(:command) { Mothership.commands[:rename_service] }
23
+
24
+ describe 'command' do
25
+ subject { command }
26
+ its(:description) { should eq "Rename a service" }
27
+ it { expect(Mothership::Help.group(:services, :manage)).to include(subject) }
28
+ end
29
+
30
+ include_examples 'inputs must have descriptions'
31
+
32
+ describe 'arguments' do
33
+ subject { command.arguments }
34
+ it 'has the correct argument order' do
35
+ should eq([
36
+ { :type => :optional, :value => nil, :name => :service },
37
+ { :type => :optional, :value => nil, :name => :name }
38
+ ])
39
+ end
40
+ end
41
+ end
42
+
43
+ context 'when there are no services' do
44
+ context 'and a service is given' do
45
+ let(:given) { { :service => "some-service" } }
46
+ it { expect { subject }.to raise_error(VMC::UserError, "Unknown service 'some-service'.") }
47
+ end
48
+
49
+ context 'and a service is not given' do
50
+ it { expect { subject }.to raise_error(VMC::UserError, "No services.") }
51
+ end
52
+ end
53
+
54
+ context 'when there are services' do
55
+ let(:client) { fake_client(:service_instances => services) }
56
+ let(:services) { fake_list(:service_instance, 2) }
57
+ let(:renamed_service) { services.first }
58
+
59
+ context 'when the defaults are used' do
60
+ it 'asks for the service and new name and renames' do
61
+ mock_ask("Rename which service?", anything) { renamed_service }
62
+ mock_ask("New name") { new_name }
63
+ mock(renamed_service).name=(new_name)
64
+ mock(renamed_service).update!
65
+ subject
66
+ end
67
+ end
68
+
69
+ context 'when no name is provided, but a service is' do
70
+ let(:given) { { :service => renamed_service.name } }
71
+
72
+ it 'asks for the new name and renames' do
73
+ dont_allow_ask("Rename which service?", anything)
74
+ mock_ask("New name") { new_name }
75
+ mock(renamed_service).name=(new_name)
76
+ mock(renamed_service).update!
77
+ subject
78
+ end
79
+ end
80
+
81
+ context 'when a service is provided and a name' do
82
+ let(:inputs) { { :service => renamed_service, :name => new_name } }
83
+
84
+ it 'renames the service' do
85
+ mock(renamed_service).update!
86
+ subject
87
+ end
88
+
89
+ it 'displays the progress' do
90
+ mock_with_progress("Renaming to #{new_name}")
91
+ mock(renamed_service).update!
92
+
93
+ subject
94
+ end
95
+
96
+ context 'and the name already exists' do
97
+ it 'fails' do
98
+ mock(renamed_service).update! { raise CFoundry::ServiceInstanceNameTaken.new("Taken", 200) }
99
+ expect { subject }.to raise_error(CFoundry::ServiceInstanceNameTaken)
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
105
+
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe VMC::Service::Service do
4
+ describe 'metadata' do
5
+ let(:command) { Mothership.commands[:service] }
6
+
7
+ describe 'command' do
8
+ subject { command }
9
+ its(:description) { should eq "Show service information" }
10
+ it { expect(Mothership::Help.group(:services)).to include(subject) }
11
+ end
12
+
13
+ include_examples 'inputs must have descriptions'
14
+
15
+ describe 'arguments' do
16
+ subject { command.arguments }
17
+ it 'has the correct argument order' do
18
+ should eq([{:type => :required, :value=>nil, :name=>:service}])
19
+ end
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe VMC::Service::Unbind do
4
+ describe 'metadata' do
5
+ let(:command) { Mothership.commands[:unbind_service] }
6
+
7
+ describe 'command' do
8
+ subject { command }
9
+ its(:description) { should eq "Unbind a service from an application" }
10
+ it { expect(Mothership::Help.group(:services, :manage)).to include(subject) }
11
+ end
12
+
13
+ include_examples 'inputs must have descriptions'
14
+
15
+ describe 'arguments' do
16
+ subject { command.arguments }
17
+ it 'has the correct argument order' do
18
+ should eq([
19
+ { :type => :optional, :value => nil, :name => :service },
20
+ { :type => :optional, :value => nil, :name => :app }
21
+ ])
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+ require "vmc/cli/space/create"
3
+
4
+ describe VMC::Space::Create do
5
+ let(:spaces) { fake_list(:space, 3) }
6
+ let(:organization) { fake(:organization, :spaces => spaces) }
7
+ let(:new_space) { stub! }
8
+ let(:client) { fake_client(:current_organization => organization, :spaces => spaces) }
9
+ let(:new_name) { "some-new-name" }
10
+
11
+ before do
12
+ %w{create! organization= name= name add_manager add_developer add_auditor organization}.each do |method|
13
+ new_space.__send__(method.to_sym)
14
+ end
15
+
16
+ stub(client).space { new_space }
17
+ any_instance_of described_class do |cli|
18
+ stub(cli).client { client }
19
+ stub(cli).precondition { nil }
20
+ end
21
+ end
22
+
23
+ describe 'metadata' do
24
+ let(:command) { Mothership.commands[:create_space] }
25
+
26
+ describe 'command' do
27
+ subject { command }
28
+ its(:description) { should eq "Create a space in an organization" }
29
+ it { expect(Mothership::Help.group(:spaces)).to include(subject) }
30
+ end
31
+
32
+ include_examples 'inputs must have descriptions'
33
+
34
+ describe 'arguments' do
35
+ subject { command.arguments }
36
+ it 'has the correct argument order' do
37
+ should eq([
38
+ { :type => :optional, :value => nil, :name => :name },
39
+ { :type => :optional, :value => nil, :name => :organization }
40
+ ])
41
+ end
42
+ end
43
+ end
44
+
45
+ context "when we don't specify an organization" do
46
+ subject { vmc %W[--no-quiet create-space new-space-name] }
47
+
48
+ context "when we have a default organization" do
49
+ it "uses that organization to create a space" do
50
+ subject
51
+
52
+ stdout.rewind
53
+ expect(stdout.readline).to include "Creating space"
54
+ end
55
+ end
56
+
57
+ context "when we don't have a default organization" do
58
+ let(:organization) { nil }
59
+
60
+ it "shows the help for the command" do
61
+ subject
62
+
63
+ stdout.rewind
64
+ expect(stdout.readline).to include "Create a space in an organization"
65
+ end
66
+
67
+ it "does not try to create the space" do
68
+ new_space.create! { raise "should not call this method" } # rr not behaving
69
+ subject
70
+ end
71
+ end
72
+ end
73
+ end