aptible-cli 0.14.1 → 0.15.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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -1
  3. data/aptible-cli.gemspec +1 -0
  4. data/bin/aptible +9 -5
  5. data/lib/aptible/cli.rb +36 -0
  6. data/lib/aptible/cli/agent.rb +10 -6
  7. data/lib/aptible/cli/error.rb +6 -0
  8. data/lib/aptible/cli/formatter.rb +21 -0
  9. data/lib/aptible/cli/formatter/grouped_keyed_list.rb +54 -0
  10. data/lib/aptible/cli/formatter/keyed_list.rb +25 -0
  11. data/lib/aptible/cli/formatter/keyed_object.rb +16 -0
  12. data/lib/aptible/cli/formatter/list.rb +33 -0
  13. data/lib/aptible/cli/formatter/node.rb +8 -0
  14. data/lib/aptible/cli/formatter/object.rb +38 -0
  15. data/lib/aptible/cli/formatter/root.rb +46 -0
  16. data/lib/aptible/cli/formatter/value.rb +25 -0
  17. data/lib/aptible/cli/helpers/app.rb +1 -0
  18. data/lib/aptible/cli/helpers/database.rb +22 -6
  19. data/lib/aptible/cli/helpers/operation.rb +3 -2
  20. data/lib/aptible/cli/helpers/tunnel.rb +1 -3
  21. data/lib/aptible/cli/helpers/vhost.rb +9 -46
  22. data/lib/aptible/cli/renderer.rb +26 -0
  23. data/lib/aptible/cli/renderer/base.rb +8 -0
  24. data/lib/aptible/cli/renderer/json.rb +26 -0
  25. data/lib/aptible/cli/renderer/text.rb +99 -0
  26. data/lib/aptible/cli/resource_formatter.rb +136 -0
  27. data/lib/aptible/cli/subcommands/apps.rb +26 -14
  28. data/lib/aptible/cli/subcommands/backup.rb +22 -4
  29. data/lib/aptible/cli/subcommands/config.rb +15 -11
  30. data/lib/aptible/cli/subcommands/db.rb +82 -31
  31. data/lib/aptible/cli/subcommands/deploy.rb +1 -1
  32. data/lib/aptible/cli/subcommands/endpoints.rb +11 -8
  33. data/lib/aptible/cli/subcommands/operation.rb +2 -1
  34. data/lib/aptible/cli/subcommands/rebuild.rb +1 -1
  35. data/lib/aptible/cli/subcommands/restart.rb +1 -1
  36. data/lib/aptible/cli/subcommands/services.rb +8 -9
  37. data/lib/aptible/cli/version.rb +1 -1
  38. data/spec/aptible/cli/agent_spec.rb +11 -14
  39. data/spec/aptible/cli/formatter_spec.rb +4 -0
  40. data/spec/aptible/cli/renderer/json_spec.rb +63 -0
  41. data/spec/aptible/cli/renderer/text_spec.rb +150 -0
  42. data/spec/aptible/cli/resource_formatter_spec.rb +113 -0
  43. data/spec/aptible/cli/subcommands/apps_spec.rb +144 -28
  44. data/spec/aptible/cli/subcommands/backup_spec.rb +37 -16
  45. data/spec/aptible/cli/subcommands/config_spec.rb +95 -0
  46. data/spec/aptible/cli/subcommands/db_spec.rb +185 -93
  47. data/spec/aptible/cli/subcommands/endpoints_spec.rb +10 -8
  48. data/spec/aptible/cli/subcommands/operation_spec.rb +0 -1
  49. data/spec/aptible/cli/subcommands/rebuild_spec.rb +17 -0
  50. data/spec/aptible/cli/subcommands/services_spec.rb +8 -12
  51. data/spec/aptible/cli_spec.rb +31 -0
  52. data/spec/fabricators/account_fabricator.rb +11 -0
  53. data/spec/fabricators/app_fabricator.rb +15 -0
  54. data/spec/fabricators/configuration_fabricator.rb +8 -0
  55. data/spec/fabricators/database_image_fabricator.rb +17 -0
  56. data/spec/fabricators/operation_fabricator.rb +1 -0
  57. data/spec/fabricators/service_fabricator.rb +4 -0
  58. data/spec/spec_helper.rb +63 -1
  59. metadata +55 -4
  60. data/spec/aptible/cli/helpers/vhost_spec.rb +0 -105
