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,168 @@
1
+ require "spec_helper"
2
+ require "webmock/rspec"
3
+
4
+ command VMC::App::Start do
5
+ let(:client) { fake_client :apps => [app] }
6
+ let(:app) { fake :app }
7
+
8
+ subject { vmc %W[start #{app.name}] }
9
+
10
+ context "with an app that's already started" do
11
+ let(:app) { fake :app, :state => "STARTED" }
12
+
13
+ it "skips starting the application" do
14
+ dont_allow(app).start!
15
+ subject
16
+ end
17
+
18
+ it "says the app is already started" do
19
+ subject
20
+ expect(error_output).to say("Application #{app.name} is already started.")
21
+ end
22
+ end
23
+
24
+ context "with an app that's NOT already started" do
25
+ def self.it_says_application_is_starting
26
+ it "says that it's starting the application" do
27
+ subject
28
+ expect(output).to say("Starting #{app.name}... OK")
29
+ end
30
+ end
31
+
32
+ def self.it_prints_log_progress
33
+ it "prints out the log progress" do
34
+ subject
35
+ expect(output).to say(log_text)
36
+ end
37
+ end
38
+
39
+ def self.it_does_not_print_log_progress
40
+ it "does not print the log progress" do
41
+ subject
42
+ expect(output).to_not say(log_text)
43
+ end
44
+ end
45
+
46
+ def self.it_waits_for_application_to_become_healthy
47
+ describe "waits for application to become healthy" do
48
+ let(:app) { fake :app, :total_instances => 2 }
49
+
50
+ def after_sleep
51
+ any_instance_of described_class do |cli|
52
+ stub(cli).sleep { yield }
53
+ end
54
+ end
55
+
56
+ before do
57
+ stub(app).instances do
58
+ [ CFoundry::V2::App::Instance.new(nil, nil, nil, :state => "DOWN"),
59
+ CFoundry::V2::App::Instance.new(nil, nil, nil, :state => "RUNNING")
60
+ ]
61
+ end
62
+
63
+ after_sleep do
64
+ stub(app).instances { final_instances }
65
+ end
66
+ end
67
+
68
+ context "when all instances become running" do
69
+ let(:final_instances) do
70
+ [ CFoundry::V2::App::Instance.new(nil, nil, nil, :state => "RUNNING"),
71
+ CFoundry::V2::App::Instance.new(nil, nil, nil, :state => "RUNNING")
72
+ ]
73
+ end
74
+
75
+ it "says app is started" do
76
+ subject
77
+ expect(output).to say("Checking #{app.name}...")
78
+ expect(output).to say("1 running, 1 down")
79
+ expect(output).to say("2 running")
80
+ end
81
+ end
82
+
83
+ context "when any instance becomes flapping" do
84
+ let(:final_instances) do
85
+ [ CFoundry::V2::App::Instance.new(nil, nil, nil, :state => "FLAPPING"),
86
+ CFoundry::V2::App::Instance.new(nil, nil, nil, :state => "STARTING")
87
+ ]
88
+ end
89
+
90
+ it "says app failed to start" do
91
+ subject
92
+ expect(output).to say("Checking #{app.name}...")
93
+ expect(output).to say("1 running, 1 down")
94
+ expect(output).to say("1 starting, 1 flapping")
95
+ expect(error_output).to say("Application failed to start")
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ before do
102
+ stub(app).invalidate!
103
+ stub(app).instances do
104
+ [ CFoundry::V2::App::Instance.new(nil, nil, nil, :state => "RUNNING") ]
105
+ end
106
+
107
+ stub(app).start!(true) do |_, blk|
108
+ app.state = "STARTED"
109
+ blk.call(log_url)
110
+ end
111
+ end
112
+
113
+ context "when progress log url is provided" do
114
+ let(:log_url) { "http://example.com/my-app-log" }
115
+ let(:log_text) { "Staging complete!" }
116
+
117
+ context "and progress log url is not available immediately" do
118
+ before do
119
+ stub_request(:get, "#{log_url}&tail&tail_offset=0").to_return(
120
+ :status => 404, :body => "")
121
+ end
122
+
123
+ it_says_application_is_starting
124
+ it_does_not_print_log_progress
125
+ it_waits_for_application_to_become_healthy
126
+ end
127
+
128
+ context "and progress log url becomes unavailable after some time" do
129
+ before do
130
+ stub_request(:get, "#{log_url}&tail&tail_offset=0").to_return(
131
+ :status => 200, :body => log_text[0...5])
132
+ stub_request(:get, "#{log_url}&tail&tail_offset=5").to_return(
133
+ :status => 200, :body => log_text[5..-1])
134
+ stub_request(:get, "#{log_url}&tail&tail_offset=#{log_text.size}").to_return(
135
+ :status => 404, :body => "")
136
+ end
137
+
138
+ it_says_application_is_starting
139
+ it_prints_log_progress
140
+ it_waits_for_application_to_become_healthy
141
+ end
142
+
143
+ context "and a request times out" do
144
+ before do
145
+ stub_request(:get, "#{log_url}&tail&tail_offset=0").to_return(
146
+ :should_timeout => true)
147
+ stub_request(:get, "#{log_url}&tail&tail_offset=0").to_return(
148
+ :status => 200, :body => log_text)
149
+ stub_request(:get, "#{log_url}&tail&tail_offset=#{log_text.size}").to_return(
150
+ :status => 404, :body => "")
151
+ end
152
+
153
+ it_says_application_is_starting
154
+ it_prints_log_progress
155
+ it_waits_for_application_to_become_healthy
156
+ end
157
+ end
158
+
159
+ context "when progress log url is not provided" do
160
+ let(:log_url) { nil }
161
+ let(:log_text) { "Staging complete!" }
162
+
163
+ it_says_application_is_starting
164
+ it_does_not_print_log_progress
165
+ it_waits_for_application_to_become_healthy
166
+ end
167
+ end
168
+ end
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+ require 'stringio'
3
+
4
+ describe VMC::App::Stats do
5
+ let(:global) { { :color => false } }
6
+ let(:inputs) { { :app => apps[0] } }
7
+ let(:given) { {} }
8
+ let(:client) { fake_client(:apps => apps) }
9
+ let(:apps) { [fake(:app, :name => "basic_app")] }
10
+
11
+ before do
12
+ any_instance_of(VMC::CLI) do |cli|
13
+ stub(cli).client { client }
14
+ stub(cli).precondition { nil }
15
+ end
16
+ stub(inputs[:app]).stats do
17
+ { "0" => {
18
+ :state => "RUNNING",
19
+ :stats => {
20
+ :name => "basic_app",
21
+ :uris => ["basic_app.p01.rbconsvcs.com"],
22
+ :host => "172.20.183.93",
23
+ :port => 61006,
24
+ :uptime => 3250,
25
+ :mem_quota => 301989888,
26
+ :disk_quota => 268435456,
27
+ :fds_quota => 256,
28
+ :usage => {
29
+ :time => "2013-01-04 19:53:39 +0000",
30
+ :cpu => 0.0019777013519415455,
31
+ :mem => 31395840,
32
+ :disk => 15638528
33
+ }
34
+ }
35
+ }
36
+ }
37
+ end
38
+ end
39
+
40
+ subject do
41
+ capture_output { Mothership.new.invoke(:stats, inputs, given, global) }
42
+ end
43
+
44
+ describe 'metadata' do
45
+ let(:command) { Mothership.commands[:stats] }
46
+
47
+ describe 'command' do
48
+ subject { command }
49
+ its(:description) { should eq "Display application instance status" }
50
+ it { expect(Mothership::Help.group(:apps, :info)).to include(subject) }
51
+ end
52
+
53
+ include_examples 'inputs must have descriptions'
54
+
55
+ describe 'arguments' do
56
+ subject { command.arguments }
57
+ it 'has no arguments' do
58
+ should eq([:name=>:app, :type=>:normal, :value=>nil])
59
+ end
60
+ end
61
+ end
62
+
63
+ it 'prints out the stats' do
64
+ subject
65
+ stdout.rewind
66
+ expect(stdout.readlines.last).to match /.*0\s+0\.0%\s+29\.9M of 288M\s+14\.9M of 256M.*/
67
+ end
68
+ end
@@ -0,0 +1,130 @@
1
+ require 'spec_helper'
2
+
3
+ command VMC::Domain::Map do
4
+ let(:client) do
5
+ fake_client(
6
+ :current_organization => organization,
7
+ :current_space => space,
8
+ :spaces => [space],
9
+ :organizations => [organization],
10
+ :domains => domains)
11
+ end
12
+
13
+ let(:organization) { fake(:organization) }
14
+ let(:space) { fake(:space, :organization => organization) }
15
+ let(:domain) { fake(:domain, :name => domain_name) }
16
+ let(:domain_name) { "some.domain.com" }
17
+ let(:domains) { [domain] }
18
+
19
+ shared_examples_for "binding a domain to a space" do
20
+ it "adds the domain to the space's organization" do
21
+ mock(space.organization).add_domain(domain)
22
+ stub(space).add_domain(domain)
23
+ subject
24
+ end
25
+
26
+ it 'adds the domain to the space' do
27
+ stub(space.organization).add_domain(domain)
28
+ mock(space).add_domain(domain)
29
+ subject
30
+ end
31
+ end
32
+
33
+ shared_examples_for "binding a domain to an organization" do
34
+ it 'does NOT add the domain to a space' do
35
+ any_instance_of(space.class) do |space|
36
+ dont_allow(space).add_domain(domain)
37
+ end
38
+ end
39
+
40
+ it 'adds the domain to the organization' do
41
+ mock(organization).add_domain(domain)
42
+ subject
43
+ end
44
+ end
45
+
46
+ shared_examples_for "mapping a domain to a space" do
47
+ context "when the domain does NOT exist" do
48
+ let(:domains) { [] }
49
+
50
+ before do
51
+ stub(client).domain { domain }
52
+ stub(domain).create!
53
+ stub(space.organization).add_domain(domain)
54
+ stub(space).add_domain(domain)
55
+ end
56
+
57
+ it 'creates the domain' do
58
+ mock(domain).create!
59
+ subject
60
+ expect(domain.name).to eq domain_name
61
+ expect(domain.owning_organization).to eq organization
62
+ end
63
+
64
+ include_examples "binding a domain to a space"
65
+ end
66
+
67
+ context "when the domain already exists" do
68
+ include_examples "binding a domain to a space"
69
+ end
70
+ end
71
+
72
+ context 'when a domain and a space are passed' do
73
+ subject { vmc %W[map-domain #{domain.name} --space #{space.name}] }
74
+
75
+ include_examples "mapping a domain to a space"
76
+ end
77
+
78
+ context 'when a domain and an organization are passed' do
79
+ subject { vmc %W[map-domain #{domain.name} --organization #{organization.name}] }
80
+
81
+ context "and the domain does NOT exist" do
82
+ let(:domains) { [] }
83
+
84
+ before do
85
+ stub(client).domain { domain }
86
+ stub(domain).create!
87
+ stub(organization).add_domain(domain)
88
+ end
89
+
90
+ include_examples "binding a domain to an organization"
91
+
92
+ it 'creates the domain' do
93
+ mock(domain).create!
94
+ subject
95
+ expect(domain.name).to eq domain_name
96
+ end
97
+
98
+ context "and the --shared option is passed" do
99
+ subject { vmc %W[map-domain #{domain.name} --organization #{organization.name} --shared] }
100
+
101
+ it 'adds the domain to the organization' do
102
+ mock(organization).add_domain(domain)
103
+ subject
104
+ end
105
+
106
+ it "does not add the domain to a specific organization" do
107
+ stub(domain).create!
108
+ subject
109
+ expect(domain.owning_organization).to be_nil
110
+ end
111
+ end
112
+ end
113
+
114
+ context "and the domain already exists" do
115
+ include_examples "binding a domain to an organization"
116
+ end
117
+ end
118
+
119
+ context 'when a domain, organization, and space is passed' do
120
+ subject { vmc %W[map-domain #{domain.name} --space #{space.name} --organization #{organization.name}] }
121
+
122
+ include_examples "mapping a domain to a space"
123
+ end
124
+
125
+ context 'when only a domain is passed' do
126
+ subject { vmc %W[map-domain #{domain.name}] }
127
+
128
+ include_examples "mapping a domain to a space"
129
+ end
130
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ command VMC::Domain::Unmap do
4
+ let(:client) do
5
+ fake_client(
6
+ :current_organization => organization,
7
+ :current_space => space,
8
+ :spaces => [space],
9
+ :organizations => [organization],
10
+ :domains => [domain])
11
+ end
12
+
13
+ let(:organization) { fake(:organization, :spaces => [space]) }
14
+ let(:space) { fake(:space) }
15
+ let(:domain) { fake(:domain, :name => "some.domain.com") }
16
+
17
+ context "when the --delete flag is given" do
18
+ subject { vmc %W[unmap-domain #{domain.name} --delete] }
19
+
20
+ it "asks for a confirmation" do
21
+ mock_ask("Really delete #{domain.name}?", :default => false) { false }
22
+ stub(domain).delete!
23
+ subject
24
+ end
25
+
26
+ context "and the user answers 'no' to the confirmation" do
27
+ it "does NOT delete the domain" do
28
+ stub_ask("Really delete #{domain.name}?", anything) { false }
29
+ dont_allow(domain).delete!
30
+ subject
31
+ end
32
+ end
33
+
34
+ context "and the user answers 'yes' to the confirmation" do
35
+ it "deletes the domain" do
36
+ stub_ask("Really delete #{domain.name}?", anything) { true }
37
+ mock(domain).delete!
38
+ subject
39
+ end
40
+ end
41
+ end
42
+
43
+ context "when a space is given" do
44
+ subject { vmc %W[unmap-domain #{domain.name} --space #{space.name}] }
45
+
46
+ it "unmaps the domain from the space" do
47
+ mock(space).remove_domain(domain)
48
+ subject
49
+ end
50
+ end
51
+
52
+ context "when an organization is given" do
53
+ subject { vmc %W[unmap-domain #{domain.name} --organization #{organization.name}] }
54
+
55
+ it "unmaps the domain from the organization" do
56
+ mock(organization).remove_domain(domain)
57
+ subject
58
+ end
59
+ end
60
+
61
+ context "when only the domain is given" do
62
+ subject { vmc %W[unmap-domain #{domain.name}] }
63
+
64
+ it "unmaps the domain from the current space" do
65
+ mock(client.current_space).remove_domain(domain)
66
+ subject
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,108 @@
1
+ require 'spec_helper'
2
+ require 'stringio'
3
+
4
+ describe VMC::Organization::Orgs do
5
+ let(:global) { { :color => false } }
6
+ let(:inputs) { {} }
7
+ let(:given) { {} }
8
+ let(:output) { StringIO.new }
9
+
10
+ let(:client) { fake_client(:organizations => organizations) }
11
+ let!(:org_1) { fake(:organization, :name => "bb_second", :spaces => fake_list(:space, 2), :domains => [fake(:domain)]) }
12
+ let!(:org_2) { fake(:organization, :name => "aa_first", :spaces => [fake(:space)], :domains => fake_list(:domain, 3)) }
13
+ let!(:org_3) { fake(:organization, :name => "cc_last", :spaces => fake_list(:space, 2), :domains => fake_list(:domain, 2)) }
14
+ let(:organizations) { [org_1, org_2, org_3]}
15
+
16
+ before do
17
+ any_instance_of(VMC::CLI) do |cli|
18
+ stub(cli).client { client }
19
+ stub(cli).precondition { nil }
20
+ end
21
+ end
22
+
23
+ subject do
24
+ capture_output { Mothership.new.invoke(:orgs, inputs, given, global) }
25
+ end
26
+
27
+ describe 'metadata' do
28
+ let(:command) { Mothership.commands[:orgs] }
29
+
30
+ describe 'command' do
31
+ subject { command }
32
+ its(:description) { should eq "List available organizations" }
33
+ it { expect(Mothership::Help.group(:organizations)).to include(subject) }
34
+ end
35
+
36
+ include_examples 'inputs must have descriptions'
37
+
38
+ describe 'arguments' do
39
+ subject { command.arguments }
40
+ it 'has no arguments' do
41
+ should be_empty
42
+ end
43
+ end
44
+ end
45
+
46
+ it 'should have the correct first two lines' do
47
+ subject
48
+ stdout.rewind
49
+ expect(stdout.readline).to match /Getting organizations.*OK/
50
+ expect(stdout.readline).to eq "\n"
51
+ end
52
+
53
+ context 'when there are no orgnaizations' do
54
+ let(:organizations) { [] }
55
+
56
+ context 'and the full flag is given' do
57
+ let(:inputs) { {:full => true} }
58
+
59
+ it 'displays yaml-style output with all organization details' do
60
+ any_instance_of VMC::Organization::Orgs do |orgs|
61
+ dont_allow(orgs).invoke
62
+ end
63
+ subject
64
+ end
65
+ end
66
+
67
+ context 'and the full flag is not given (default is false)' do
68
+ it 'should show only the progress' do
69
+ subject
70
+
71
+ stdout.rewind
72
+ expect(stdout.readline).to match /Getting organizations.*OK/
73
+ expect(stdout).to be_eof
74
+ end
75
+ end
76
+ end
77
+
78
+ context 'when there are organizations' do
79
+ context 'and the full flag is given' do
80
+ let(:inputs) { {:full => true} }
81
+
82
+ it 'displays yaml-style output with all organization details' do
83
+ any_instance_of VMC::Organization::Orgs do |orgs|
84
+ mock(orgs).invoke(:org, :organization => org_2, :full => true).ordered
85
+ mock(orgs).invoke(:org, :organization => org_1, :full => true).ordered
86
+ mock(orgs).invoke(:org, :organization => org_3, :full => true).ordered
87
+ end
88
+ subject
89
+ end
90
+ end
91
+
92
+ context 'and the full flag is not given (default is false)' do
93
+ it 'displays tabular output with names, spaces and domains' do
94
+ subject
95
+
96
+ stdout.rewind
97
+ stdout.readline
98
+ stdout.readline
99
+
100
+ expect(stdout.readline).to match /name\s+spaces\s+domains/
101
+ organizations.sort_by(&:name).each do |org|
102
+ expect(stdout.readline).to match /#{org.name}\s+#{name_list(org.spaces)}\s+#{name_list(org.domains)}/
103
+ end
104
+ expect(stdout).to be_eof
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+ require "vmc/cli/organization/rename"
3
+
4
+ describe VMC::Organization::Rename do
5
+ let(:global) { { :color => false, :quiet => true } }
6
+ let(:inputs) { {} }
7
+ let(:given) { {} }
8
+ let(:organizations) { fake_list(:organization, 3) }
9
+ let(:client) { fake_client(:organizations => organizations) }
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_org, inputs, given, global) }
20
+
21
+ describe 'metadata' do
22
+ let(:command) { Mothership.commands[:rename_org] }
23
+
24
+ describe 'command' do
25
+ subject { command }
26
+ its(:description) { should eq "Rename an organization" }
27
+ it { expect(Mothership::Help.group(:organizations)).to include(subject) }
28
+ end
29
+
30
+ describe 'inputs' do
31
+ subject { command.inputs }
32
+
33
+ it "is not missing any descriptions" do
34
+ subject.each do |input, attrs|
35
+ expect(attrs[:description]).to be
36
+ expect(attrs[:description].strip).to_not be_empty
37
+ end
38
+ end
39
+ end
40
+
41
+ describe 'arguments' do
42
+ subject { command.arguments }
43
+ it 'has the correct argument order' do
44
+ should eq([
45
+ { :type => :optional, :value => nil, :name => :organization },
46
+ { :type => :optional, :value => nil, :name => :name }
47
+ ])
48
+ end
49
+ end
50
+ end
51
+
52
+ context 'when there are no organizations' do
53
+ let(:organizations) { [] }
54
+
55
+ context 'and an organization is given' do
56
+ let(:given) { { :organization => "some-invalid-organization" } }
57
+ it { expect { subject }.to raise_error(VMC::UserError, "Unknown organization 'some-invalid-organization'.") }
58
+ end
59
+
60
+ context 'and an organization is not given' do
61
+ it { expect { subject }.to raise_error(VMC::UserError, "No organizations.") }
62
+ end
63
+ end
64
+
65
+ context 'when there are organizations' do
66
+ let(:renamed_organization) { organizations.first }
67
+
68
+ context 'when the defaults are used' do
69
+ it 'asks for the organization and new name and renames' do
70
+ mock_ask("Rename which organization?", anything) { renamed_organization }
71
+ mock_ask("New name") { new_name }
72
+ mock(renamed_organization).name=(new_name)
73
+ mock(renamed_organization).update!
74
+ subject
75
+ end
76
+ end
77
+
78
+ context 'when no name is provided, but an organization is' do
79
+ let(:given) { { :organization => renamed_organization.name } }
80
+
81
+ it 'asks for the new name and renames' do
82
+ dont_allow_ask("Rename which organization?", anything)
83
+ mock_ask("New name") { new_name }
84
+ mock(renamed_organization).name=(new_name)
85
+ mock(renamed_organization).update!
86
+ subject
87
+ end
88
+ end
89
+
90
+ context 'when an organization is provided and a name' do
91
+ let(:inputs) { { :organization => renamed_organization, :name => new_name } }
92
+
93
+ it 'renames the organization' do
94
+ mock(renamed_organization).update!
95
+ subject
96
+ end
97
+
98
+ it 'displays the progress' do
99
+ mock_with_progress("Renaming to #{new_name}")
100
+ mock(renamed_organization).update!
101
+
102
+ subject
103
+ end
104
+
105
+ context 'and the name already exists' do
106
+ it 'fails' do
107
+ mock(renamed_organization).update! { raise CFoundry::OrganizationNameTaken.new("Bad error", 200) }
108
+ expect { subject }.to raise_error(CFoundry::OrganizationNameTaken)
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end