brightbox-cli 3.2.0 → 4.0.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 (418) 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 +71 -0
  7. data/Gemfile.lock +71 -42
  8. data/README +57 -33
  9. data/README.rdoc +1 -1
  10. data/brightbox-cli.gemspec +20 -33
  11. data/lib/brightbox-cli/accounts.rb +9 -11
  12. data/lib/brightbox-cli/api.rb +38 -36
  13. data/lib/brightbox-cli/cloud_ips.rb +8 -8
  14. data/lib/brightbox-cli/collaborating_account.rb +5 -5
  15. data/lib/brightbox-cli/collaboration.rb +1 -1
  16. data/lib/brightbox-cli/commands/accounts/{accept-invite.rb → accept_invite.rb} +2 -6
  17. data/lib/brightbox-cli/commands/accounts/default.rb +1 -2
  18. data/lib/brightbox-cli/commands/accounts/list.rb +6 -8
  19. data/lib/brightbox-cli/commands/accounts/remove.rb +2 -6
  20. data/lib/brightbox-cli/commands/accounts/{reset-ftp-password.rb → reset_ftp_password.rb} +6 -9
  21. data/lib/brightbox-cli/commands/accounts/show.rb +10 -13
  22. data/lib/brightbox-cli/commands/cloudips/create.rb +2 -5
  23. data/lib/brightbox-cli/commands/cloudips/destroy.rb +10 -14
  24. data/lib/brightbox-cli/commands/cloudips/list.rb +0 -2
  25. data/lib/brightbox-cli/commands/cloudips/map.rb +10 -13
  26. data/lib/brightbox-cli/commands/cloudips/show.rb +11 -14
  27. data/lib/brightbox-cli/commands/cloudips/unmap.rb +2 -4
  28. data/lib/brightbox-cli/commands/cloudips/update.rb +2 -4
  29. data/lib/brightbox-cli/commands/collaborations.rb +2 -3
  30. data/lib/brightbox-cli/commands/config/{client-add.rb → client_add.rb} +0 -3
  31. data/lib/brightbox-cli/commands/config/client_default.rb +18 -0
  32. data/lib/brightbox-cli/commands/config/{client-list.rb → client_list.rb} +1 -4
  33. data/lib/brightbox-cli/commands/config/{client-remove.rb → client_remove.rb} +0 -3
  34. data/lib/brightbox-cli/commands/config/{user-add.rb → user_add.rb} +1 -4
  35. data/lib/brightbox-cli/commands/firewall/{policies-apply.rb → policies_apply.rb} +2 -2
  36. data/lib/brightbox-cli/commands/firewall/{policies-create.rb → policies_create.rb} +2 -4
  37. data/lib/brightbox-cli/commands/firewall/{policies-destroy.rb → policies_destroy.rb} +0 -3
  38. data/lib/brightbox-cli/commands/firewall/{policies-list.rb → policies_list.rb} +0 -2
  39. data/lib/brightbox-cli/commands/firewall/{policies-remove.rb → policies_remove.rb} +2 -2
  40. data/lib/brightbox-cli/commands/firewall/{policies-show.rb → policies_show.rb} +6 -8
  41. data/lib/brightbox-cli/commands/firewall/{policies-update.rb → policies_update.rb} +2 -4
  42. data/lib/brightbox-cli/commands/firewall/{rules-create.rb → rules_create.rb} +6 -8
  43. data/lib/brightbox-cli/commands/firewall/{rules-destroy.rb → rules_destroy.rb} +0 -2
  44. data/lib/brightbox-cli/commands/firewall/{rules-list.rb → rules_list.rb} +0 -2
  45. data/lib/brightbox-cli/commands/firewall/{rules-show.rb → rules_show.rb} +7 -9
  46. data/lib/brightbox-cli/commands/firewall/{rules-update.rb → rules_update.rb} +7 -8
  47. data/lib/brightbox-cli/commands/groups/{add-server.rb → add_server.rb} +0 -2
  48. data/lib/brightbox-cli/commands/groups/create.rb +2 -3
  49. data/lib/brightbox-cli/commands/groups/destroy.rb +0 -2
  50. data/lib/brightbox-cli/commands/groups/list.rb +0 -1
  51. data/lib/brightbox-cli/commands/groups/move_servers.rb +2 -3
  52. data/lib/brightbox-cli/commands/groups/{remove-servers.rb → remove_servers.rb} +2 -4
  53. data/lib/brightbox-cli/commands/groups/show.rb +0 -2
  54. data/lib/brightbox-cli/commands/groups/update.rb +2 -3
  55. data/lib/brightbox-cli/commands/images/destroy.rb +0 -4
  56. data/lib/brightbox-cli/commands/images/list.rb +3 -5
  57. data/lib/brightbox-cli/commands/images/register.rb +9 -17
  58. data/lib/brightbox-cli/commands/images/show.rb +19 -20
  59. data/lib/brightbox-cli/commands/images/update.rb +12 -8
  60. data/lib/brightbox-cli/commands/lbs/{add-nodes.rb → add_nodes.rb} +0 -3
  61. data/lib/brightbox-cli/commands/lbs/create.rb +5 -7
  62. data/lib/brightbox-cli/commands/lbs/destroy.rb +0 -3
  63. data/lib/brightbox-cli/commands/lbs/list.rb +0 -1
  64. data/lib/brightbox-cli/commands/lbs/{remove-nodes.rb → remove_nodes.rb} +0 -3
  65. data/lib/brightbox-cli/commands/lbs/show.rb +20 -22
  66. data/lib/brightbox-cli/commands/lbs/update.rb +6 -9
  67. data/lib/brightbox-cli/commands/login.rb +13 -12
  68. data/lib/brightbox-cli/commands/servers/{activate-console.rb → activate_console.rb} +2 -5
  69. data/lib/brightbox-cli/commands/servers/create.rb +24 -25
  70. data/lib/brightbox-cli/commands/servers/destroy.rb +0 -3
  71. data/lib/brightbox-cli/commands/servers/list.rb +4 -5
  72. data/lib/brightbox-cli/commands/servers/show.rb +0 -2
  73. data/lib/brightbox-cli/commands/servers/shutdown.rb +0 -3
  74. data/lib/brightbox-cli/commands/servers/snapshot.rb +0 -4
  75. data/lib/brightbox-cli/commands/servers/start.rb +0 -4
  76. data/lib/brightbox-cli/commands/servers/stop.rb +0 -3
  77. data/lib/brightbox-cli/commands/servers/update.rb +5 -5
  78. data/lib/brightbox-cli/commands/sql/instances_create.rb +3 -6
  79. data/lib/brightbox-cli/commands/sql/instances_destroy.rb +0 -2
  80. data/lib/brightbox-cli/commands/sql/instances_list.rb +7 -9
  81. data/lib/brightbox-cli/commands/sql/instances_reset_password.rb +0 -1
  82. data/lib/brightbox-cli/commands/sql/instances_show.rb +0 -3
  83. data/lib/brightbox-cli/commands/sql/instances_snapshot.rb +0 -3
  84. data/lib/brightbox-cli/commands/sql/instances_update.rb +1 -3
  85. data/lib/brightbox-cli/commands/sql/snapshots_destroy.rb +0 -3
  86. data/lib/brightbox-cli/commands/sql/snapshots_list.rb +7 -9
  87. data/lib/brightbox-cli/commands/sql/snapshots_show.rb +12 -10
  88. data/lib/brightbox-cli/commands/sql/snapshots_update.rb +1 -3
  89. data/lib/brightbox-cli/commands/sql/types.rb +8 -15
  90. data/lib/brightbox-cli/commands/token.rb +0 -1
  91. data/lib/brightbox-cli/commands/types.rb +8 -14
  92. data/lib/brightbox-cli/commands/{user-collaborations.rb → user_collaborations.rb} +7 -8
  93. data/lib/brightbox-cli/commands/users/list.rb +0 -2
  94. data/lib/brightbox-cli/commands/users/show.rb +1 -3
  95. data/lib/brightbox-cli/commands/users/update.rb +3 -6
  96. data/lib/brightbox-cli/commands/zones.rb +7 -10
  97. data/lib/brightbox-cli/config/accounts.rb +18 -26
  98. data/lib/brightbox-cli/config/api_client.rb +12 -16
  99. data/lib/brightbox-cli/config/authentication_tokens.rb +39 -42
  100. data/lib/brightbox-cli/config/cache.rb +1 -0
  101. data/lib/brightbox-cli/config/clients.rb +8 -8
  102. data/lib/brightbox-cli/config/gpg_encrypted_passwords.rb +6 -8
  103. data/lib/brightbox-cli/config/password_helper.rb +33 -8
  104. data/lib/brightbox-cli/config/sections.rb +45 -29
  105. data/lib/brightbox-cli/config/two_factor_auth.rb +12 -11
  106. data/lib/brightbox-cli/config/two_factor_helper.rb +36 -0
  107. data/lib/brightbox-cli/config/user_application.rb +18 -18
  108. data/lib/brightbox-cli/config.rb +27 -23
  109. data/lib/brightbox-cli/connection_manager.rb +4 -2
  110. data/lib/brightbox-cli/database_server.rb +28 -29
  111. data/lib/brightbox-cli/database_snapshot.rb +1 -1
  112. data/lib/brightbox-cli/database_type.rb +6 -6
  113. data/lib/brightbox-cli/detailed_server.rb +43 -43
  114. data/lib/brightbox-cli/detailed_server_group.rb +1 -1
  115. data/lib/brightbox-cli/error_parser.rb +9 -9
  116. data/lib/brightbox-cli/firewall_policy.rb +2 -1
  117. data/lib/brightbox-cli/firewall_rule.rb +3 -3
  118. data/lib/brightbox-cli/firewall_rules.rb +3 -3
  119. data/lib/brightbox-cli/gli_global_hooks.rb +25 -27
  120. data/lib/brightbox-cli/images.rb +14 -12
  121. data/lib/brightbox-cli/load_balancers.rb +3 -6
  122. data/lib/brightbox-cli/logging.rb +14 -14
  123. data/lib/brightbox-cli/nilable_hash.rb +1 -1
  124. data/lib/brightbox-cli/ruby_core_ext.rb +3 -3
  125. data/lib/brightbox-cli/server_groups.rb +2 -2
  126. data/lib/brightbox-cli/servers.rb +6 -6
  127. data/lib/brightbox-cli/tables.rb +13 -15
  128. data/lib/brightbox-cli/types.rb +6 -6
  129. data/lib/brightbox-cli/user_collaboration.rb +5 -7
  130. data/lib/brightbox-cli/users.rb +1 -1
  131. data/lib/brightbox-cli/version.rb +1 -1
  132. data/lib/brightbox-cli/zones.rb +1 -1
  133. data/lib/brightbox_cli.rb +34 -33
  134. data/spec/brightbox_spec.rb +0 -1
  135. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_a_collection_of_Accounts.yml +5 -5
  136. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_application/returns_resources_on_the_same_connection.yml +2 -2
  137. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_a_collection_of_Accounts.yml +4 -4
  138. data/spec/cassettes/Brightbox_Account/_all/when_connected_using_an_client/returns_resources_on_the_same_connection.yml +2 -2
  139. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_false/does_not_update_the_config_file.yml +12 -12
  140. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_config_exists_and_overwrite_duplicates_is_true/does_not_update_the_config_file.yml +12 -12
  141. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_changes_to_the_config_file.yml +2 -2
  142. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_default_account.yml +2 -2
  143. data/spec/cassettes/Brightbox_BBConfig/_add_section/when_first_and_only_client/saves_the_new_client_as_the_default.yml +2 -2
  144. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_is_not_authenticated/does_not_raise_an_error.yml +8 -8
  145. data/spec/cassettes/Brightbox_BBConfig/_find_or_set_default_account/when_client_may_access_one_account/updates_the_setting.yml +8 -8
  146. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_config_in_use_is_not_the_default/uses_correct_credentials.yml +1 -1
  147. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_a_cached_refresh_token/caches_the_new_tokens.yml +1 -1
  148. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_an_expired_refresh_token/caches_the_new_tokens.yml +2 -2
  149. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/caches_the_new_tokens.yml +1 -1
  150. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_a_user_app_with_no_tokens/prompts_user_to_retry_command.yml +1 -1
  151. data/spec/cassettes/Brightbox_BBConfig/_renew_tokens/when_using_an_API_client_with_no_tokens/caches_a_new_access_token.yml +1 -1
  152. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/does_not_alter_the_configuration.yml +6 -6
  153. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_access_token.yml +6 -6
  154. data/spec/cassettes/Brightbox_BBConfig_add_login/when_altering_a_custom_option/updates_refresh_token.yml +6 -6
  155. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/does_not_alter_the_configuration.yml +6 -6
  156. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_access_token.yml +6 -6
  157. data/spec/cassettes/Brightbox_BBConfig_add_login/when_configured_with_custom_options/updates_refresh_token.yml +6 -6
  158. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/does_not_alter_the_configuration.yml +9 -9
  159. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_access_token.yml +9 -9
  160. data/spec/cassettes/Brightbox_BBConfig_add_login/when_logged_in_previously/updates_refresh_token.yml +9 -9
  161. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/creates_the_configuration.yml +6 -6
  162. data/spec/cassettes/Brightbox_BBConfig_add_login/when_no_config_exists/refreshed_tokens.yml +6 -6
  163. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/creates_the_configuration.yml +6 -6
  164. data/spec/cassettes/Brightbox_BBConfig_add_login/when_using_an_email_and_suffix/refreshed_tokens.yml +6 -6
  165. data/spec/cassettes/Brightbox_CloudIP/_find_all_/when_a_Cloud_IP_exists/returns_a_suitable.yml +15 -15
  166. data/spec/cassettes/Brightbox_FirewallPolicy/_apply_to/should_apply_firewall_policy.yml +14 -14
  167. data/spec/cassettes/Brightbox_FirewallPolicy/_create/should_create_firewall_policy.yml +14 -14
  168. data/spec/cassettes/Brightbox_FirewallPolicy/_destroy/should_destroy_firewall_policy.yml +16 -16
  169. data/spec/cassettes/Brightbox_FirewallPolicy/_find_all_/when_a_policy_exists/should_list_firewall_policy.yml +13 -13
  170. data/spec/cassettes/Brightbox_FirewallPolicy/_find_or_call/when_a_policy_exists/should_show_firewall_policy.yml +11 -11
  171. data/spec/cassettes/Brightbox_FirewallRule/_create/when_policy_exists/creates_the_rule_successfully.yml +14 -14
  172. data/spec/cassettes/Brightbox_FirewallRule/_destroy/when_rule_exists/destroys_a_rule.yml +12 -12
  173. data/spec/cassettes/Brightbox_FirewallRule/_find/when_rule_exists/can_display_the_result.yml +14 -14
  174. data/spec/cassettes/Brightbox_FirewallRule/_from_policy/when_policy_exists_with_a_rule/lists_all_rules.yml +19 -19
  175. data/spec/cassettes/Brightbox_Server/_destroy/when_server_exists/should_work.yml +12 -12
  176. data/spec/cassettes/Brightbox_Server/_find_all_/when_a_server_exists/should_print_server_list.yml +15 -15
  177. data/spec/cassettes/Brightbox_Server/_show/when_server_exists/shows_detailed_attributes_of_a_server.yml +18 -18
  178. data/spec/cassettes/Brightbox_Server/_shutdown/should_work.yml +18 -18
  179. data/spec/cassettes/Brightbox_Server/_start/should_work.yml +24 -24
  180. data/spec/cassettes/Brightbox_Server/_stop/should_work.yml +18 -18
  181. data/spec/cassettes/Brightbox_Server/_update/when_passing_new_group_membership/should_update_with_group.yml +22 -22
  182. data/spec/cassettes/Brightbox_ServerGroup/_find_all_/when_a_group_exists/list_server_groups.yml +13 -13
  183. data/spec/cassettes/Firewall_policies/update/when_the_policy_does_not_exist/prints_error_to_STDERR.yml +3 -3
  184. data/spec/cassettes/brightbox_accounts/list/_when_access_token_expired_/does_not_report_invalid_token_errors.yml +30 -30
  185. data/spec/cassettes/brightbox_accounts/list/_when_both_tokens_expired_/does_not_report_invalid_token_errors.yml +9 -9
  186. data/spec/cassettes/brightbox_accounts/list/_when_invalid_tokens_/does_not_report_invalid_token_errors.yml +9 -9
  187. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/does_not_report_invalid_token_errors.yml +27 -27
  188. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_/reports_they_were_updated.yml +7 -7
  189. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/does_not_report_invalid_token_errors.yml +7 -7
  190. data/spec/cassettes/brightbox_accounts/list/_when_no_tokens_and_password_incorrect_/reports_unable_to_authenticate.yml +6 -6
  191. data/spec/cassettes/brightbox_accounts/list/does_not_error.yml +3 -3
  192. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_a_server_ID/passes_the_interface_identifier_to_the_API.yml +12 -12
  193. data/spec/cassettes/brightbox_cloudips/map/when_destination_is_another_value/passes_the_identifier_to_the_API.yml +7 -7
  194. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/does_not_error.yml +7 -7
  195. data/spec/cassettes/brightbox_config/client_add/when_adding_a_new_client/sets_up_the_config.yml +7 -7
  196. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_change_the_default_client.yml +7 -7
  197. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/does_not_error.yml +7 -7
  198. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +7 -7
  199. data/spec/cassettes/brightbox_config/client_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +7 -7
  200. data/spec/cassettes/brightbox_config/user_add/when_NO_config_file_on_disk/sets_up_the_config.yml +5 -5
  201. data/spec/cassettes/brightbox_config/user_add/when_a_default_client_is_already_set/does_not_change_the_default_client.yml +2 -2
  202. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/does_not_error.yml +2 -2
  203. data/spec/cassettes/brightbox_config/user_add/when_application_details_in_config/sets_up_the_config.yml +2 -2
  204. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/display_an_warning_about_preselected_default.yml +2 -2
  205. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/does_not_error.yml +2 -2
  206. 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
  207. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_only_one_active_account/sets_up_the_config.yml +2 -2
  208. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/display_an_warning_about_preselected_default.yml +2 -2
  209. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/does_not_error.yml +2 -2
  210. data/spec/cassettes/brightbox_config/user_add/when_application_has_access_to_multiple_accounts/sets_up_the_config.yml +2 -2
  211. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/does_not_error.yml +2 -2
  212. 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
  213. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/requests_access_tokens.yml +2 -2
  214. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_this_as_the_default_client.yml +2 -2
  215. data/spec/cassettes/brightbox_config/user_add/when_new_client_is_first_and_only_client/sets_up_the_config.yml +5 -5
  216. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_error.yml +2 -2
  217. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/does_not_prompt_to_rerun_the_command.yml +2 -2
  218. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/requests_access_tokens.yml +2 -2
  219. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments/sets_up_the_config.yml +3 -3
  220. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/does_not_error.yml +2 -2
  221. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/requests_access_tokens.yml +2 -2
  222. data/spec/cassettes/brightbox_config/user_add/when_passing_in_required_arguments_and_api_url/sets_up_the_config.yml +2 -2
  223. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_error.yml +6 -6
  224. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  225. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/prompts_for_the_password.yml +6 -6
  226. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/requests_access_tokens.yml +6 -6
  227. data/spec/cassettes/brightbox_login/when_alternative_client_credentials_are_given/sets_up_the_config.yml +6 -6
  228. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_error.yml +6 -6
  229. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  230. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/prompts_for_the_password.yml +6 -6
  231. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/requests_access_tokens.yml +6 -6
  232. data/spec/cassettes/brightbox_login/when_custom_api/auth_URLs_are_given/sets_up_the_config.yml +6 -6
  233. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_error.yml +3 -3
  234. data/spec/cassettes/brightbox_login/when_default_account_is_passed/does_not_prompt_to_rerun_the_command.yml +3 -3
  235. data/spec/cassettes/brightbox_login/when_default_account_is_passed/prompts_for_the_password.yml +3 -3
  236. data/spec/cassettes/brightbox_login/when_default_account_is_passed/requests_access_tokens.yml +3 -3
  237. data/spec/cassettes/brightbox_login/when_default_account_is_passed/sets_up_the_config.yml +3 -3
  238. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_error.yml +6 -6
  239. data/spec/cassettes/brightbox_login/when_no_config_is_present/does_not_prompt_to_rerun_the_command.yml +6 -6
  240. data/spec/cassettes/brightbox_login/when_no_config_is_present/requests_access_tokens.yml +6 -6
  241. data/spec/cassettes/brightbox_login/when_no_config_is_present/sets_up_the_config.yml +6 -6
  242. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_error.yml +6 -6
  243. data/spec/cassettes/brightbox_login/when_no_password_is_given/does_not_prompt_to_rerun_the_command.yml +6 -6
  244. data/spec/cassettes/brightbox_login/when_no_password_is_given/prompts_for_the_password.yml +6 -6
  245. data/spec/cassettes/brightbox_login/when_no_password_is_given/requests_access_tokens.yml +6 -6
  246. data/spec/cassettes/brightbox_login/when_no_password_is_given/sets_up_the_config.yml +6 -6
  247. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_10_0_0_0/correctly_sends_API_parameters.yml +313 -26
  248. data/spec/cassettes/brightbox_sql_instances/create/--allow-access_srv-12345_grp-12345/correctly_sends_API_parameters.yml +1204 -38
  249. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql/correctly_sends_API_parameters.yml +596 -26
  250. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_5_6/correctly_sends_API_parameters.yml +63 -9
  251. data/spec/cassettes/brightbox_sql_instances/create/--engine_mysql_--engine-version_8_0/correctly_sends_API_parameters.yml +393 -0
  252. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_5_--maintenance_hour_11/correctly_sends_API_parameters.yml +393 -0
  253. data/spec/cassettes/brightbox_sql_instances/create/--maintenance-weekday_thursday/correctly_sends_API_parameters.yml +393 -0
  254. data/spec/cassettes/brightbox_sql_instances/create/--snapshot_dbi-12345/includes_schedule_fields_in_response.yml +1466 -0
  255. data/spec/cassettes/brightbox_sql_instances/create/--snapshots-schedule_0_12_4_/includes_schedule_fields_in_response.yml +342 -0
  256. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_password.yml +541 -26
  257. data/spec/cassettes/brightbox_sql_instances/create/without_arguments/reports_the_new_admin_username.yml +484 -26
  258. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_active/correctly_sends_API_parameters.yml +4 -4
  259. data/spec/cassettes/brightbox_sql_instances/snapshot/when_database_server_can_not_be_snapshotted/reports_an_error_to_the_user.yml +2 -2
  260. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/does_not_output_to_stderr.yml +2 -2
  261. data/spec/cassettes/brightbox_sql_snapshots/list/when_resources_are_available/outputs_table_details_to_stdout.yml +2 -2
  262. data/spec/cassettes/brightbox_sql_snapshots/show/when_resource_exists/does_not_output_to_stderr.yml +2 -2
  263. data/spec/commands/accounts/default_spec.rb +1 -2
  264. data/spec/commands/accounts/list_spec.rb +7 -8
  265. data/spec/commands/accounts/reset_ftp_password_spec.rb +1 -2
  266. data/spec/commands/accounts/show_spec.rb +1 -2
  267. data/spec/commands/cloudips/create_spec.rb +1 -2
  268. data/spec/commands/cloudips/destroy_spec.rb +1 -2
  269. data/spec/commands/cloudips/list_spec.rb +1 -2
  270. data/spec/commands/cloudips/map_spec.rb +2 -3
  271. data/spec/commands/cloudips/show_spec.rb +1 -2
  272. data/spec/commands/cloudips/unmap_spec.rb +1 -2
  273. data/spec/commands/cloudips/update_spec.rb +7 -8
  274. data/spec/commands/config/client_add_spec.rb +2 -3
  275. data/spec/commands/config/client_default_spec.rb +1 -2
  276. data/spec/commands/config/client_list_spec.rb +1 -2
  277. data/spec/commands/config/client_remove_spec.rb +1 -2
  278. data/spec/commands/config/user_add_spec.rb +3 -4
  279. data/spec/commands/firewall_policies/update_spec.rb +3 -3
  280. data/spec/commands/groups/add_server_spec.rb +1 -2
  281. data/spec/commands/groups/create_spec.rb +1 -2
  282. data/spec/commands/groups/destroy_spec.rb +1 -2
  283. data/spec/commands/groups/list_spec.rb +1 -2
  284. data/spec/commands/groups/move_servers_spec.rb +1 -2
  285. data/spec/commands/groups/remove_servers_spec.rb +1 -2
  286. data/spec/commands/groups/show_spec.rb +1 -2
  287. data/spec/commands/groups/update_spec.rb +1 -2
  288. data/spec/commands/images/destroy_spec.rb +1 -2
  289. data/spec/commands/images/list_spec.rb +62 -63
  290. data/spec/commands/images/locking_spec.rb +4 -4
  291. data/spec/commands/images/register_spec.rb +89 -3
  292. data/spec/commands/images/show_spec.rb +56 -4
  293. data/spec/commands/images/update_spec.rb +53 -3
  294. data/spec/commands/lbs/add_nodes_spec.rb +1 -2
  295. data/spec/commands/lbs/create_spec.rb +2 -3
  296. data/spec/commands/lbs/destroy_spec.rb +1 -2
  297. data/spec/commands/lbs/list_spec.rb +1 -2
  298. data/spec/commands/lbs/locking_spec.rb +4 -4
  299. data/spec/commands/lbs/remove_nodes_spec.rb +1 -2
  300. data/spec/commands/lbs/show_spec.rb +1 -2
  301. data/spec/commands/lbs/update_spec.rb +3 -4
  302. data/spec/commands/login_spec.rb +134 -30
  303. data/spec/commands/policies/apply_spec.rb +1 -2
  304. data/spec/commands/policies/create_spec.rb +1 -2
  305. data/spec/commands/policies/destroy_spec.rb +1 -2
  306. data/spec/commands/policies/list_spec.rb +1 -2
  307. data/spec/commands/policies/remove_spec.rb +1 -2
  308. data/spec/commands/policies/show_spec.rb +1 -2
  309. data/spec/commands/policies/update_spec.rb +1 -2
  310. data/spec/commands/rules/create_spec.rb +1 -2
  311. data/spec/commands/rules/destroy_spec.rb +1 -2
  312. data/spec/commands/rules/list_spec.rb +1 -2
  313. data/spec/commands/rules/show_spec.rb +1 -2
  314. data/spec/commands/rules/update_spec.rb +1 -2
  315. data/spec/commands/servers/activate_console_spec.rb +1 -2
  316. data/spec/commands/servers/create_spec.rb +10 -10
  317. data/spec/commands/servers/destroy_spec.rb +1 -2
  318. data/spec/commands/servers/list_spec.rb +1 -2
  319. data/spec/commands/servers/locking_spec.rb +4 -4
  320. data/spec/commands/servers/reboot_spec.rb +3 -4
  321. data/spec/commands/servers/reset_spec.rb +3 -4
  322. data/spec/commands/servers/show_spec.rb +1 -2
  323. data/spec/commands/servers/shutdown_spec.rb +1 -2
  324. data/spec/commands/servers/snapshot_spec.rb +1 -2
  325. data/spec/commands/servers/start_spec.rb +1 -2
  326. data/spec/commands/servers/stop_spec.rb +1 -2
  327. data/spec/commands/servers/update_spec.rb +1 -2
  328. data/spec/commands/sql/instances/create_spec.rb +58 -75
  329. data/spec/commands/sql/instances/locking_spec.rb +4 -4
  330. data/spec/commands/sql/instances/show_spec.rb +7 -7
  331. data/spec/commands/sql/instances/snapshot_spec.rb +2 -2
  332. data/spec/commands/sql/instances/update_spec.rb +8 -8
  333. data/spec/commands/sql/snapshots/list_spec.rb +1 -1
  334. data/spec/commands/sql/snapshots/locking_spec.rb +4 -4
  335. data/spec/commands/sql/snapshots/show_spec.rb +1 -1
  336. data/spec/commands/sql/types/list_spec.rb +1 -2
  337. data/spec/commands/types/list_spec.rb +1 -2
  338. data/spec/commands/users/list_spec.rb +1 -2
  339. data/spec/commands/users/show_spec.rb +1 -2
  340. data/spec/commands/users/update_spec.rb +1 -2
  341. data/spec/commands/zones/list_spec.rb +1 -2
  342. data/spec/configs/api_client.ini +1 -1
  343. data/spec/configs/user_app.ini +2 -2
  344. data/spec/spec_helper.rb +16 -3
  345. data/spec/support/authentication_helpers.rb +98 -0
  346. data/spec/support/config_helpers.rb +2 -4
  347. data/spec/support/password_prompt_helpers.rb +22 -1
  348. data/spec/support/server_helper.rb +5 -5
  349. data/spec/support/tmp_config.rb +1 -1
  350. data/spec/support/token_helpers.rb +2 -2
  351. data/spec/support/vcr.rb +3 -22
  352. data/spec/unit/brightbox/api/created_on_spec.rb +2 -2
  353. data/spec/unit/brightbox/api/fog_model_spec.rb +13 -13
  354. data/spec/unit/brightbox/api/klass_name_spec.rb +0 -1
  355. data/spec/unit/brightbox/api/method_missing_spec.rb +64 -0
  356. data/spec/unit/brightbox/api/require_account_spec.rb +0 -1
  357. data/spec/unit/brightbox/api/respond_to_spec.rb +71 -0
  358. data/spec/unit/brightbox/bb_config/access_token_filename_spec.rb +0 -1
  359. data/spec/unit/brightbox/bb_config/account_spec.rb +0 -1
  360. data/spec/unit/brightbox/bb_config/add_login_spec.rb +27 -28
  361. data/spec/unit/brightbox/bb_config/add_section_spec.rb +1 -2
  362. data/spec/unit/brightbox/bb_config/clear_default_client_spec.rb +0 -1
  363. data/spec/unit/brightbox/bb_config/client_id_spec.rb +0 -1
  364. data/spec/unit/brightbox/bb_config/client_name_spec.rb +0 -1
  365. data/spec/unit/brightbox/bb_config/config_directory_exists_spec.rb +0 -1
  366. data/spec/unit/brightbox/bb_config/config_directory_spec.rb +0 -1
  367. data/spec/unit/brightbox/bb_config/config_spec.rb +2 -3
  368. data/spec/unit/brightbox/bb_config/default_account_spec.rb +0 -1
  369. data/spec/unit/brightbox/bb_config/default_client_spec.rb +0 -1
  370. data/spec/unit/brightbox/bb_config/delete_section_spec.rb +0 -1
  371. data/spec/unit/brightbox/bb_config/find_or_set_default_account_spec.rb +4 -4
  372. data/spec/unit/brightbox/bb_config/refresh_token_filename_spec.rb +0 -1
  373. data/spec/unit/brightbox/bb_config/renew_tokens_spec.rb +3 -4
  374. data/spec/unit/brightbox/bb_config/save_default_account_spec.rb +0 -1
  375. data/spec/unit/brightbox/bb_config/save_spec.rb +0 -1
  376. data/spec/unit/brightbox/bb_config/section_names_spec.rb +1 -1
  377. data/spec/unit/brightbox/bb_config/to_fog_spec.rb +2 -2
  378. data/spec/unit/brightbox/collaborating_account/to_row_spec.rb +3 -3
  379. data/spec/unit/brightbox/config/api_client/to_fog_spec.rb +8 -8
  380. data/spec/unit/brightbox/config/api_client/valid_spec.rb +4 -4
  381. data/spec/unit/brightbox/config/discover_two_factor_pin_spec.rb +87 -0
  382. data/spec/unit/brightbox/config/section_name_deduplicator_spec.rb +1 -1
  383. data/spec/unit/brightbox/config/user_application/to_fog_spec.rb +10 -10
  384. data/spec/unit/brightbox/config/user_application/valid_spec.rb +3 -3
  385. data/spec/unit/brightbox/connection_manager/fetch_connection_spec.rb +1 -1
  386. data/spec/unit/brightbox/database_server/clean_arguments_spec.rb +1 -2
  387. data/spec/unit/brightbox/database_server/maintenance_window_spec.rb +0 -1
  388. data/spec/unit/brightbox/error_parser/pretty_print_spec.rb +0 -1
  389. data/spec/unit/brightbox/firewall_policy/apply_to_spec.rb +0 -1
  390. data/spec/unit/brightbox/firewall_policy/create_spec.rb +0 -1
  391. data/spec/unit/brightbox/firewall_policy/find_or_call_spec.rb +0 -1
  392. data/spec/unit/brightbox/firewall_policy/find_spec.rb +0 -1
  393. data/spec/unit/brightbox/firewall_rule/find_spec.rb +9 -9
  394. data/spec/unit/brightbox/firewall_rule/from_policy_spec.rb +4 -4
  395. data/spec/unit/brightbox/legacy/args_adjuster_spec.rb +20 -21
  396. data/spec/unit/brightbox/server/create_spec.rb +1 -2
  397. data/spec/unit/brightbox/server/start_spec.rb +2 -2
  398. data/spec/unit/brightbox/server/update_spec.rb +0 -1
  399. data/spec/unit/brightbox/user_collaboration/remove_spec.rb +0 -1
  400. data/spec/unit/nilable_hash_spec.rb +5 -5
  401. data/spec/unit/ruby_core_ext_spec.rb +3 -4
  402. data/spec/unit/temporary_home_spec.rb +1 -1
  403. data/spec/unit/tmp_config_spec.rb +0 -1
  404. metadata +132 -100
  405. data/.travis.yml +0 -8
  406. data/bin/brightbox-accounts +0 -13
  407. data/bin/brightbox-cloudips +0 -13
  408. data/bin/brightbox-config +0 -13
  409. data/bin/brightbox-firewall-policies +0 -13
  410. data/bin/brightbox-firewall-rules +0 -13
  411. data/bin/brightbox-groups +0 -13
  412. data/bin/brightbox-images +0 -13
  413. data/bin/brightbox-lbs +0 -13
  414. data/bin/brightbox-servers +0 -13
  415. data/bin/brightbox-types +0 -13
  416. data/bin/brightbox-users +0 -13
  417. data/bin/brightbox-zones +0 -13
  418. data/lib/brightbox-cli/commands/config/client-default.rb +0 -26
