brightbox-cli 3.3.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +1 -0
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.gitignore +1 -1
  5. data/.rubocop.yml +70 -0
  6. data/CHANGELOG.md +60 -0
  7. data/Gemfile.lock +74 -45
  8. data/Jenkinsfile +12 -32
  9. data/README +23 -32
  10. data/README.rdoc +1 -1
  11. data/brightbox-cli.gemspec +21 -34
  12. data/lib/brightbox-cli/accounts.rb +9 -11
  13. data/lib/brightbox-cli/api.rb +38 -36
  14. data/lib/brightbox-cli/cloud_ips.rb +8 -8
  15. data/lib/brightbox-cli/collaborating_account.rb +5 -5
  16. data/lib/brightbox-cli/collaboration.rb +1 -1
  17. data/lib/brightbox-cli/commands/accounts/{accept-invite.rb → accept_invite.rb} +2 -6
  18. data/lib/brightbox-cli/commands/accounts/default.rb +1 -2
  19. data/lib/brightbox-cli/commands/accounts/list.rb +6 -8
  20. data/lib/brightbox-cli/commands/accounts/remove.rb +2 -6
  21. data/lib/brightbox-cli/commands/accounts/{reset-ftp-password.rb → reset_ftp_password.rb} +6 -9
  22. data/lib/brightbox-cli/commands/accounts/show.rb +10 -13
  23. data/lib/brightbox-cli/commands/cloudips/create.rb +2 -5
  24. data/lib/brightbox-cli/commands/cloudips/destroy.rb +10 -14
  25. data/lib/brightbox-cli/commands/cloudips/list.rb +0 -2
  26. data/lib/brightbox-cli/commands/cloudips/map.rb +10 -13
  27. data/lib/brightbox-cli/commands/cloudips/show.rb +11 -14
  28. data/lib/brightbox-cli/commands/cloudips/unmap.rb +2 -4
  29. data/lib/brightbox-cli/commands/cloudips/update.rb +2 -4
  30. data/lib/brightbox-cli/commands/collaborations.rb +2 -3
  31. data/lib/brightbox-cli/commands/config/{client-add.rb → client_add.rb} +0 -3
  32. data/lib/brightbox-cli/commands/config/client_default.rb +18 -0
  33. data/lib/brightbox-cli/commands/config/{client-list.rb → client_list.rb} +1 -4
  34. data/lib/brightbox-cli/commands/config/{client-remove.rb → client_remove.rb} +0 -3
  35. data/lib/brightbox-cli/commands/config/{user-add.rb → user_add.rb} +1 -4
  36. data/lib/brightbox-cli/commands/firewall/{policies-apply.rb → policies_apply.rb} +2 -2
  37. data/lib/brightbox-cli/commands/firewall/{policies-create.rb → policies_create.rb} +2 -4
  38. data/lib/brightbox-cli/commands/firewall/{policies-destroy.rb → policies_destroy.rb} +0 -3
  39. data/lib/brightbox-cli/commands/firewall/{policies-list.rb → policies_list.rb} +0 -2
  40. data/lib/brightbox-cli/commands/firewall/{policies-remove.rb → policies_remove.rb} +2 -2
  41. data/lib/brightbox-cli/commands/firewall/{policies-show.rb → policies_show.rb} +6 -8
  42. data/lib/brightbox-cli/commands/firewall/{policies-update.rb → policies_update.rb} +2 -4
  43. data/lib/brightbox-cli/commands/firewall/{rules-create.rb → rules_create.rb} +6 -8
  44. data/lib/brightbox-cli/commands/firewall/{rules-destroy.rb → rules_destroy.rb} +0 -2
  45. data/lib/brightbox-cli/commands/firewall/{rules-list.rb → rules_list.rb} +0 -2
  46. data/lib/brightbox-cli/commands/firewall/{rules-show.rb → rules_show.rb} +7 -9
  47. data/lib/brightbox-cli/commands/firewall/{rules-update.rb → rules_update.rb} +7 -8
  48. data/lib/brightbox-cli/commands/groups/{add-server.rb → add_server.rb} +0 -2
  49. data/lib/brightbox-cli/commands/groups/create.rb +2 -3
  50. data/lib/brightbox-cli/commands/groups/destroy.rb +0 -2
  51. data/lib/brightbox-cli/commands/groups/list.rb +0 -1
  52. data/lib/brightbox-cli/commands/groups/move_servers.rb +2 -3
  53. data/lib/brightbox-cli/commands/groups/{remove-servers.rb → remove_servers.rb} +2 -4
  54. data/lib/brightbox-cli/commands/groups/show.rb +0 -2
  55. data/lib/brightbox-cli/commands/groups/update.rb +2 -3
  56. data/lib/brightbox-cli/commands/images/destroy.rb +0 -4
  57. data/lib/brightbox-cli/commands/images/list.rb +3 -5
  58. data/lib/brightbox-cli/commands/images/register.rb +9 -17
  59. data/lib/brightbox-cli/commands/images/show.rb +19 -20
  60. data/lib/brightbox-cli/commands/images/update.rb +12 -8
  61. data/lib/brightbox-cli/commands/lbs/{add-nodes.rb → add_nodes.rb} +0 -3
  62. data/lib/brightbox-cli/commands/lbs/create.rb +5 -7
  63. data/lib/brightbox-cli/commands/lbs/destroy.rb +0 -3
  64. data/lib/brightbox-cli/commands/lbs/list.rb +0 -1
  65. data/lib/brightbox-cli/commands/lbs/{remove-nodes.rb → remove_nodes.rb} +0 -3
  66. data/lib/brightbox-cli/commands/lbs/show.rb +20 -22
  67. data/lib/brightbox-cli/commands/lbs/update.rb +6 -9
  68. data/lib/brightbox-cli/commands/login.rb +13 -12
  69. data/lib/brightbox-cli/commands/servers/{activate-console.rb → activate_console.rb} +2 -5
  70. data/lib/brightbox-cli/commands/servers/create.rb +32 -26
  71. data/lib/brightbox-cli/commands/servers/destroy.rb +0 -3
  72. data/lib/brightbox-cli/commands/servers/list.rb +4 -5
  73. data/lib/brightbox-cli/commands/servers/show.rb +0 -2
  74. data/lib/brightbox-cli/commands/servers/shutdown.rb +0 -3
  75. data/lib/brightbox-cli/commands/servers/snapshot.rb +0 -4
  76. data/lib/brightbox-cli/commands/servers/start.rb +0 -4
  77. data/lib/brightbox-cli/commands/servers/stop.rb +0 -3
  78. data/lib/brightbox-cli/commands/servers/update.rb +5 -5
  79. data/lib/brightbox-cli/commands/sql/instances_create.rb +3 -6
  80. data/lib/brightbox-cli/commands/sql/instances_destroy.rb +0 -2
  81. data/lib/brightbox-cli/commands/sql/instances_list.rb +7 -9
  82. data/lib/brightbox-cli/commands/sql/instances_reset_password.rb +0 -1
  83. data/lib/brightbox-cli/commands/sql/instances_show.rb +0 -3
  84. data/lib/brightbox-cli/commands/sql/instances_snapshot.rb +0 -3
  85. data/lib/brightbox-cli/commands/sql/instances_update.rb +1 -3
  86. data/lib/brightbox-cli/commands/sql/snapshots_destroy.rb +0 -3
  87. data/lib/brightbox-cli/commands/sql/snapshots_list.rb +7 -9
  88. data/lib/brightbox-cli/commands/sql/snapshots_show.rb +12 -15
  89. data/lib/brightbox-cli/commands/sql/snapshots_update.rb +1 -3
  90. data/lib/brightbox-cli/commands/sql/types.rb +8 -15
  91. data/lib/brightbox-cli/commands/token.rb +0 -1
  92. data/lib/brightbox-cli/commands/types.rb +8 -14
  93. data/lib/brightbox-cli/commands/{user-collaborations.rb → user_collaborations.rb} +7 -8
  94. data/lib/brightbox-cli/commands/users/list.rb +0 -2
  95. data/lib/brightbox-cli/commands/users/show.rb +1 -3
  96. data/lib/brightbox-cli/commands/users/update.rb +3 -6
  97. data/lib/brightbox-cli/commands/zones.rb +7 -10
  98. data/lib/brightbox-cli/config/accounts.rb +18 -26
  99. data/lib/brightbox-cli/config/api_client.rb +12 -16
  100. data/lib/brightbox-cli/config/authentication_tokens.rb +39 -42
  101. data/lib/brightbox-cli/config/cache.rb +1 -0
  102. data/lib/brightbox-cli/config/clients.rb +8 -8
  103. data/lib/brightbox-cli/config/gpg_encrypted_passwords.rb +6 -8
  104. data/lib/brightbox-cli/config/password_helper.rb +33 -8
  105. data/lib/brightbox-cli/config/sections.rb +45 -29
  106. data/lib/brightbox-cli/config/two_factor_auth.rb +12 -14
  107. data/lib/brightbox-cli/config/two_factor_helper.rb +5 -7
  108. data/lib/brightbox-cli/config/user_application.rb +18 -18
  109. data/lib/brightbox-cli/config.rb +26 -23
  110. data/lib/brightbox-cli/connection_manager.rb +4 -2
  111. data/lib/brightbox-cli/database_server.rb +28 -29
  112. data/lib/brightbox-cli/database_snapshot.rb +1 -1
  113. data/lib/brightbox-cli/database_type.rb +6 -6
  114. data/lib/brightbox-cli/detailed_server.rb +43 -43
  115. data/lib/brightbox-cli/detailed_server_group.rb +1 -1
  116. data/lib/brightbox-cli/error_parser.rb +9 -9
  117. data/lib/brightbox-cli/firewall_policy.rb +2 -1
  118. data/lib/brightbox-cli/firewall_rule.rb +3 -3
  119. data/lib/brightbox-cli/firewall_rules.rb +3 -3
  120. data/lib/brightbox-cli/gli_global_hooks.rb +25 -27
  121. data/lib/brightbox-cli/images.rb +14 -12
  122. data/lib/brightbox-cli/load_balancers.rb +3 -6
  123. data/lib/brightbox-cli/logging.rb +14 -14
  124. data/lib/brightbox-cli/nilable_hash.rb +1 -1
  125. data/lib/brightbox-cli/ruby_core_ext.rb +3 -3
  126. data/lib/brightbox-cli/server_groups.rb +2 -2
  127. data/lib/brightbox-cli/servers.rb +6 -6
  128. data/lib/brightbox-cli/tables.rb +13 -15
  129. data/lib/brightbox-cli/types.rb +6 -6
  130. data/lib/brightbox-cli/user_collaboration.rb +5 -7
  131. data/lib/brightbox-cli/users.rb +1 -1
  132. data/lib/brightbox-cli/version.rb +1 -1
  133. data/lib/brightbox-cli/zones.rb +1 -1
  134. data/lib/brightbox_cli.rb +33 -33
  135. data/locales/en.yml +2 -0
  136. data/spec/brightbox_spec.rb +0 -1
  137. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_a_collection_of_Accounts.yml +5 -5
  138. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_resources_on_the_same_connection.yml +2 -2
  139. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_a_collection_of_Accounts.yml +4 -4
  140. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_resources_on_the_same_connection.yml +2 -2
  141. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_false/does_not_update_the_config_file.yml +12 -12
  142. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_true/does_not_update_the_config_file.yml +12 -12
  143. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_changes_to_the_config_file.yml +2 -2
  144. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_default_account.yml +2 -2
  145. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_new_client_as_the_default.yml +2 -2
  146. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_is_not_authenticated/does_not_raise_an_error.yml +8 -8
  147. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_may_access_one_account/updates_the_setting.yml +8 -8
  148. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_config_in_use_is_not_the_default/uses_correct_credentials.yml +1 -1
  149. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_a_cached_refresh_token/caches_the_new_tokens.yml +1 -1
  150. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_an_expired_refresh_token/caches_the_new_tokens.yml +2 -2
  151. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/caches_the_new_tokens.yml +1 -1
  152. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/prompts_user_to_retry_command.yml +1 -1
  153. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_an_API_client_with_no_tokens/caches_a_new_access_token.yml +1 -1
  154. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/does_not_alter_the_configuration.yml +6 -6
  155. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_access_token.yml +6 -6
  156. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_refresh_token.yml +6 -6
  157. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/does_not_alter_the_configuration.yml +6 -6
  158. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_access_token.yml +6 -6
  159. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_refresh_token.yml +6 -6
  160. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/does_not_alter_the_configuration.yml +9 -9
  161. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_access_token.yml +9 -9
  162. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_refresh_token.yml +9 -9
  163. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/creates_the_configuration.yml +6 -6
  164. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/refreshed_tokens.yml +6 -6
  165. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/creates_the_configuration.yml +6 -6
  166. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/refreshed_tokens.yml +6 -6
  167. data/spec/cassettes/Brightbox_CloudIP/_find_all_/when_a_Cloud_IP_exists/returns_a_suitable.yml +15 -15
  168. data/spec/cassettes/Brightbox_FirewallPolicy/_apply_to/should_apply_firewall_policy.yml +14 -14
  169. data/spec/cassettes/Brightbox_FirewallPolicy/_create/should_create_firewall_policy.yml +14 -14
  170. data/spec/cassettes/Brightbox_FirewallPolicy/_destroy/should_destroy_firewall_policy.yml +16 -16
  171. data/spec/cassettes/Brightbox_FirewallPolicy/_find_all_/when_a_policy_exists/should_list_firewall_policy.yml +13 -13
  172. data/spec/cassettes/Brightbox_FirewallPolicy/_find_or_call/when_a_policy_exists/should_show_firewall_policy.yml +11 -11
  173. data/spec/cassettes/Brightbox_FirewallRule/_create/when_policy_exists/creates_the_rule_successfully.yml +14 -14
  174. data/spec/cassettes/Brightbox_FirewallRule/_destroy/when_rule_exists/destroys_a_rule.yml +12 -12
  175. data/spec/cassettes/Brightbox_FirewallRule/_find/when_rule_exists/can_display_the_result.yml +14 -14
  176. data/spec/cassettes/Brightbox_FirewallRule/_from_policy/when_policy_exists_with_a_rule/lists_all_rules.yml +19 -19
  177. data/spec/cassettes/Brightbox_Server/_destroy/when_server_exists/should_work.yml +12 -12
  178. data/spec/cassettes/Brightbox_Server/_find_all_/when_a_server_exists/should_print_server_list.yml +15 -15
  179. data/spec/cassettes/Brightbox_Server/_show/when_server_exists/shows_detailed_attributes_of_a_server.yml +18 -18
  180. data/spec/cassettes/Brightbox_Server/_shutdown/should_work.yml +18 -18
  181. data/spec/cassettes/Brightbox_Server/_start/should_work.yml +24 -24
  182. data/spec/cassettes/Brightbox_Server/_stop/should_work.yml +18 -18
  183. data/spec/cassettes/Brightbox_Server/_update/when_passing_new_group_membership/should_update_with_group.yml +22 -22
  184. data/spec/cassettes/Brightbox_ServerGroup/_find_all_/when_a_group_exists/list_server_groups.yml +13 -13
  185. data/spec/cassettes/Firewall_policies/update/when_the_policy_does_not_exist/prints_error_to_STDERR.yml +3 -3
  186. data/spec/cassettes/brightbox_accounts/list/_when_access_token_expired_/does_not_report_invalid_token_errors.yml +30 -30
  187. data/spec/cassettes/brightbox_accounts/list/_when_both_tokens_expired_/does_not_report_invalid_token_errors.yml +9 -9
  188. data/spec/cassettes/brightbox_accounts/list/_when_invalid_tokens_/does_not_report_invalid_token_errors.yml +9 -9
  189. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/does_not_report_invalid_token_errors.yml +27 -27
  190. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/reports_they_were_updated.yml +7 -7
  191. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/does_not_report_invalid_token_errors.yml +7 -7
  192. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/reports_unable_to_authenticate.yml +6 -6
  193. data/spec/cassettes/brightbox_accounts/list/does_not_error.yml +3 -3
  194. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_a_server_ID/passes_the_interface_identifier_to_the_API.yml +12 -12
  195. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_another_value/passes_the_identifier_to_the_API.yml +7 -7
  196. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/does_not_error.yml +7 -7
  197. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/sets_up_the_config.yml +7 -7
  198. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_change_the_default_client.yml +7 -7
  199. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_error.yml +7 -7
  200. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +7 -7
  201. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +7 -7
  202. data/spec/cassettes/brightbox_config/user_add/when_NO_config_file_on_disk/sets_up_the_config.yml +5 -5
  203. data/spec/cassettes/brightbox_config/user_add/when_a_default_client_is_already_set/does_not_change_the_default_client.yml +2 -2
  204. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/does_not_error.yml +2 -2
  205. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/sets_up_the_config.yml +2 -2
  206. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/display_an_warning_about_preselected_default.yml +2 -2
  207. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/does_not_error.yml +2 -2
  208. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/selects_the_active_account_for_the_default.yml +2 -2
  209. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/sets_up_the_config.yml +2 -2
  210. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/display_an_warning_about_preselected_default.yml +2 -2
  211. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/does_not_error.yml +2 -2
  212. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/sets_up_the_config.yml +2 -2
  213. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_error.yml +2 -2
  214. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_prompt_to_rerun_the_command.yml +2 -2
  215. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/requests_access_tokens.yml +2 -2
  216. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +2 -2
  217. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +5 -5
  218. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_error.yml +2 -2
  219. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_prompt_to_rerun_the_command.yml +2 -2
  220. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/requests_access_tokens.yml +2 -2
  221. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/sets_up_the_config.yml +3 -3
  222. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/does_not_error.yml +2 -2
  223. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/requests_access_tokens.yml +2 -2
  224. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/sets_up_the_config.yml +2 -2
  225. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_error.yml +6 -6
  226. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  227. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/prompts_for_the_password.yml +6 -6
  228. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/requests_access_tokens.yml +6 -6
  229. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/sets_up_the_config.yml +6 -6
  230. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_error.yml +6 -6
  231. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  232. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/prompts_for_the_password.yml +6 -6
  233. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/requests_access_tokens.yml +6 -6
  234. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/sets_up_the_config.yml +6 -6
  235. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_error.yml +3 -3
  236. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_prompt_to_rerun_the_command.yml +3 -3
  237. data/spec/cassettes/brightbox_login/when_default_account_is_passed/prompts_for_the_password.yml +3 -3
  238. data/spec/cassettes/brightbox_login/when_default_account_is_passed/requests_access_tokens.yml +3 -3
  239. data/spec/cassettes/brightbox_login/when_default_account_is_passed/sets_up_the_config.yml +3 -3
  240. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_error.yml +6 -6
  241. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_prompt_to_rerun_the_command.yml +6 -6
  242. data/spec/cassettes/brightbox_login/when_no_config_is_present/requests_access_tokens.yml +6 -6
  243. data/spec/cassettes/brightbox_login/when_no_config_is_present/sets_up_the_config.yml +6 -6
  244. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_error.yml +6 -6
  245. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  246. data/spec/cassettes/brightbox_login/when_no_password_is_given/prompts_for_the_password.yml +6 -6
  247. data/spec/cassettes/brightbox_login/when_no_password_is_given/requests_access_tokens.yml +6 -6
  248. data/spec/cassettes/brightbox_login/when_no_password_is_given/sets_up_the_config.yml +6 -6
  249. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_10_0_0_0/correctly_sends_API_parameters.yml +313 -26
  250. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_srv-12345_grp-12345/correctly_sends_API_parameters.yml +1204 -38
  251. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql/correctly_sends_API_parameters.yml +596 -26
  252. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_5_6/correctly_sends_API_parameters.yml +63 -9
  253. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_8_0/correctly_sends_API_parameters.yml +393 -0
  254. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_5_--maintenance_hour_11/correctly_sends_API_parameters.yml +393 -0
  255. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_thursday/correctly_sends_API_parameters.yml +393 -0
  256. data/spec/cassettes/brightbox_sql_instances/create/--snapshot_dbi-12345/includes_schedule_fields_in_response.yml +1466 -0
  257. data/spec/cassettes/brightbox_sql_instances/create/--snapshots-schedule_0_12_4_/includes_schedule_fields_in_response.yml +342 -0
  258. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_password.yml +541 -26
  259. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_username.yml +484 -26
  260. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_active/correctly_sends_API_parameters.yml +4 -4
  261. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_can_not_be_snapshotted/reports_an_error_to_the_user.yml +2 -2
  262. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/does_not_output_to_stderr.yml +2 -2
  263. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/outputs_table_details_to_stdout.yml +2 -2
  264. data/spec/cassettes/brightbox_sql_snapshots/show/when_resource_exists/does_not_output_to_stderr.yml +2 -2
  265. data/spec/commands/accounts/default_spec.rb +1 -2
  266. data/spec/commands/accounts/list_spec.rb +7 -8
  267. data/spec/commands/accounts/reset_ftp_password_spec.rb +1 -2
  268. data/spec/commands/accounts/show_spec.rb +1 -2
  269. data/spec/commands/cloudips/create_spec.rb +1 -2
  270. data/spec/commands/cloudips/destroy_spec.rb +1 -2
  271. data/spec/commands/cloudips/list_spec.rb +1 -2
  272. data/spec/commands/cloudips/map_spec.rb +2 -3
  273. data/spec/commands/cloudips/show_spec.rb +1 -2
  274. data/spec/commands/cloudips/unmap_spec.rb +1 -2
  275. data/spec/commands/cloudips/update_spec.rb +7 -8
  276. data/spec/commands/config/client_add_spec.rb +2 -3
  277. data/spec/commands/config/client_default_spec.rb +1 -2
  278. data/spec/commands/config/client_list_spec.rb +1 -2
  279. data/spec/commands/config/client_remove_spec.rb +1 -2
  280. data/spec/commands/config/user_add_spec.rb +3 -4
  281. data/spec/commands/firewall_policies/update_spec.rb +3 -3
  282. data/spec/commands/groups/add_server_spec.rb +1 -2
  283. data/spec/commands/groups/create_spec.rb +1 -2
  284. data/spec/commands/groups/destroy_spec.rb +1 -2
  285. data/spec/commands/groups/list_spec.rb +1 -2
  286. data/spec/commands/groups/move_servers_spec.rb +1 -2
  287. data/spec/commands/groups/remove_servers_spec.rb +1 -2
  288. data/spec/commands/groups/show_spec.rb +1 -2
  289. data/spec/commands/groups/update_spec.rb +1 -2
  290. data/spec/commands/images/destroy_spec.rb +1 -2
  291. data/spec/commands/images/list_spec.rb +62 -63
  292. data/spec/commands/images/locking_spec.rb +4 -4
  293. data/spec/commands/images/register_spec.rb +89 -3
  294. data/spec/commands/images/show_spec.rb +56 -4
  295. data/spec/commands/images/update_spec.rb +53 -3
  296. data/spec/commands/lbs/add_nodes_spec.rb +1 -2
  297. data/spec/commands/lbs/create_spec.rb +2 -3
  298. data/spec/commands/lbs/destroy_spec.rb +1 -2
  299. data/spec/commands/lbs/list_spec.rb +1 -2
  300. data/spec/commands/lbs/locking_spec.rb +4 -4
  301. data/spec/commands/lbs/remove_nodes_spec.rb +1 -2
  302. data/spec/commands/lbs/show_spec.rb +1 -2
  303. data/spec/commands/lbs/update_spec.rb +3 -4
  304. data/spec/commands/login_spec.rb +134 -30
  305. data/spec/commands/policies/apply_spec.rb +1 -2
  306. data/spec/commands/policies/create_spec.rb +1 -2
  307. data/spec/commands/policies/destroy_spec.rb +1 -2
  308. data/spec/commands/policies/list_spec.rb +1 -2
  309. data/spec/commands/policies/remove_spec.rb +1 -2
  310. data/spec/commands/policies/show_spec.rb +1 -2
  311. data/spec/commands/policies/update_spec.rb +1 -2
  312. data/spec/commands/rules/create_spec.rb +1 -2
  313. data/spec/commands/rules/destroy_spec.rb +1 -2
  314. data/spec/commands/rules/list_spec.rb +1 -2
  315. data/spec/commands/rules/show_spec.rb +1 -2
  316. data/spec/commands/rules/update_spec.rb +1 -2
  317. data/spec/commands/servers/activate_console_spec.rb +1 -2
  318. data/spec/commands/servers/create_spec.rb +112 -10
  319. data/spec/commands/servers/destroy_spec.rb +1 -2
  320. data/spec/commands/servers/list_spec.rb +1 -2
  321. data/spec/commands/servers/locking_spec.rb +4 -4
  322. data/spec/commands/servers/reboot_spec.rb +3 -4
  323. data/spec/commands/servers/reset_spec.rb +3 -4
  324. data/spec/commands/servers/show_spec.rb +1 -2
  325. data/spec/commands/servers/shutdown_spec.rb +1 -2
  326. data/spec/commands/servers/snapshot_spec.rb +1 -2
  327. data/spec/commands/servers/start_spec.rb +1 -2
  328. data/spec/commands/servers/stop_spec.rb +1 -2
  329. data/spec/commands/servers/update_spec.rb +1 -2
  330. data/spec/commands/sql/instances/create_spec.rb +58 -75
  331. data/spec/commands/sql/instances/locking_spec.rb +4 -4
  332. data/spec/commands/sql/instances/show_spec.rb +7 -7
  333. data/spec/commands/sql/instances/snapshot_spec.rb +2 -2
  334. data/spec/commands/sql/instances/update_spec.rb +8 -8
  335. data/spec/commands/sql/snapshots/list_spec.rb +1 -1
  336. data/spec/commands/sql/snapshots/locking_spec.rb +4 -4
  337. data/spec/commands/sql/snapshots/show_spec.rb +1 -1
  338. data/spec/commands/sql/types/list_spec.rb +1 -2
  339. data/spec/commands/types/list_spec.rb +1 -2
  340. data/spec/commands/users/list_spec.rb +1 -2
  341. data/spec/commands/users/show_spec.rb +1 -2
  342. data/spec/commands/users/update_spec.rb +1 -2
  343. data/spec/commands/zones/list_spec.rb +1 -2
  344. data/spec/configs/api_client.ini +1 -1
  345. data/spec/configs/user_app.ini +2 -2
  346. data/spec/spec_helper.rb +16 -3
  347. data/spec/support/authentication_helpers.rb +98 -0
  348. data/spec/support/config_helpers.rb +2 -4
  349. data/spec/support/password_prompt_helpers.rb +22 -1
  350. data/spec/support/server_helper.rb +5 -5
  351. data/spec/support/tmp_config.rb +1 -1
  352. data/spec/support/token_helpers.rb +2 -2
  353. data/spec/support/vcr.rb +3 -22
  354. data/spec/unit/brightbox/api/created_on_spec.rb +2 -2
  355. data/spec/unit/brightbox/api/fog_model_spec.rb +13 -13
  356. data/spec/unit/brightbox/api/klass_name_spec.rb +0 -1
  357. data/spec/unit/brightbox/api/method_missing_spec.rb +64 -0
  358. data/spec/unit/brightbox/api/require_account_spec.rb +0 -1
  359. data/spec/unit/brightbox/api/respond_to_spec.rb +71 -0
  360. data/spec/unit/brightbox/bb_config/access_token_filename_spec.rb +0 -1
  361. data/spec/unit/brightbox/bb_config/account_spec.rb +0 -1
  362. data/spec/unit/brightbox/bb_config/add_login_spec.rb +27 -28
  363. data/spec/unit/brightbox/bb_config/add_section_spec.rb +1 -2
  364. data/spec/unit/brightbox/bb_config/clear_default_client_spec.rb +0 -1
  365. data/spec/unit/brightbox/bb_config/client_id_spec.rb +0 -1
  366. data/spec/unit/brightbox/bb_config/client_name_spec.rb +0 -1
  367. data/spec/unit/brightbox/bb_config/config_directory_exists_spec.rb +0 -1
  368. data/spec/unit/brightbox/bb_config/config_directory_spec.rb +0 -1
  369. data/spec/unit/brightbox/bb_config/config_spec.rb +2 -3
  370. data/spec/unit/brightbox/bb_config/default_account_spec.rb +0 -1
  371. data/spec/unit/brightbox/bb_config/default_client_spec.rb +0 -1
  372. data/spec/unit/brightbox/bb_config/delete_section_spec.rb +0 -1
  373. data/spec/unit/brightbox/bb_config/find_or_set_default_account_spec.rb +4 -4
  374. data/spec/unit/brightbox/bb_config/refresh_token_filename_spec.rb +0 -1
  375. data/spec/unit/brightbox/bb_config/renew_tokens_spec.rb +3 -4
  376. data/spec/unit/brightbox/bb_config/save_default_account_spec.rb +0 -1
  377. data/spec/unit/brightbox/bb_config/save_spec.rb +0 -1
  378. data/spec/unit/brightbox/bb_config/section_names_spec.rb +1 -1
  379. data/spec/unit/brightbox/bb_config/to_fog_spec.rb +2 -2
  380. data/spec/unit/brightbox/collaborating_account/to_row_spec.rb +3 -3
  381. data/spec/unit/brightbox/config/api_client/to_fog_spec.rb +8 -8
  382. data/spec/unit/brightbox/config/api_client/valid_spec.rb +4 -4
  383. data/spec/unit/brightbox/config/discover_two_factor_pin_spec.rb +87 -0
  384. data/spec/unit/brightbox/config/section_name_deduplicator_spec.rb +1 -1
  385. data/spec/unit/brightbox/config/user_application/to_fog_spec.rb +10 -10
  386. data/spec/unit/brightbox/config/user_application/valid_spec.rb +3 -3
  387. data/spec/unit/brightbox/connection_manager/fetch_connection_spec.rb +1 -1
  388. data/spec/unit/brightbox/database_server/clean_arguments_spec.rb +1 -2
  389. data/spec/unit/brightbox/database_server/maintenance_window_spec.rb +0 -1
  390. data/spec/unit/brightbox/error_parser/pretty_print_spec.rb +0 -1
  391. data/spec/unit/brightbox/firewall_policy/apply_to_spec.rb +0 -1
  392. data/spec/unit/brightbox/firewall_policy/create_spec.rb +0 -1
  393. data/spec/unit/brightbox/firewall_policy/find_or_call_spec.rb +0 -1
  394. data/spec/unit/brightbox/firewall_policy/find_spec.rb +0 -1
  395. data/spec/unit/brightbox/firewall_rule/find_spec.rb +9 -9
  396. data/spec/unit/brightbox/firewall_rule/from_policy_spec.rb +4 -4
  397. data/spec/unit/brightbox/legacy/args_adjuster_spec.rb +20 -21
  398. data/spec/unit/brightbox/server/create_spec.rb +1 -2
  399. data/spec/unit/brightbox/server/start_spec.rb +2 -2
  400. data/spec/unit/brightbox/server/update_spec.rb +0 -1
  401. data/spec/unit/brightbox/user_collaboration/remove_spec.rb +0 -1
  402. data/spec/unit/nilable_hash_spec.rb +5 -5
  403. data/spec/unit/ruby_core_ext_spec.rb +3 -4
  404. data/spec/unit/temporary_home_spec.rb +1 -1
  405. data/spec/unit/tmp_config_spec.rb +0 -1
  406. metadata +131 -99
  407. data/bin/brightbox-accounts +0 -13
  408. data/bin/brightbox-cloudips +0 -13
  409. data/bin/brightbox-config +0 -13
  410. data/bin/brightbox-firewall-policies +0 -13
  411. data/bin/brightbox-firewall-rules +0 -13
  412. data/bin/brightbox-groups +0 -13
  413. data/bin/brightbox-images +0 -13
  414. data/bin/brightbox-lbs +0 -13
  415. data/bin/brightbox-servers +0 -13
  416. data/bin/brightbox-types +0 -13
  417. data/bin/brightbox-users +0 -13
  418. data/bin/brightbox-zones +0 -13
  419. data/lib/brightbox-cli/commands/config/client-default.rb +0 -26