@@ -1,105 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Aptible::CLI::Helpers::Vhost do
4
- subject { Class.new.send(:include, described_class).new }
5
-
6
- describe '#explain_vhost' do
7
- let(:lines) { [] }
8
- before { allow(subject).to receive(:say) { |m| lines << m } }
9
-
10
- it 'explains a VHOST' do
11
- service = Fabricate(:service, process_type: 'web')
12
- vhost = Fabricate(
13
- :vhost,
14
- service: service,
15
- external_host: 'foo.io',
16
- status: 'provisioned',
17
- type: 'http_proxy_protocol',
18
- internal: false,
19
- ip_whitelist: [],
20
- default: false,
21
- acme: false
22
- )
23
- subject.explain_vhost(service, vhost)
24
-
25
- expected = [
26
- 'Service: web',
27
- 'Hostname: foo.io',
28
- 'Status: provisioned',
29
- 'Type: https',
30
- 'Port: default',
31
- 'Internal: false',
32
- 'IP Whitelist: all traffic',
33
- 'Default Domain Enabled: false',
34
- 'Managed TLS Enabled: false'
35
- ]
36
- expect(lines).to eq(expected)
37
- end
38
-
39
- it 'explains a failed VHOST' do
40
- vhost = Fabricate(:vhost, status: 'provision_failed')
41
- subject.explain_vhost(vhost.service, vhost)
42
- expect(lines).to include('Status: provision_failed')
43
- end
44
-
45
- it 'explains an internal VHOST' do
46
- vhost = Fabricate(:vhost, internal: true)
47
- subject.explain_vhost(vhost.service, vhost)
48
- expect(lines).to include('Internal: true')
49
- end
50
-
51
- it 'explains a default VHOST' do
52
- vhost = Fabricate(:vhost, default: true, virtual_domain: 'qux.io')
53
- subject.explain_vhost(vhost.service, vhost)
54
- expect(lines).to include('Default Domain Enabled: true')
55
- expect(lines).to include('Default Domain: qux.io')
56
- end
57
-
58
- it 'explains a TLS VHOST' do
59
- vhost = Fabricate(:vhost, type: 'tls')
60
- subject.explain_vhost(vhost.service, vhost)
61
- expect(lines).to include('Type: tls')
62
- expect(lines).to include('Ports: all')
63
- end
64
-
65
- it 'explains a TCP VHOST' do
66
- vhost = Fabricate(:vhost, type: 'tcp')
67
- subject.explain_vhost(vhost.service, vhost)
68
- expect(lines).to include('Type: tcp')
69
- expect(lines).to include('Ports: all')
70
- end
71
-
72
- it 'explains a VHOST with a container port' do
73
- vhost = Fabricate(:vhost, type: 'http_proxy_protocol', container_port: 12)
74
- subject.explain_vhost(vhost.service, vhost)
75
- expect(lines).to include('Port: 12')
76
- end
77
-
78
- it 'explains a VHOST with container ports' do
79
- vhost = Fabricate(:vhost, type: 'tls', container_ports: [12, 34])
80
- subject.explain_vhost(vhost.service, vhost)
81
- expect(lines).to include('Ports: 12 34')
82
- end
83
-
84
- it 'explains a VHOST with IP Filtering' do
85
- vhost = Fabricate(:vhost, ip_whitelist: %w(1.1.1.1/1 2.2.2.2/2))
86
- subject.explain_vhost(vhost.service, vhost)
87
- expect(lines).to include('IP Whitelist: 1.1.1.1/1 2.2.2.2/2')
88
- end
89
-
90
- it 'explains a VHOST with Managed TLS' do
91
- vhost = Fabricate(
92
- :vhost,
93
- acme: true,
94
- user_domain: 'foo.io',
95
- acme_dns_challenge_host: 'dns.qux.io',
96
- acme_status: 'ready'
97
- )
98
- subject.explain_vhost(vhost.service, vhost)
99
- expect(lines).to include('Managed TLS Enabled: true')
100
- expect(lines).to include('Managed TLS Domain: foo.io')
101
- expect(lines).to include('Managed TLS DNS Challenge Hostname: dns.qux.io')
102
- expect(lines).to include('Managed TLS Status: ready')
103
- end
104
- end
105
- end