@@ -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
@@ -12,7 +12,7 @@ describe Brightbox::Config::UserApplication 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
  username = user@example.com
17
17
  EOS
18
18
  end
@@ -26,7 +26,7 @@ describe Brightbox::Config::UserApplication do
26
26
  let(:contents) do
27
27
  <<-EOS
28
28
  [#{client_name}]
29
- api_url = http://api.brightbox.dev
29
+ api_url = http://api.brightbox.localhost
30
30
  client_id = #{client_name}
31
31
  secret = #{random_token}
32
32
  username = user@example.com
@@ -58,7 +58,7 @@ describe Brightbox::Config::UserApplication do
58
58
  let(:contents) do
59
59
  <<-EOS
60
60
  [#{client_name}]
61
- api_url = http://api.brightbox.dev
61
+ api_url = http://api.brightbox.localhost
62
62
  client_id = #{client_name}
63
63
  secret = #{random_token}
64
64
  EOS
@@ -52,7 +52,7 @@ describe Brightbox::ConnectionManager, "#fetch_connection" do
52
52
 
53
53
  it "selects configured account" do
54
54
  skip "Fails out of sequence, mocked config incorrect"
55
- Brightbox.config.stubs(:selected_config).returns('default_account' => "acc-12345")
55
+ Brightbox.config.stubs(:selected_config).returns("default_account" => "acc-12345")
56
56
  connection = connection_manager.fetch_connection(true)
57
57
  expect(connection).not_to be_nil
58
58
  expect(connection.scoped_account).to eq("acc-12345")
@@ -2,7 +2,6 @@ require "spec_helper"
2
2
  require "fog/brightbox/models/compute/database_server"
3
3
 
4
4
  describe Brightbox::DatabaseServer do
5
-
6
5
  describe ".clean_arguments" do
7
6
  let(:parameters) { Brightbox::DatabaseServer.clean_arguments(arguments) }
8
7
 
@@ -21,7 +20,7 @@ describe Brightbox::DatabaseServer do
21
20
  context "when --allow-access=10.0.0.0,11.0.0.0" do
22
21
  let(:arguments) { { "allow-access" => "10.0.0.0,11.0.0.0" } }
23
22
 
24
- it { expect(parameters[:allow_access]).to eql(%w(10.0.0.0 11.0.0.0)) }
23
+ it { expect(parameters[:allow_access]).to eql(%w[10.0.0.0 11.0.0.0]) }
25
24
  end
26
25
 
27
26
  context "when --maintenance-weekday=4" do
@@ -2,7 +2,6 @@ require "spec_helper"
2
2
  require "fog/brightbox/models/compute/database_server"
3
3
 
4
4
  describe Brightbox::DatabaseServer do
5
-
6
5
  describe "#maintenance_window" do
7
6
  let(:fog_model) { Fog::Brightbox::Compute::DatabaseServer.new(fog_settings) }
8
7
  let(:dbs) { Brightbox::DatabaseServer.new(fog_model) }
@@ -1,7 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Brightbox::ErrorParser do
4
-
5
4
  describe "#pretty_print" do
6
5
  let(:parser) { Brightbox::ErrorParser.new(error_to_parse) }
7
6
 
@@ -6,7 +6,6 @@ describe Brightbox::FirewallPolicy do
6
6
  end
7
7
 
8
8
  describe "#apply_to", vcr: true do
9
-
10
9
  it "should apply firewall policy" do
11
10
  expect do
12
11
  params = { :name => "rspec_tests_apply" }
@@ -6,7 +6,6 @@ describe Brightbox::FirewallPolicy do
6
6
  end
7
7
 
8
8
  describe "#create", vcr: true do
9
-
10
9
  it "should create firewall policy" do
11
10
  params = { :name => "rspec_tests" }
12
11
  @group = Brightbox::ServerGroup.create(params)
@@ -6,7 +6,6 @@ describe Brightbox::FirewallPolicy do
6
6
  end
7
7
 
8
8
  describe "#find_or_call" do
9
-
10
9
  context "when a policy exists" do
11
10
  before do
12
11
  options = {
@@ -6,7 +6,6 @@ describe Brightbox::FirewallPolicy do
6
6
  end
7
7
 
8
8
  describe "#find(:all)", vcr: true do
9
-
10
9
  context "when a policy exists" do
11
10
  before do
12
11
  options = {}
@@ -26,15 +26,15 @@ describe Brightbox::FirewallRule do
26
26
  end.to_not raise_error
27
27
 
28
28
  display_options = {
29
- :fields => [
30
- :id,
31
- :protocol,
32
- :source,
33
- :sport,
34
- :destination,
35
- :dport,
36
- :icmp_type,
37
- :firewall_policy
29
+ :fields => %i[
30
+ id
31
+ protocol
32
+ source
33
+ sport
34
+ destination
35
+ dport
36
+ icmp_type
37
+ firewall_policy
38
38
  ],
39
39
  :vertical => true
40
40
  }