@@ -5,21 +5,21 @@ describe Brightbox::BBConfig, "#add_login" do
5
5
 
6
6
  let(:email) { "jason.null@brightbox.com" }
7
7
  let(:password) { "N:B3e%7Cmh" }
8
- let(:api_url) { ENV["BRIGHTBOX_API_URL"] || "http://api.brightbox.dev" }
8
+ let(:api_url) { Brightbox::DEFAULT_API_ENDPOINT }
9
9
 
10
10
  context "when no config exists", vcr: true do
11
11
  let(:expected_config) do
12
- <<EOS
13
- [core]
14
- default_client = #{email}
12
+ <<~EOS
13
+ [core]
14
+ default_client = #{email}
15
15
 
16
- [#{email}]
17
- username = #{email}
18
- api_url = #{api_url}
19
- auth_url = #{api_url}
20
- default_account = acc-12345
16
+ [#{email}]
17
+ username = #{email}
18
+ api_url = #{api_url}
19
+ auth_url = #{api_url}
20
+ default_account = acc-12345
21
21
 
22
- EOS
22
+ EOS
23
23
  end
24
24
 
25
25
  before do
@@ -52,9 +52,9 @@ EOS
52
52
 
53
53
  it "does not alter the configuration" do
54
54
  FauxIO.new do
55
- expect {
55
+ expect do
56
56
  config.add_login(email, password)
57
- }.not_to change { config_file_contents }.from(original_config)
57
+ end.not_to change { config_file_contents }.from(original_config)
58
58
  end
59
59
  end
60
60
 
@@ -78,7 +78,7 @@ EOS
78
78
  context "when configured with custom options", vcr: true do
79
79
  let(:original_config) { config_file_contents }
80
80
 
81
- let(:custom_url) { ENV["BRIGHTBOX_API_URL"] || "http://api.brightbox.dev" }
81
+ let(:custom_url) { Brightbox::DEFAULT_API_ENDPOINT }
82
82
  let(:custom_app_id) { "app-23456" }
83
83
  let(:custom_app_secret) { "ho04hondtzjjdf4" }
84
84
  let(:custom_default_account) { "acc-23456" }
@@ -99,9 +99,9 @@ EOS
99
99
 
100
100
  it "does not alter the configuration" do
101
101
  FauxIO.new do
102
- expect {
102
+ expect do
103
103
  config.add_login(email, password)
104
- }.not_to change { config_file_contents }.from(original_config)
104
+ end.not_to change { config_file_contents }.from(original_config)
105
105
  end
106
106
 
107
107
  expect(config_file_contents).to match("[#{email}]")
@@ -132,7 +132,7 @@ EOS
132
132
  context "when altering a custom option", vcr: true do
133
133
  let(:original_config) { config_file_contents }
134
134
 
135
- let(:custom_url) { ENV["BRIGHTBOX_API_URL"] || "http://api.brightbox.dev" }
135
+ let(:custom_url) { Brightbox::DEFAULT_API_ENDPOINT }
136
136
  let(:custom_app_id) { "app-23456" }
137
137
  let(:custom_app_secret) { "ho04hondtzjjdf4" }
138
138
  let(:custom_default_account) { "acc-23456" }
@@ -153,9 +153,9 @@ EOS
153
153
 
154
154
  it "does not alter the configuration" do
155
155
  FauxIO.new do
156
- expect {
156
+ expect do
157
157
  config.add_login(email, password)
158
- }.not_to change { config_file_contents }.from(original_config)
158
+ end.not_to change { config_file_contents }.from(original_config)
159
159
  end
160
160
 
161
161
  expect(config_file_contents).to match("[#{email}]")
@@ -185,17 +185,17 @@ EOS
185
185
  context "when using an email and suffix", vcr: true do
186
186
  let(:client_name) { "#{email}/dev" }
187
187
  let(:expected_config) do
188
- <<EOS
189
- [core]
190
- default_client = #{client_name}
188
+ <<~EOS
189
+ [core]
190
+ default_client = #{client_name}
191
191
 
192
- [#{client_name}]
193
- username = #{email}
194
- api_url = #{api_url}
195
- auth_url = #{api_url}
196
- default_account = acc-12345
192
+ [#{client_name}]
193
+ username = #{email}
194
+ api_url = #{api_url}
195
+ auth_url = #{api_url}
196
+ default_account = acc-12345
197
197
 
198
- EOS
198
+ EOS
199
199
  end
200
200
 
201
201
  before do
@@ -218,5 +218,4 @@ EOS
218
218
  expect(cached_refresh_token(config)).to eq(config.refresh_token)
219
219
  end
220
220
  end
221
-
222
221
  end
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#add_section" do
6
5
  context "when first and only client", vcr: true do
7
6
  let(:config) { Brightbox::BBConfig.new }
@@ -12,7 +11,7 @@ describe Brightbox::BBConfig do
12
11
  let(:options) do
13
12
  {
14
13
  :username => "jason.null@brightbox.com",
15
- :api_url => "http://api.brightbox.dev"
14
+ :api_url => "http://api.brightbox.localhost"
16
15
  }
17
16
  end
18
17
  let(:saved_config) { config_file_contents }
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#clear_default_client" do
6
5
  context "when default client is set" do
7
6
  let(:contents) do
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#client_id" do
6
5
  context "when client has old 'alias' key" do
7
6
  let(:contents) do
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#client_name" do
6
5
  context "when passed as an option" do
7
6
  before do
@@ -2,7 +2,6 @@ require "spec_helper"
2
2
  require "tmpdir"
3
3
 
4
4
  describe Brightbox::BBConfig do
5
-
6
5
  describe "#config_directory_exists?" do
7
6
  let(:config) { Brightbox::BBConfig.new(:directory => @dir) }
8
7
 
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#config_directory" do
6
5
  context "when default location is used" do
7
6
  it "returns a String of the users `.brightbox` directory" do
@@ -3,7 +3,6 @@ require "tmpdir"
3
3
  require "tempfile"
4
4
 
5
5
  describe Brightbox::BBConfig do
6
-
7
6
  describe "#config" do
8
7
  context "when config directory is missing" do
9
8
  around do |example|
@@ -68,9 +67,9 @@ describe Brightbox::BBConfig do
68
67
  f.puts "not:ini"
69
68
  end
70
69
 
71
- expect {
70
+ expect do
72
71
  @config = Brightbox::BBConfig.new :directory => target_dir
73
- }.to raise_error(Brightbox::BBConfigError)
72
+ end.to raise_error(Brightbox::BBConfigError)
74
73
  end
75
74
  end
76
75
  end
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#default_account" do
6
5
  context "when no config file is available" do
7
6
  before do
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#default_client" do
6
5
  context "when config file is empty" do
7
6
  before do
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#delete_section" do
6
5
  let(:client_name) { "removable" }
7
6
 
@@ -20,7 +20,7 @@ describe Brightbox::BBConfig do
20
20
  let(:contents) do
21
21
  <<-EOS
22
22
  [cli-default]
23
- api_url = http://api.brightbox.dev
23
+ api_url = http://api.brightbox.localhost
24
24
  client_id = cli-default
25
25
  secret = qy6xxnvy4o0tgv5
26
26
  default_account = acc-default
@@ -38,7 +38,7 @@ describe Brightbox::BBConfig do
38
38
  let(:contents) do
39
39
  <<-EOS
40
40
  [cli-12345]
41
- api_url = http://api.brightbox.dev
41
+ api_url = http://api.brightbox.localhost
42
42
  client_id = cli-12345
43
43
  secret = wrong_password
44
44
  EOS
@@ -64,7 +64,7 @@ describe Brightbox::BBConfig do
64
64
  [core]
65
65
  default_client = cli-12345
66
66
  [cli-12345]
67
- api_url = http://api.brightbox.dev
67
+ api_url = http://api.brightbox.localhost
68
68
  client_id = cli-12345
69
69
  secret = qy6xxnvy4o0tgv5
70
70
  EOS
@@ -81,7 +81,7 @@ describe Brightbox::BBConfig do
81
81
  let(:contents) do
82
82
  <<-EOS
83
83
  [app-12345]
84
- api_url = http://api.brightbox.dev
84
+ api_url = http://api.brightbox.localhost
85
85
  client_id = app-12345
86
86
  secret = mocbuipbiaa6k6c
87
87
  EOS
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#refresh_token_filename" do
6
5
  context "when using a custom directory" do
7
6
  before do
@@ -1,7 +1,7 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
- let(:api_endpoint) { "http://api.brightbox.dev" }
4
+ let(:api_endpoint) { Brightbox::DEFAULT_API_ENDPOINT }
5
5
 
6
6
  # These are fake values that dev servers may choose to allow
7
7
  let(:username) { "jason.null@brightbox.com" }
@@ -43,7 +43,6 @@ describe Brightbox::BBConfig do
43
43
  # Refresh token
44
44
  expect(cached_refresh_token(@config)).to eql(@new_refresh_token)
45
45
  end
46
-
47
46
  end
48
47
 
49
48
  context "when using a user app with a cached refresh token", vcr: true do
@@ -67,7 +66,7 @@ describe Brightbox::BBConfig do
67
66
  # Access token
68
67
  expect(File.exist?(@config.access_token_filename)).to be true
69
68
 
70
- # NOTE The cached to disk version is filtered by VCR when testing
69
+ # NOTE: The cached to disk version is filtered by VCR when testing
71
70
  expect(cached_access_token(@config)).to eql(@new_access_token)
72
71
 
73
72
  # Refresh token
@@ -95,7 +94,7 @@ describe Brightbox::BBConfig do
95
94
  # Access token
96
95
  expect(File.exist?(@config.access_token_filename)).to be true
97
96
 
98
- # NOTE The cached to disk version is filtered by VCR when testing
97
+ # NOTE: The cached to disk version is filtered by VCR when testing
99
98
  expect(cached_access_token(@config)).to eql(@new_access_token)
100
99
 
101
100
  # Refresh token
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  describe "#save_default_account" do
6
5
  context "when setting has not changed" do
7
6
  let(:account_id) { "acc-12345" }
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::BBConfig do
4
-
5
4
  context "when config is clean" do
6
5
  let(:config) { Brightbox::BBConfig.new }
7
6
 
@@ -41,6 +41,6 @@ describe Brightbox::BBConfig, "#section_names" do
41
41
  setting = value
42
42
  EOS
43
43
  end
44
- it { expect(config.section_names).to eq(%w(cli-12345 app-12345)) }
44
+ it { expect(config.section_names).to eq(%w[cli-12345 app-12345]) }
45
45
  end
46
46
  end
@@ -43,7 +43,7 @@ describe Brightbox::BBConfig do
43
43
 
44
44
  it "returns correct fog options" do
45
45
  expect(fog_config[:provider]).to eql("Brightbox")
46
- expect(fog_config[:brightbox_api_url]).to eql("http://api.brightbox.dev")
46
+ expect(fog_config[:brightbox_api_url]).to eql("http://api.brightbox.localhost")
47
47
  expect(fog_config[:brightbox_client_id]).to eql("cli-12345")
48
48
  expect(fog_config[:brightbox_secret]).to eql("qy6xxnvy4o0tgv5")
49
49
  end
@@ -54,7 +54,7 @@ describe Brightbox::BBConfig do
54
54
 
55
55
  it "returns correct fog options" do
56
56
  expect(fog_config[:provider]).to eql("Brightbox")
57
- expect(fog_config[:brightbox_api_url]).to eql("http://api.brightbox.dev")
57
+ expect(fog_config[:brightbox_api_url]).to eql("http://api.brightbox.localhost")
58
58
  expect(fog_config[:brightbox_client_id]).to eql("app-12345")
59
59
  expect(fog_config[:brightbox_secret]).to eql("mocbuipbiaa6k6c")
60
60
  end
@@ -10,9 +10,9 @@ describe Brightbox::CollaboratingAccount do
10
10
  context "when initialised with an account" do
11
11
  let(:initial_model) { owned_account }
12
12
 
13
- [:cloud_ips_limit, :lb_limit, :ram_limit, :ram_used, :ram_free].each do |key|
13
+ %i[cloud_ips_limit lb_limit ram_limit ram_used ram_free].each do |key|
14
14
  it "returns the number for #{key}" do
15
- expect(row_data[key]).to be_kind_of(Fixnum)
15
+ expect(row_data[key]).to be_kind_of(Integer)
16
16
  end
17
17
  end
18
18
  end
@@ -20,7 +20,7 @@ describe Brightbox::CollaboratingAccount do
20
20
  context "when initialised with a collaboration" do
21
21
  let(:initial_model) { active_collaboration }
22
22
 
23
- [:cloud_ips_limit, :lb_limit, :ram_limit, :ram_used, :ram_free].each do |key|
23
+ %i[cloud_ips_limit lb_limit ram_limit ram_used ram_free].each do |key|
24
24
  it "returns empty string for #{key}" do
25
25
  expect(row_data[key]).to eql("")
26
26
  end
@@ -15,7 +15,7 @@ describe Brightbox::Config::ApiClient do
15
15
  let(:contents) do
16
16
  <<-EOS
17
17
  [#{client_name}]
18
- api_url = http://api.brightbox.dev
18
+ api_url = http://api.brightbox.localhost
19
19
  client_id = #{client_name}
20
20
  secret = #{secret}
21
21
  EOS
@@ -26,11 +26,11 @@ describe Brightbox::Config::ApiClient do
26
26
  end
27
27
 
28
28
  it "sets API endpoint correctly" do
29
- expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.dev")
29
+ expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.localhost")
30
30
  end
31
31
 
32
32
  it "copies API endpoint for auth endpoint correctly" do
33
- expect(for_fog[:brightbox_auth_url]).to eql("http://api.brightbox.dev")
33
+ expect(for_fog[:brightbox_auth_url]).to eql("http://api.brightbox.localhost")
34
34
  end
35
35
 
36
36
  it "sets client_id correctly" do
@@ -50,7 +50,7 @@ describe Brightbox::Config::ApiClient do
50
50
  let(:contents) do
51
51
  <<-EOS
52
52
  [#{client_name}]
53
- api_url = http://api.brightbox.dev
53
+ api_url = http://api.brightbox.localhost
54
54
  auth_url = http://auth.dev.brightbox.com
55
55
  client_id = #{client_name}
56
56
  secret = #{secret}
@@ -58,7 +58,7 @@ describe Brightbox::Config::ApiClient do
58
58
  end
59
59
 
60
60
  it "sets API endpoint correctly" do
61
- expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.dev")
61
+ expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.localhost")
62
62
  end
63
63
 
64
64
  it "copies API endpoint for auth endpoint correctly" do
@@ -70,7 +70,7 @@ describe Brightbox::Config::ApiClient do
70
70
  let(:contents) do
71
71
  <<-EOS
72
72
  [#{client_name}]
73
- api_url = http://api.brightbox.dev
73
+ api_url = http://api.brightbox.localhost
74
74
  client_id = #{client_name}
75
75
  secret = #{secret}
76
76
  persistent = false
@@ -100,7 +100,7 @@ describe Brightbox::Config::ApiClient do
100
100
  let(:contents) do
101
101
  <<-EOS
102
102
  [#{client_name}]
103
- api_url = http://api.brightbox.dev
103
+ api_url = http://api.brightbox.localhost
104
104
  secret = #{random_token}
105
105
  EOS
106
106
  end
@@ -114,7 +114,7 @@ describe Brightbox::Config::ApiClient do
114
114
  let(:contents) do
115
115
  <<-EOS
116
116
  [#{client_name}]
117
- api_url = http://api.brightbox.dev
117
+ api_url = http://api.brightbox.localhost
118
118
  client_id = #{client_name}
119
119
  EOS
120
120
  end
@@ -12,7 +12,7 @@ describe Brightbox::Config::ApiClient do
12
12
  let(:contents) do
13
13
  <<-EOS
14
14
  [#{client_name}]
15
- api_url = http://api.brightbox.dev
15
+ api_url = http://api.brightbox.localhost
16
16
  client_id = #{client_name}
17
17
  secret = #{random_token}
18
18
  EOS
@@ -27,7 +27,7 @@ describe Brightbox::Config::ApiClient do
27
27
  let(:contents) do
28
28
  <<-EOS
29
29
  [#{client_name}]
30
- api_url = http://api.brightbox.dev
30
+ api_url = http://api.brightbox.localhost
31
31
  client_id = #{client_name}
32
32
  secret = #{random_token}
33
33
  theme = blue
@@ -57,7 +57,7 @@ describe Brightbox::Config::ApiClient do
57
57
  let(:contents) do
58
58
  <<-EOS
59
59
  [#{client_name}]
60
- api_url = http://api.brightbox.dev
60
+ api_url = http://api.brightbox.localhost
61
61
  secret = #{random_token}
62
62
  EOS
63
63
  end
@@ -71,7 +71,7 @@ describe Brightbox::Config::ApiClient do
71
71
  let(:contents) do
72
72
  <<-EOS
73
73
  [#{client_name}]
74
- api_url = http://api.brightbox.dev
74
+ api_url = http://api.brightbox.localhost
75
75
  client_id = #{client_name}
76
76
  EOS
77
77
  end
@@ -0,0 +1,87 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Brightbox::Config, "#discover_two_factor_pin" do
4
+ subject(:config) { config_from_contents(contents) }
5
+
6
+ let(:api_url) { "http://api.brightbox.localhost" }
7
+ let(:client_alias) { email }
8
+ let(:default_account) { "acc-12345" }
9
+ let(:email) { "jason.null@brightbox.com" }
10
+
11
+ context "when 2FA is enabled" do
12
+ context "with password helper" do
13
+ let(:cmd) { "fnord" }
14
+ let(:contents) do
15
+ <<-EOS
16
+ [core]
17
+ default_client = #{client_alias}
18
+
19
+ [#{client_alias}]
20
+ username = #{email}
21
+ two_factor = true
22
+ two_factor_helper_command = #{cmd}
23
+ EOS
24
+ end
25
+
26
+ it "returns helper's response" do
27
+ expect(IO).to receive(:popen).with([cmd], "r").and_return("111111")
28
+
29
+ expect(config.discover_two_factor_pin).to eq("111111")
30
+ end
31
+ end
32
+
33
+ context "with invalid password helper" do
34
+ let(:contents) do
35
+ <<-EOS
36
+ [core]
37
+ default_client = #{client_alias}
38
+
39
+ [#{client_alias}]
40
+ username = #{email}
41
+ two_factor = true
42
+ two_factor_helper_command = #{cmd}
43
+ EOS
44
+ end
45
+
46
+ context "when setting is empty" do
47
+ let(:cmd) { nil }
48
+
49
+ it "prompts for OTP" do
50
+ mock_otp_entry("123456")
51
+
52
+ expect(config.discover_two_factor_pin).to eq("123456")
53
+ end
54
+ end
55
+
56
+ context "when command doesn't exist" do
57
+ let(:cmd) { "fnord" }
58
+
59
+ it "prompts for OTP" do
60
+ expect(IO).to receive(:popen).with([cmd], "r").and_raise(Errno::ENOENT)
61
+ mock_otp_entry("123456")
62
+
63
+ expect(config.discover_two_factor_pin).to eq("123456")
64
+ end
65
+ end
66
+ end
67
+
68
+ context "without password helper" do
69
+ let(:contents) do
70
+ <<-EOS
71
+ [core]
72
+ default_client = #{client_alias}
73
+
74
+ [#{client_alias}]
75
+ username = #{email}
76
+ two_factor = true
77
+ EOS
78
+ end
79
+
80
+ it "prompts for OTP" do
81
+ mock_otp_entry("123456")
82
+
83
+ expect(config.discover_two_factor_pin).to eq("123456")
84
+ end
85
+ end
86
+ end
87
+ end
@@ -33,7 +33,7 @@ describe Brightbox::Config::SectionNameDeduplicator do
33
33
 
34
34
  context "when name has been deduped before" do
35
35
  let(:name) { "dev" }
36
- let(:in_use) { %w(dev dev_1 dev_2) }
36
+ let(:in_use) { %w[dev dev_1 dev_2] }
37
37
 
38
38
  it "returns a deduplicated name" do
39
39
  expect(deduper.next).to eql("dev_3")
@@ -15,7 +15,7 @@ describe Brightbox::Config::UserApplication do
15
15
  let(:contents) do
16
16
  <<-EOS
17
17
  [#{client_name}]
18
- api_url = http://api.brightbox.dev
18
+ api_url = http://api.brightbox.localhost
19
19
  username = user@example.com
20
20
  EOS
21
21
  end
@@ -25,11 +25,11 @@ describe Brightbox::Config::UserApplication do
25
25
  end
26
26
 
27
27
  it "sets API endpoint correctly" do
28
- expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.dev")
28
+ expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.localhost")
29
29
  end
30
30
 
31
31
  it "copies API endpoint for auth endpoint correctly" do
32
- expect(for_fog[:brightbox_auth_url]).to eql("http://api.brightbox.dev")
32
+ expect(for_fog[:brightbox_auth_url]).to eql("http://api.brightbox.localhost")
33
33
  end
34
34
 
35
35
  it "sets client_id correctly" do
@@ -49,7 +49,7 @@ describe Brightbox::Config::UserApplication do
49
49
  let(:contents) do
50
50
  <<-EOS
51
51
  [#{client_name}]
52
- api_url = http://api.brightbox.dev
52
+ api_url = http://api.brightbox.localhost
53
53
  client_id = #{client_name}
54
54
  secret = #{secret}
55
55
  username = user@example.com
@@ -61,11 +61,11 @@ describe Brightbox::Config::UserApplication do
61
61
  end
62
62
 
63
63
  it "sets API endpoint correctly" do
64
- expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.dev")
64
+ expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.localhost")
65
65
  end
66
66
 
67
67
  it "copies API endpoint for auth endpoint correctly" do
68
- expect(for_fog[:brightbox_auth_url]).to eql("http://api.brightbox.dev")
68
+ expect(for_fog[:brightbox_auth_url]).to eql("http://api.brightbox.localhost")
69
69
  end
70
70
 
71
71
  it "sets client_id correctly" do
@@ -85,7 +85,7 @@ describe Brightbox::Config::UserApplication do
85
85
  let(:contents) do
86
86
  <<-EOS
87
87
  [#{client_name}]
88
- api_url = http://api.brightbox.dev
88
+ api_url = http://api.brightbox.localhost
89
89
  auth_url = http://auth.dev.brightbox.com
90
90
  client_id = #{client_name}
91
91
  secret = #{secret}
@@ -94,7 +94,7 @@ describe Brightbox::Config::UserApplication do
94
94
  end
95
95
 
96
96
  it "sets API endpoint correctly" do
97
- expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.dev")
97
+ expect(for_fog[:brightbox_api_url]).to eql("http://api.brightbox.localhost")
98
98
  end
99
99
 
100
100
  it "copies API endpoint for auth endpoint correctly" do
@@ -106,7 +106,7 @@ describe Brightbox::Config::UserApplication do
106
106
  let(:contents) do
107
107
  <<-EOS
108
108
  [#{client_name}]
109
- api_url = http://api.brightbox.dev
109
+ api_url = http://api.brightbox.localhost
110
110
  client_id = #{client_name}
111
111
  secret = #{secret}
112
112
  username = user@example.com
@@ -138,7 +138,7 @@ describe Brightbox::Config::UserApplication do
138
138
  let(:contents) do
139
139
  <<-EOS
140
140
  [#{client_name}]
141
- api_url = http://api.brightbox.dev
141
+ api_url = http://api.brightbox.localhost
142
142
  client_id = #{client_name}
143
143
  secret = #{secret}
144
144
  EOS