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,102 @@
1
+ require 'spec_helper'
2
+ require "vmc/cli/space/rename"
3
+
4
+ describe VMC::Space::Rename do
5
+ let(:spaces) { fake_list(:space, 3) }
6
+ let(:organization) { fake(:organization, :spaces => spaces) }
7
+ let(:client) { fake_client(:current_organization => organization, :spaces => spaces) }
8
+ let(:new_name) { "some-new-name" }
9
+
10
+ before do
11
+ any_instance_of described_class do |cli|
12
+ stub(cli).client { client }
13
+ stub(cli).precondition { nil }
14
+ end
15
+ end
16
+
17
+ describe 'metadata' do
18
+ let(:command) { Mothership.commands[:rename_space] }
19
+
20
+ describe 'command' do
21
+ subject { command }
22
+ its(:description) { should eq "Rename a space" }
23
+ it { expect(Mothership::Help.group(:spaces)).to include(subject) }
24
+ end
25
+
26
+ include_examples 'inputs must have descriptions'
27
+
28
+ describe 'arguments' do
29
+ subject { command.arguments }
30
+ it 'has the correct argument order' do
31
+ should eq([
32
+ { :type => :optional, :value => nil, :name => :space },
33
+ { :type => :optional, :value => nil, :name => :name }
34
+ ])
35
+ end
36
+ end
37
+ end
38
+
39
+ context 'when there are no spaces' do
40
+ let(:spaces) { [] }
41
+
42
+ context 'and a space is given' do
43
+ subject { vmc %W[rename-space --space some-invalid-space --no-force --no-quiet] }
44
+ it 'prints out an error message' do
45
+ subject
46
+ expect(stderr.string).to include "Unknown space 'some-invalid-space'."
47
+ end
48
+ end
49
+
50
+ context 'and a space is not given' do
51
+ subject { vmc %W[rename-space --no-force] }
52
+ it 'prints out an error message' do
53
+ subject
54
+ expect(stderr.string).to include "No spaces."
55
+ end
56
+ end
57
+ end
58
+
59
+ context 'when there are spaces' do
60
+ let(:renamed_space) { spaces.first }
61
+
62
+ context 'when the defaults are used' do
63
+ subject { vmc %W[rename-space --no-force --no-quiet] }
64
+
65
+ it 'asks for the space and new name and renames' do
66
+ mock_ask("Rename which space?", anything) { renamed_space }
67
+ mock_ask("New name") { new_name }
68
+ mock(renamed_space).name=(new_name)
69
+ mock(renamed_space).update!
70
+ subject
71
+ end
72
+ end
73
+
74
+ context 'when no name is provided, but a space is' do
75
+ subject { vmc %W[rename-space --space #{renamed_space.name} --no-force] }
76
+
77
+ it 'asks for the new name and renames' do
78
+ dont_allow_ask("Rename which space?", anything)
79
+ mock_ask("New name") { new_name }
80
+ mock(renamed_space).name=(new_name)
81
+ mock(renamed_space).update!
82
+ subject
83
+ end
84
+ end
85
+
86
+ context 'when a space is provided and a name' do
87
+ subject { vmc %W[rename-space --space #{renamed_space.name} --name #{new_name} --no-force] }
88
+
89
+ it 'renames the space' do
90
+ mock(renamed_space).update!
91
+ subject
92
+ end
93
+
94
+ it 'displays the progress' do
95
+ mock_with_progress("Renaming to #{new_name}")
96
+ mock(renamed_space).update!
97
+
98
+ subject
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,104 @@
1
+ require 'spec_helper'
2
+ require 'stringio'
3
+
4
+ describe VMC::Space::Spaces do
5
+ let(:full) { false }
6
+ let!(:space_1) { fake(:space, :name => "bb_second", :apps => fake_list(:app, 2), :service_instances => [fake(:service_instance)]) }
7
+ let!(:space_2) { fake(:space, :name => "aa_first", :apps => [fake(:app)], :service_instances => fake_list(:service_instance, 3), :domains => [fake(:domain)]) }
8
+ let!(:space_3) { fake(:space, :name => "cc_last", :apps => fake_list(:app, 2), :service_instances => fake_list(:service_instance, 2), :domains => fake_list(:domain, 2)) }
9
+ let(:spaces) { [space_1, space_2, space_3]}
10
+ let(:organization) { fake(:organization, :spaces => spaces) }
11
+ let(:client) { fake_client(:spaces => spaces, :current_organization => organization) }
12
+
13
+ before do
14
+ any_instance_of described_class do |cli|
15
+ stub(cli).client { client }
16
+ stub(cli).precondition { nil }
17
+ end
18
+ end
19
+
20
+ describe 'metadata' do
21
+ let(:command) { Mothership.commands[:spaces] }
22
+
23
+ describe 'command' do
24
+ subject { command }
25
+ its(:description) { should eq "List spaces in an organization" }
26
+ it { expect(Mothership::Help.group(:spaces)).to include(subject) }
27
+ end
28
+
29
+ include_examples 'inputs must have descriptions'
30
+
31
+ describe 'arguments' do
32
+ subject { command.arguments }
33
+ it 'has the correct argument order' do
34
+ should eq([{ :type => :optional, :value => nil, :name => :organization }])
35
+ end
36
+ end
37
+ end
38
+
39
+ subject { vmc %W[spaces --#{bool_flag(:full)} --no-quiet] }
40
+
41
+ it 'should have the correct first two lines' do
42
+ subject
43
+
44
+ stdout.rewind
45
+ expect(stdout.readline).to match /Getting spaces.*OK/
46
+ expect(stdout.readline).to eq "\n"
47
+ end
48
+
49
+ context 'when there are no spaces' do
50
+ let(:spaces) { [] }
51
+
52
+ context 'and the full flag is given' do
53
+ let(:full) { true }
54
+
55
+ it 'displays yaml-style output with all space details' do
56
+ any_instance_of VMC::Space::Spaces do |spaces|
57
+ dont_allow(spaces).invoke
58
+ end
59
+ subject
60
+ end
61
+ end
62
+
63
+ context 'and the full flag is not given (default is false)' do
64
+ it 'should show only the progress' do
65
+ subject
66
+
67
+ stdout.rewind
68
+ expect(stdout.readline).to match /Getting spaces.*OK/
69
+ expect(stdout).to be_eof
70
+ end
71
+ end
72
+ end
73
+
74
+ context 'when there are spaces' do
75
+ context 'and the full flag is given' do
76
+ let(:full) { true }
77
+
78
+ it 'displays yaml-style output with all space details' do
79
+ any_instance_of VMC::Space::Spaces do |spaces|
80
+ mock(spaces).invoke(:space, :space => space_2, :full => true).ordered
81
+ mock(spaces).invoke(:space, :space => space_1, :full => true).ordered
82
+ mock(spaces).invoke(:space, :space => space_3, :full => true).ordered
83
+ end
84
+ subject
85
+ end
86
+ end
87
+
88
+ context 'and the full flag is not given (default is false)' do
89
+ it 'displays tabular output with names, spaces and domains' do
90
+ subject
91
+
92
+ stdout.rewind
93
+ stdout.readline
94
+ stdout.readline
95
+
96
+ expect(stdout.readline).to match /name\s+apps\s+services/
97
+ spaces.sort_by(&:name).each do |space|
98
+ expect(stdout.readline).to match /#{space.name}\s+#{name_list(space.apps)}\s+#{name_list(space.service_instances)}/
99
+ end
100
+ expect(stdout).to be_eof
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+ require "vmc/cli/space/switch"
3
+
4
+ describe VMC::Space::Switch do
5
+ let(:space_to_switch_to) { spaces.last }
6
+ let(:spaces) { fake_list(:space, 3) }
7
+ let(:organization) { fake(:organization, :spaces => spaces) }
8
+ let(:client) { fake_client(:current_organization => organization, :spaces => spaces) }
9
+
10
+ before do
11
+ any_instance_of described_class do |cli|
12
+ stub(cli).client { client }
13
+ stub(cli).precondition { nil }
14
+ end
15
+ end
16
+
17
+ describe 'metadata' do
18
+ let(:command) { Mothership.commands[:switch_space] }
19
+
20
+ describe 'command' do
21
+ subject { command }
22
+ its(:description) { should eq "Switch to a space" }
23
+ it { expect(Mothership::Help.group(:spaces)).to include(subject) }
24
+ end
25
+
26
+ include_examples 'inputs must have descriptions'
27
+
28
+ describe 'arguments' do
29
+ subject { command.arguments }
30
+ it 'has the correct argument order' do
31
+ should eq([{ :type => :normal, :value => nil, :name => :name }])
32
+ end
33
+ end
34
+ end
35
+
36
+ subject { vmc %W[--no-quiet switch-space #{space_to_switch_to.name} --no-color] }
37
+
38
+ context "when the space exists" do
39
+ it "switches to that space" do
40
+ any_instance_of(Mothership) do |m|
41
+ mock(m).invoke(:target, {:space => space_to_switch_to})
42
+ end
43
+
44
+ subject
45
+ end
46
+ end
47
+
48
+ context "when the space does not exist" do
49
+ let(:space_to_switch_to) { fake(:space, :name => "unique-name") }
50
+
51
+ it_behaves_like "an error that gets passed through",
52
+ :with_exception => VMC::UserError,
53
+ :with_message => "The space unique-name does not exist, please create the space first."
54
+ end
55
+ end
@@ -0,0 +1,160 @@
1
+ require 'spec_helper'
2
+
3
+ describe VMC::Start::Info do
4
+ let(:frameworks) { false }
5
+ let(:runtimes) { false }
6
+ let(:services) { false }
7
+ let(:all) { false }
8
+
9
+ let(:client) do
10
+ fake_client :frameworks => fake_list(:framework, 3),
11
+ :runtimes => fake_list(:runtime, 3),
12
+ :services => fake_list(:service, 3),
13
+ :token => CFoundry::AuthToken.new("bearer some-access-token")
14
+ end
15
+
16
+ let(:target_info) do
17
+ { :description => "Some description",
18
+ :version => 2,
19
+ :support => "http://example.com"
20
+ }
21
+ end
22
+
23
+ before do
24
+ any_instance_of described_class do |cli|
25
+ stub(cli).client { client }
26
+ end
27
+ end
28
+
29
+ describe 'metadata' do
30
+ let(:command) { Mothership.commands[:info] }
31
+
32
+ describe 'command' do
33
+ subject { command }
34
+ its(:description) { should eq "Display information on the current target, user, etc." }
35
+ it { expect(Mothership::Help.group(:start)).to include(subject) }
36
+ end
37
+
38
+ include_examples 'inputs must have descriptions'
39
+
40
+ describe 'flags' do
41
+ subject { command.flags }
42
+
43
+ its(["-f"]) { should eq :frameworks }
44
+ its(["-r"]) { should eq :runtimes }
45
+ its(["-s"]) { should eq :services }
46
+ its(["-a"]) { should eq :all }
47
+ end
48
+
49
+ describe 'arguments' do
50
+ subject { command.arguments }
51
+ it { should be_empty }
52
+ end
53
+ end
54
+
55
+
56
+ subject { vmc %W[info --#{bool_flag(:frameworks)} --#{bool_flag(:runtimes)} --#{bool_flag(:services)} --#{bool_flag(:all)} --no-force --no-quiet] }
57
+
58
+ context 'when given no flags' do
59
+ it "displays target information" do
60
+ mock(client).info { target_info }
61
+
62
+ subject
63
+
64
+ stdout.rewind
65
+ expect(stdout.readline).to eq "Some description\n"
66
+ expect(stdout.readline).to eq "\n"
67
+ expect(stdout.readline).to eq "target: #{client.target}\n"
68
+ expect(stdout.readline).to eq " version: 2\n"
69
+ expect(stdout.readline).to eq " support: http://example.com\n"
70
+ end
71
+ end
72
+
73
+ context 'when given --frameworks' do
74
+ let(:frameworks) { true }
75
+
76
+ it 'does not grab /info' do
77
+ dont_allow(client).info
78
+ subject
79
+ end
80
+
81
+ it 'lists frameworks on the target' do
82
+ subject
83
+
84
+ stdout.rewind
85
+ expect(stdout.readline).to match /Getting frameworks.*OK/
86
+ expect(stdout.readline).to eq "\n"
87
+ expect(stdout.readline).to match /framework\s+description/
88
+
89
+ client.frameworks.sort_by(&:name).each do |f|
90
+ expect(stdout.readline).to match /#{f.name}\s+#{f.description}/
91
+ end
92
+ end
93
+ end
94
+
95
+ context 'when given --runtimes' do
96
+ let(:runtimes) { true }
97
+
98
+ it 'does not grab /info' do
99
+ dont_allow(client).info
100
+ subject
101
+ end
102
+
103
+ it 'lists runtimes on the target' do
104
+ subject
105
+
106
+ stdout.rewind
107
+ expect(stdout.readline).to match /Getting runtimes.*OK/
108
+ expect(stdout.readline).to eq "\n"
109
+ expect(stdout.readline).to match /runtime\s+description/
110
+
111
+ client.runtimes.sort_by(&:name).each do |r|
112
+ expect(stdout.readline).to match /#{r.name}\s+#{r.description}/
113
+ end
114
+ end
115
+ end
116
+
117
+ context 'when given --services' do
118
+ let(:services) { true }
119
+
120
+ it 'does not grab /info' do
121
+ dont_allow(client).info
122
+ subject
123
+ end
124
+
125
+ it 'lists services on the target' do
126
+ subject
127
+
128
+ stdout.rewind
129
+ expect(stdout.readline).to match /Getting services.*OK/
130
+ expect(stdout.readline).to eq "\n"
131
+ expect(stdout.readline).to match /service\s+version\s+provider\s+plans\s+description/
132
+
133
+ client.services.sort_by(&:label).each do |s|
134
+ expect(stdout.readline).to match /#{s.label}\s+#{s.version}\s+#{s.provider}.+#{s.description}/
135
+ end
136
+ end
137
+ end
138
+
139
+ context 'when given --all' do
140
+ let(:all) { true }
141
+
142
+ it 'combines --frameworks --runtimes and --services' do
143
+ mock(client).info { target_info }
144
+
145
+ subject
146
+
147
+ stdout.rewind
148
+ expect(stdout.readline).to match /Getting runtimes.*OK/
149
+ expect(stdout.readline).to match /Getting frameworks.*OK/
150
+ expect(stdout.readline).to match /Getting services.*OK/
151
+ end
152
+ end
153
+
154
+ context 'when there is no target' do
155
+ let(:client) { nil }
156
+ it_behaves_like "an error that gets passed through",
157
+ :with_exception => VMC::UserError,
158
+ :with_message => "Please select a target with 'vmc target'."
159
+ end
160
+ end
@@ -0,0 +1,142 @@
1
+ require 'spec_helper'
2
+
3
+ command VMC::Start::Login do
4
+ let(:client) { fake_client :organizations => [] }
5
+
6
+ describe 'metadata' do
7
+ let(:command) { Mothership.commands[:login] }
8
+
9
+ describe 'command' do
10
+ subject { command }
11
+ its(:description) { should eq "Authenticate with the target" }
12
+ specify { expect(Mothership::Help.group(:start)).to include(subject) }
13
+ end
14
+
15
+ include_examples 'inputs must have descriptions'
16
+
17
+ describe 'flags' do
18
+ subject { command.flags }
19
+
20
+ its(["-o"]) { should eq :organization }
21
+ its(["--org"]) { should eq :organization }
22
+ its(["--email"]) { should eq :username }
23
+ its(["-s"]) { should eq :space }
24
+ end
25
+
26
+ describe 'arguments' do
27
+ subject(:arguments) { command.arguments }
28
+ it 'have the correct commands' do
29
+ expect(arguments).to eq [{:type => :optional, :value => :email, :name => :username}]
30
+ end
31
+ end
32
+ end
33
+
34
+ describe "running the command" do
35
+ stub_home_dir_with { "#{SPEC_ROOT}/fixtures/fake_home_dirs/new" }
36
+
37
+ let(:auth_token) { CFoundry::AuthToken.new("bearer some-new-access-token", "some-new-refresh-token") }
38
+ let(:tokens_yaml) { YAML.load_file(File.expand_path(tokens_file_path)) }
39
+ let(:tokens_file_path) { '~/.vmc/tokens.yml' }
40
+ let(:organizations) { [] }
41
+
42
+ before do
43
+ stub(client).login("my-username", "my-password") { auth_token }
44
+ stub(client).login_prompts do
45
+ {
46
+ :username => ["text", "Username"],
47
+ :password => ["password", "8-digit PIN"]
48
+ }
49
+ end
50
+ end
51
+
52
+ subject { vmc ["login"] }
53
+
54
+ it "logs in with the provided credentials and saves the token data to the YAML file" do
55
+ stub_ask("Username", {}) { "my-username" }
56
+ stub_ask("8-digit PIN", {:echo => "*", :forget => true}) { "my-password" }
57
+
58
+ subject
59
+
60
+ expect(tokens_yaml["https://api.some-domain.com"][:token]).to eq("bearer some-new-access-token")
61
+ expect(tokens_yaml["https://api.some-domain.com"][:refresh_token]).to eq("some-new-refresh-token")
62
+ end
63
+
64
+ context "with space and org in the token file" do
65
+ before do
66
+ write_token_file(:space => "space-id-1", :organization => "organization-id-1")
67
+ stub_ask("Username", {}) { "my-username" }
68
+ stub_ask("8-digit PIN", {:echo => "*", :forget => true}) { "my-password" }
69
+ end
70
+
71
+ context "when the user has no organizations" do
72
+ it "clears the org and space param from the token file" do
73
+ subject
74
+
75
+ expect(tokens_yaml["https://api.some-domain.com"][:space]).to be_nil
76
+ expect(tokens_yaml["https://api.some-domain.com"][:organization]).to be_nil
77
+ end
78
+ end
79
+
80
+ context "when the user has an organization, but no spaces" do
81
+ let(:client) {
82
+ fake_client :organizations => organizations,
83
+ :token => CFoundry::AuthToken.new("bearer some-access-token")
84
+ }
85
+ let(:organization) { fake :organization, :users => [user] }
86
+ let(:user) { fake :user }
87
+
88
+ shared_examples_for :method_clearing_the_token_file do
89
+ it "sets the new organization in the token file" do
90
+ subject
91
+ expect(tokens_yaml["https://api.some-domain.com"][:organization]).to eq(organizations.first.guid)
92
+ end
93
+
94
+ it "clears the space param from the token file" do
95
+ subject
96
+ expect(tokens_yaml["https://api.some-domain.com"][:space]).to be_nil
97
+ end
98
+ end
99
+
100
+ context "with one organization" do
101
+ let(:organizations) {
102
+ [ organization ]
103
+ }
104
+
105
+ it "does not prompt for an organization" do
106
+ dont_allow_ask("Organization", anything)
107
+ subject
108
+ end
109
+
110
+ it_behaves_like :method_clearing_the_token_file
111
+ end
112
+
113
+ context "with multiple organizations" do
114
+ let(:organizations) {
115
+ [ organization, OpenStruct.new(:name => 'My Org 2', :guid => 'organization-id-2') ]
116
+ }
117
+
118
+ before do
119
+ stub_ask("Organization", anything) { organizations.first }
120
+ end
121
+
122
+ it "prompts for organization" do
123
+ mock_ask("Organization", anything) { organizations.first }
124
+ subject
125
+ end
126
+
127
+ it_behaves_like :method_clearing_the_token_file
128
+ end
129
+ end
130
+ end
131
+
132
+ context 'when there is no target' do
133
+ let(:client) { nil }
134
+ let(:stub_precondition?) { false }
135
+
136
+ it "tells the user to select a target" do
137
+ subject
138
+ expect(error_output).to say("Please select a target with 'vmc target'.")
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe VMC::Start::Logout do
4
+ let(:client) { fake_client }
5
+
6
+ before do
7
+ any_instance_of described_class do |cli|
8
+ stub(cli).client { client }
9
+ end
10
+ end
11
+
12
+ describe 'metadata' do
13
+ let(:command) { Mothership.commands[:logout] }
14
+
15
+ describe 'command' do
16
+ subject { command }
17
+ its(:description) { should eq "Log out from the target" }
18
+ it { expect(Mothership::Help.group(:start)).to include(subject) }
19
+ end
20
+ end
21
+
22
+ describe "running the command" do
23
+ subject { vmc ["logout"] }
24
+
25
+ context "when there is a target" do
26
+ let(:info) { { client.target => "x", "abc" => "x" } }
27
+
28
+ before do
29
+ any_instance_of VMC::CLI do |cli|
30
+ stub(cli).targets_info { info }
31
+ stub(cli).client_target { client.target }
32
+ end
33
+ end
34
+
35
+ it "removes the target info from the tokens file" do
36
+ expect {
37
+ subject
38
+ }.to change { info }.to("abc" => "x")
39
+ end
40
+ end
41
+
42
+ context "when there is no target" do
43
+ let(:client) { nil }
44
+ it_behaves_like "an error that gets passed through",
45
+ :with_exception => VMC::UserError,
46
+ :with_message => "Please select a target with 'vmc target'."
47
+ end
48
+ end
49
+ end
50
+