droplet_kit 2.8.0 → 2.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +4 -1
- data/lib/droplet_kit/mappings/cdn_mapping.rb +6 -0
- data/lib/droplet_kit/mappings/load_balancer_mapping.rb +1 -0
- data/lib/droplet_kit/models/cdn.rb +2 -0
- data/lib/droplet_kit/models/load_balancer.rb +1 -0
- data/lib/droplet_kit/resources/cdn_resource.rb +6 -0
- data/lib/droplet_kit/version.rb +1 -1
- metadata +4 -289
- data/.gitignore +0 -23
- data/.rspec +0 -2
- data/.travis.yml +0 -28
- data/CHANGELOG.md +0 -106
- data/Gemfile +0 -15
- data/Rakefile +0 -3
- data/droplet_kit.gemspec +0 -37
- data/spec/fixtures/account/info.json +0 -8
- data/spec/fixtures/actions/all.json +0 -24
- data/spec/fixtures/actions/find.json +0 -19
- data/spec/fixtures/cdns/all.json +0 -16
- data/spec/fixtures/cdns/create.json +0 -9
- data/spec/fixtures/cdns/find.json +0 -9
- data/spec/fixtures/cdns/update_ttl.json +0 -9
- data/spec/fixtures/certificates/all.json +0 -19
- data/spec/fixtures/certificates/find.json +0 -12
- data/spec/fixtures/certificates/lets_encrypt.json +0 -12
- data/spec/fixtures/domain_records/all.json +0 -57
- data/spec/fixtures/domain_records/create.json +0 -12
- data/spec/fixtures/domain_records/find.json +0 -12
- data/spec/fixtures/domain_records/update.json +0 -12
- data/spec/fixtures/domains/all.json +0 -12
- data/spec/fixtures/domains/create.json +0 -7
- data/spec/fixtures/domains/find.json +0 -7
- data/spec/fixtures/droplet_actions/change_kernel.json +0 -27
- data/spec/fixtures/droplet_actions/disable_backups.json +0 -27
- data/spec/fixtures/droplet_actions/enable_backups.json +0 -27
- data/spec/fixtures/droplet_actions/enable_ipv6.json +0 -27
- data/spec/fixtures/droplet_actions/enable_private_networking.json +0 -27
- data/spec/fixtures/droplet_actions/find.json +0 -19
- data/spec/fixtures/droplet_actions/password_reset.json +0 -27
- data/spec/fixtures/droplet_actions/power_cycle.json +0 -27
- data/spec/fixtures/droplet_actions/power_off.json +0 -27
- data/spec/fixtures/droplet_actions/power_on.json +0 -27
- data/spec/fixtures/droplet_actions/reboot.json +0 -27
- data/spec/fixtures/droplet_actions/rebuild.json +0 -27
- data/spec/fixtures/droplet_actions/rename.json +0 -27
- data/spec/fixtures/droplet_actions/resize.json +0 -27
- data/spec/fixtures/droplet_actions/restore.json +0 -27
- data/spec/fixtures/droplet_actions/shutdown.json +0 -27
- data/spec/fixtures/droplet_actions/snapshot.json +0 -27
- data/spec/fixtures/droplet_actions/upgrade.json +0 -27
- data/spec/fixtures/droplet_upgrades/all.json +0 -7
- data/spec/fixtures/droplets/all.json +0 -89
- data/spec/fixtures/droplets/all_empty.json +0 -7
- data/spec/fixtures/droplets/create.json +0 -84
- data/spec/fixtures/droplets/create_multiple.json +0 -168
- data/spec/fixtures/droplets/find.json +0 -84
- data/spec/fixtures/droplets/list_actions.json +0 -24
- data/spec/fixtures/droplets/list_backups.json +0 -18
- data/spec/fixtures/droplets/list_kernels.json +0 -17
- data/spec/fixtures/droplets/list_snapshots.json +0 -18
- data/spec/fixtures/firewalls/all.json +0 -67
- data/spec/fixtures/firewalls/find.json +0 -61
- data/spec/fixtures/floating_ip_actions/all.json +0 -41
- data/spec/fixtures/floating_ip_actions/assign.json +0 -27
- data/spec/fixtures/floating_ip_actions/find.json +0 -19
- data/spec/fixtures/floating_ip_actions/unassign.json +0 -27
- data/spec/fixtures/floating_ips/all.json +0 -186
- data/spec/fixtures/floating_ips/all_empty.json +0 -7
- data/spec/fixtures/floating_ips/create.json +0 -29
- data/spec/fixtures/floating_ips/create_with_droplet.json +0 -44
- data/spec/fixtures/floating_ips/find.json +0 -28
- data/spec/fixtures/image_actions/all.json +0 -36
- data/spec/fixtures/image_actions/convert.json +0 -27
- data/spec/fixtures/image_actions/find.json +0 -19
- data/spec/fixtures/image_actions/transfer.json +0 -27
- data/spec/fixtures/images/all.json +0 -31
- data/spec/fixtures/images/find.json +0 -16
- data/spec/fixtures/images/private.json +0 -31
- data/spec/fixtures/images/type.json +0 -31
- data/spec/fixtures/kubernetes/all.json +0 -70
- data/spec/fixtures/kubernetes/all_empty.json +0 -7
- data/spec/fixtures/kubernetes/cluster_node_pool.json +0 -24
- data/spec/fixtures/kubernetes/cluster_node_pool_create.json +0 -40
- data/spec/fixtures/kubernetes/cluster_node_pool_update.json +0 -31
- data/spec/fixtures/kubernetes/cluster_node_pools.json +0 -33
- data/spec/fixtures/kubernetes/clusters/create.json +0 -65
- data/spec/fixtures/kubernetes/clusters/find.json +0 -65
- data/spec/fixtures/kubernetes/clusters/kubeconfig.txt +0 -20
- data/spec/fixtures/kubernetes/clusters/update.json +0 -63
- data/spec/fixtures/kubernetes/options.json +0 -150
- data/spec/fixtures/load_balancers/all.json +0 -129
- data/spec/fixtures/load_balancers/find.json +0 -59
- data/spec/fixtures/projects/all.json +0 -37
- data/spec/fixtures/projects/all_empty.json +0 -12
- data/spec/fixtures/projects/find.json +0 -14
- data/spec/fixtures/projects/resources.json +0 -84
- data/spec/fixtures/regions/all.json +0 -47
- data/spec/fixtures/sizes/all.json +0 -37
- data/spec/fixtures/snapshots/all.json +0 -32
- data/spec/fixtures/snapshots/find.json +0 -14
- data/spec/fixtures/snapshots/resource_type.json +0 -20
- data/spec/fixtures/ssh_keys/all.json +0 -13
- data/spec/fixtures/ssh_keys/create.json +0 -8
- data/spec/fixtures/ssh_keys/find.json +0 -8
- data/spec/fixtures/ssh_keys/update.json +0 -8
- data/spec/fixtures/tags/all.json +0 -34
- data/spec/fixtures/tags/all_empty.json +0 -7
- data/spec/fixtures/tags/create.json +0 -15
- data/spec/fixtures/tags/find.json +0 -99
- data/spec/fixtures/volume_actions/all.json +0 -41
- data/spec/fixtures/volume_actions/attach.json +0 -34
- data/spec/fixtures/volume_actions/detach.json +0 -34
- data/spec/fixtures/volume_actions/find.json +0 -34
- data/spec/fixtures/volume_actions/resize.json +0 -34
- data/spec/fixtures/volumes/all.json +0 -41
- data/spec/fixtures/volumes/create.json +0 -34
- data/spec/fixtures/volumes/create_snapshot.json +0 -14
- data/spec/fixtures/volumes/find.json +0 -34
- data/spec/lib/droplet_kit/client_spec.rb +0 -102
- data/spec/lib/droplet_kit/models/base_model_spec.rb +0 -21
- data/spec/lib/droplet_kit/models/droplet_spec.rb +0 -32
- data/spec/lib/droplet_kit/paginated_resource_spec.rb +0 -85
- data/spec/lib/droplet_kit/resources/account_resource_spec.rb +0 -30
- data/spec/lib/droplet_kit/resources/action_resource_spec.rb +0 -83
- data/spec/lib/droplet_kit/resources/cdn_resource_spec.rb +0 -124
- data/spec/lib/droplet_kit/resources/certificate_resource_spec.rb +0 -119
- data/spec/lib/droplet_kit/resources/domain_record_resource_spec.rb +0 -99
- data/spec/lib/droplet_kit/resources/domain_resource_spec.rb +0 -65
- data/spec/lib/droplet_kit/resources/droplet_action_resource_spec.rb +0 -223
- data/spec/lib/droplet_kit/resources/droplet_resource_spec.rb +0 -340
- data/spec/lib/droplet_kit/resources/droplet_upgrade_resource_spec.rb +0 -22
- data/spec/lib/droplet_kit/resources/firewall_resource_spec.rb +0 -265
- data/spec/lib/droplet_kit/resources/floating_ip_action_resource_spec.rb +0 -137
- data/spec/lib/droplet_kit/resources/floating_ip_resource_spec.rb +0 -91
- data/spec/lib/droplet_kit/resources/image_action_resource_spec.rb +0 -149
- data/spec/lib/droplet_kit/resources/image_resource_spec.rb +0 -93
- data/spec/lib/droplet_kit/resources/kubernetes_cluster_resource_spec.rb +0 -313
- data/spec/lib/droplet_kit/resources/kubernetes_options_resource_spec.rb +0 -33
- data/spec/lib/droplet_kit/resources/load_balancer_resource_spec.rb +0 -213
- data/spec/lib/droplet_kit/resources/project_resource_spec.rb +0 -126
- data/spec/lib/droplet_kit/resources/region_resource_spec.rb +0 -27
- data/spec/lib/droplet_kit/resources/size_resource_spec.rb +0 -27
- data/spec/lib/droplet_kit/resources/snapshot_resource_spec.rb +0 -61
- data/spec/lib/droplet_kit/resources/ssh_key_resource_spec.rb +0 -92
- data/spec/lib/droplet_kit/resources/tag_resource_spec.rb +0 -135
- data/spec/lib/droplet_kit/resources/volume_action_resource_spec.rb +0 -157
- data/spec/lib/droplet_kit/resources/volume_resource_spec.rb +0 -124
- data/spec/spec_helper.rb +0 -19
- data/spec/support/fake_server.rb +0 -4
- data/spec/support/request_stub_helpers.rb +0 -28
- data/spec/support/resource_context.rb +0 -4
- data/spec/support/shared_examples/common_errors.rb +0 -27
- data/spec/support/shared_examples/paginated_endpoint.rb +0 -16
- data/spec/support/shared_examples/unprocessable_entity.rb +0 -11
@@ -1,119 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe DropletKit::CertificateResource do
|
4
|
-
include_context 'resources'
|
5
|
-
|
6
|
-
let(:certificate_fixture_path) { 'certificates/find' }
|
7
|
-
let(:base_path) { '/v2/certificates'}
|
8
|
-
let(:certificate_id) { '892071a0-bb95-49bc-8021-3afd67a210bf' }
|
9
|
-
subject(:resource) { described_class.new(connection: connection) }
|
10
|
-
|
11
|
-
RSpec::Matchers.define :match_certificate_fixture do
|
12
|
-
match do |certificate|
|
13
|
-
expect(certificate.id).to eq('892071a0-bb95-49bc-8021-3afd67a210bf')
|
14
|
-
expect(certificate.name).to eq('web-cert-01')
|
15
|
-
expect(certificate.dns_names).to be_empty
|
16
|
-
expect(certificate.not_after).to eq('2017-02-22T00:23:00Z')
|
17
|
-
expect(certificate.sha1_fingerprint).to eq('dfcc9f57d86bf58e321c2c6c31c7a971be244ac7')
|
18
|
-
expect(certificate.created_at).to eq('2017-02-08T16:02:37Z')
|
19
|
-
expect(certificate.state).to eq('verified')
|
20
|
-
expect(certificate.type).to eq('custom')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '#find' do
|
25
|
-
let(:certificate) do
|
26
|
-
DropletKit::Certificate.new(
|
27
|
-
id: '892071a0-bb95-49bc-8021-3afd67a210bf',
|
28
|
-
name: 'web-cert-01',
|
29
|
-
dns_names: ["somedomain.com"],
|
30
|
-
not_after: '2017-02-22T00:23:00Z',
|
31
|
-
sha1_fingerprint: 'dfcc9f57d86bf58e321c2c6c31c7a971be244ac7',
|
32
|
-
created_at: '2017-02-08T16:02:37Z',
|
33
|
-
status: "verified",
|
34
|
-
type: "custom",
|
35
|
-
)
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'returns certificate' do
|
39
|
-
stub_do_api(File.join(base_path, certificate_id), :get).to_return(body: api_fixture(certificate_fixture_path))
|
40
|
-
certificate = resource.find(id: certificate_id)
|
41
|
-
|
42
|
-
expect(certificate).to match_certificate_fixture
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe '#all' do
|
47
|
-
let(:certificates_fixture_path) { 'certificates/all' }
|
48
|
-
|
49
|
-
it 'returns all of the certificates' do
|
50
|
-
stub_do_api(base_path, :get).to_return(body: api_fixture(certificates_fixture_path))
|
51
|
-
certificates = resource.all
|
52
|
-
|
53
|
-
expect(certificates).to all(be_kind_of(DropletKit::Certificate))
|
54
|
-
expect(certificates.first).to match_certificate_fixture
|
55
|
-
end
|
56
|
-
|
57
|
-
it_behaves_like 'a paginated index' do
|
58
|
-
let(:fixture_path) { certificates_fixture_path }
|
59
|
-
let(:api_path) { base_path }
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
describe '#create' do
|
64
|
-
let(:path) { base_path }
|
65
|
-
|
66
|
-
let(:certificate) do
|
67
|
-
DropletKit::Certificate.new(
|
68
|
-
name: 'web-cert-01',
|
69
|
-
private_key: '-----BEGIN PRIVATE KEY-----',
|
70
|
-
leaf_certificate: '-----BEGIN CERTIFICATE-----',
|
71
|
-
certificate_chain: '-----BEGIN CERTIFICATE-----'
|
72
|
-
)
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'returns created certificate' do
|
76
|
-
json_body = DropletKit::CertificateMapping.representation_for(:create, certificate)
|
77
|
-
stub_do_api(path, :post).with(body: json_body).to_return(body: api_fixture(certificate_fixture_path), status: 201)
|
78
|
-
|
79
|
-
expect(resource.create(certificate)).to match_certificate_fixture
|
80
|
-
end
|
81
|
-
|
82
|
-
context 'lets encrypt certificate' do
|
83
|
-
let(:lets_encrypt_certificate) do
|
84
|
-
DropletKit::Certificate.new(
|
85
|
-
name: 'lets-encrypt-cert',
|
86
|
-
dns_names: ['somedomain.com', 'api.somedomain.com'],
|
87
|
-
type: 'lets_encrypt'
|
88
|
-
)
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'returns created lets encrpyt certificate' do
|
92
|
-
json_body = DropletKit::CertificateMapping.representation_for(:create, lets_encrypt_certificate)
|
93
|
-
stub_do_api(path, :post).with(body: json_body).to_return(body: api_fixture('certificates/lets_encrypt'), status: 201)
|
94
|
-
parsed_json = JSON.parse(json_body)
|
95
|
-
|
96
|
-
certificate = resource.create(lets_encrypt_certificate)
|
97
|
-
|
98
|
-
expect(certificate.name).to eq(parsed_json['name'])
|
99
|
-
expect(certificate.type).to eq(parsed_json['type'])
|
100
|
-
expect(certificate.dns_names).to match_array(parsed_json['dns_names'])
|
101
|
-
expect(certificate.state).to eq('pending')
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
it_behaves_like 'an action that handles invalid parameters' do
|
106
|
-
let(:action) { 'create' }
|
107
|
-
let(:arguments) { DropletKit::Certificate.new }
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
describe '#delete' do
|
112
|
-
it 'sends a delete request for the certificate' do
|
113
|
-
request = stub_do_api(File.join(base_path, certificate_id), :delete)
|
114
|
-
resource.delete(id: certificate_id)
|
115
|
-
|
116
|
-
expect(request).to have_been_made
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
@@ -1,99 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe DropletKit::DomainRecordResource do
|
4
|
-
subject(:resource) { described_class.new(connection: connection) }
|
5
|
-
include_context 'resources'
|
6
|
-
|
7
|
-
describe '#all' do
|
8
|
-
it 'returns all of the domain records for a domain' do
|
9
|
-
response = api_fixture('domain_records/all')
|
10
|
-
stub_do_api('/v2/domains/example.com/records', :get).to_return(body: response)
|
11
|
-
|
12
|
-
expected_records = DropletKit::DomainRecordMapping.extract_collection(response, :read)
|
13
|
-
returned_records = resource.all(for_domain: 'example.com')
|
14
|
-
|
15
|
-
expect(returned_records).to all(be_kind_of(DropletKit::DomainRecord))
|
16
|
-
expect(returned_records).to eq(expected_records)
|
17
|
-
end
|
18
|
-
|
19
|
-
it_behaves_like 'a paginated index' do
|
20
|
-
let(:fixture_path) {'domain_records/all'}
|
21
|
-
let(:api_path) {'/v2/domains/example.com/records'}
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe '#create' do
|
26
|
-
it 'creates a domain record' do
|
27
|
-
response = api_fixture('domain_records/create')
|
28
|
-
|
29
|
-
domain_record = DropletKit::DomainRecord.new(
|
30
|
-
type: 'CNAME',
|
31
|
-
name: 'www',
|
32
|
-
data: '@',
|
33
|
-
ttl: 90
|
34
|
-
)
|
35
|
-
as_hash = DropletKit::DomainRecordMapping.hash_for(:create, domain_record)
|
36
|
-
expect(as_hash['type']).to eq('CNAME')
|
37
|
-
expect(as_hash['name']).to eq('www')
|
38
|
-
expect(as_hash['data']).to eq('@')
|
39
|
-
expect(as_hash['ttl']).to eq(90)
|
40
|
-
|
41
|
-
as_json = DropletKit::DomainRecordMapping.representation_for(:create, domain_record)
|
42
|
-
stub_do_api('/v2/domains/example.com/records', :post).with(body: as_json).to_return(body: response, status: 201)
|
43
|
-
|
44
|
-
created_domain_record = resource.create(domain_record, for_domain: 'example.com')
|
45
|
-
expect(created_domain_record.id).to eq(16)
|
46
|
-
expect(created_domain_record.name).to eq('www')
|
47
|
-
expect(created_domain_record.type).to eq('CNAME')
|
48
|
-
expect(created_domain_record.data).to eq('@')
|
49
|
-
expect(created_domain_record.ttl).to eq(90)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe '#find' do
|
54
|
-
it 'returns a domain record' do
|
55
|
-
response = api_fixture('domain_records/find')
|
56
|
-
stub_do_api('/v2/domains/example.com/records/12', :get).to_return(body: response)
|
57
|
-
|
58
|
-
expected_record = DropletKit::DomainRecordMapping.extract_single(response, :read)
|
59
|
-
expect(resource.find(id: 12, for_domain: 'example.com')).to eq(expected_record)
|
60
|
-
end
|
61
|
-
|
62
|
-
it_behaves_like 'resource that handles common errors' do
|
63
|
-
let(:path) { '/v2/domains/example.com/records/12' }
|
64
|
-
let(:method) { :get }
|
65
|
-
let(:action) { :find }
|
66
|
-
let(:arguments) { { for_domain: 'example.com', id: 123 } }
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe '#delete' do
|
71
|
-
it 'deletes the domain record for an id and domain name' do
|
72
|
-
request = stub_do_api('/v2/domains/example.com/records/12', :delete)
|
73
|
-
resource.delete(for_domain: 'example.com', id: 12)
|
74
|
-
|
75
|
-
expect(request).to have_been_made
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
describe '#update' do
|
80
|
-
it 'updates a record' do
|
81
|
-
response = api_fixture('domain_records/update')
|
82
|
-
|
83
|
-
domain_record = DropletKit::DomainRecord.new(name: 'lol')
|
84
|
-
as_hash = DropletKit::DomainRecordMapping.hash_for(:update, domain_record)
|
85
|
-
expect(as_hash['name']).to eq('lol')
|
86
|
-
|
87
|
-
as_json = DropletKit::DomainRecordMapping.representation_for(:update, domain_record)
|
88
|
-
request = stub_do_api('/v2/domains/example.com/records/1066', :put).with(body: as_json).to_return(body: response, status: 200)
|
89
|
-
updated_domain_record = resource.update(domain_record, for_domain: 'example.com', id: 1066)
|
90
|
-
|
91
|
-
expect(request).to have_been_made
|
92
|
-
expect(updated_domain_record.id).to eq(1066)
|
93
|
-
expect(updated_domain_record.name).to eq('lol')
|
94
|
-
expect(updated_domain_record.type).to eq('CNAME')
|
95
|
-
expect(updated_domain_record.data).to eq('@')
|
96
|
-
expect(updated_domain_record.ttl).to eq(1800)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe DropletKit::DomainResource do
|
4
|
-
subject(:resource) { described_class.new(connection: connection) }
|
5
|
-
include_context 'resources'
|
6
|
-
|
7
|
-
describe '#all' do
|
8
|
-
it 'returns all of the domains' do
|
9
|
-
response = api_fixture('domains/all')
|
10
|
-
stub_do_api('/v2/domains', :get).to_return(body: response)
|
11
|
-
expected_domains = DropletKit::DomainMapping.extract_collection(response, :read)
|
12
|
-
|
13
|
-
expect(resource.all).to eq(expected_domains)
|
14
|
-
end
|
15
|
-
|
16
|
-
it_behaves_like 'a paginated index' do
|
17
|
-
let(:fixture_path) {'domains/all'}
|
18
|
-
let(:api_path) {'/v2/domains'}
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '#create' do
|
23
|
-
it 'send a POST request to create a domain' do
|
24
|
-
response = api_fixture('domains/create')
|
25
|
-
|
26
|
-
domain = DropletKit::Domain.new(ip_address: '1.1.1.1', name: 'example.com')
|
27
|
-
as_hash = DropletKit::DomainMapping.hash_for(:create, domain)
|
28
|
-
expect(as_hash['ip_address']).to eq('1.1.1.1')
|
29
|
-
expect(as_hash['name']).to eq('example.com')
|
30
|
-
|
31
|
-
as_json = DropletKit::DomainMapping.representation_for(:create, domain)
|
32
|
-
stub_do_api('/v2/domains', :post).with(body: as_json).to_return(body: response, status: 201)
|
33
|
-
|
34
|
-
created_domain = resource.create(domain)
|
35
|
-
expect(created_domain.name).to eq('example.com')
|
36
|
-
expect(created_domain.ttl).to eq(1800)
|
37
|
-
expect(created_domain.zone_file).to eq(nil)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe '#find' do
|
42
|
-
it 'returns a single domain' do
|
43
|
-
response = api_fixture('domains/find')
|
44
|
-
stub_do_api('/v2/domains/example.com', :get).to_return(body: response)
|
45
|
-
expected_domain = DropletKit::DomainMapping.extract_single(response, :read)
|
46
|
-
|
47
|
-
expect(resource.find(name: 'example.com')).to eq(expected_domain)
|
48
|
-
end
|
49
|
-
|
50
|
-
it_behaves_like 'resource that handles common errors' do
|
51
|
-
let(:path) { '/v2/domains/example.com' }
|
52
|
-
let(:method) { :get }
|
53
|
-
let(:action) { :find }
|
54
|
-
let(:arguments) { { name: 'example.com' } }
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
describe '#delete' do
|
59
|
-
it 'deletes a single domain' do
|
60
|
-
request = stub_do_api('/v2/domains/example.com', :delete)
|
61
|
-
resource.delete(name: 'example.com')
|
62
|
-
expect(request).to have_been_made
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,223 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe DropletKit::DropletActionResource do
|
4
|
-
subject(:resource) { described_class.new(connection: connection) }
|
5
|
-
let(:droplet_id) { 1066 }
|
6
|
-
|
7
|
-
let(:fixture) { api_fixture("droplet_actions/#{action}") }
|
8
|
-
|
9
|
-
include_context 'resources'
|
10
|
-
|
11
|
-
describe '#action_for_id' do
|
12
|
-
let(:action) { 'event' }
|
13
|
-
let(:path) { "/v2/droplets/#{droplet_id}/actions" }
|
14
|
-
let(:fixture) { api_fixture('droplet_actions/find') }
|
15
|
-
|
16
|
-
it 'performs the action' do
|
17
|
-
request = stub_do_api(path, :post).with(
|
18
|
-
body: { type: action, param_1: 1, param_2: 2 }.to_json
|
19
|
-
).to_return(body: fixture, status: 201)
|
20
|
-
|
21
|
-
resource.action_for_id(droplet_id: droplet_id, type: action, param_1: 1, param_2: 2)
|
22
|
-
expect(request).to have_been_made
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe '#action_for_tag' do
|
27
|
-
let(:action) { 'event' }
|
28
|
-
let(:path) { '/v2/droplets/actions' }
|
29
|
-
let(:fixture) { api_fixture('droplet_actions/find') }
|
30
|
-
|
31
|
-
it 'performs the action' do
|
32
|
-
request = stub_do_api(path, :post).with(
|
33
|
-
body: { tag_name: 'test-tag', type: action, param_1: 1, param_2: 2 }.to_json
|
34
|
-
).to_return(body: fixture, status: 201)
|
35
|
-
|
36
|
-
resource.action_for_tag(tag_name: 'test-tag', type: action, param_1: 1, param_2: 2)
|
37
|
-
expect(request).to have_been_made
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
described_class::ACTIONS_WITHOUT_INPUT.each do |action_name|
|
42
|
-
describe "Action #{action_name}" do
|
43
|
-
let(:action) { action_name }
|
44
|
-
let(:path) { "/v2/droplets/#{droplet_id}/actions" }
|
45
|
-
|
46
|
-
it 'performs the action' do
|
47
|
-
request = stub_do_api(path, :post).with(
|
48
|
-
body: { type: action }.to_json
|
49
|
-
).to_return(body: fixture, status: 201)
|
50
|
-
|
51
|
-
returned_action = resource.send(action, droplet_id: droplet_id)
|
52
|
-
|
53
|
-
expect(request).to have_been_made
|
54
|
-
expect(returned_action.type).to eq(action)
|
55
|
-
end
|
56
|
-
|
57
|
-
it_behaves_like 'an action that handles invalid parameters' do
|
58
|
-
let(:object) { DropletKit::Droplet.new }
|
59
|
-
let(:arguments) { { droplet_id: droplet_id } }
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
described_class::TAG_ACTIONS.each do |action_name|
|
65
|
-
describe "Batch Action #{action_name}" do
|
66
|
-
let(:action) { "#{action_name}_for_tag" }
|
67
|
-
let(:path) { "/v2/droplets/actions?tag_name=testing-1" }
|
68
|
-
let(:fixture) do
|
69
|
-
single_action = DropletKit::ActionMapping.extract_single(api_fixture("droplet_actions/#{action_name}"), :read)
|
70
|
-
|
71
|
-
DropletKit::ActionMapping.represent_collection_for(:read, [single_action])
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'performs the action' do
|
75
|
-
request = stub_do_api(path, :post).with(
|
76
|
-
body: { type: action_name }.to_json
|
77
|
-
).to_return(body: fixture, status: 201)
|
78
|
-
|
79
|
-
returned_actions = resource.send(action, tag_name: 'testing-1')
|
80
|
-
|
81
|
-
expect(request).to have_been_made
|
82
|
-
expect(returned_actions.first.type).to eq(action_name)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe "Action snapshot" do
|
88
|
-
let(:action) { 'snapshot' }
|
89
|
-
|
90
|
-
it 'performs the action' do
|
91
|
-
request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
|
92
|
-
body: { type: action, name: 'Dwight' }.to_json
|
93
|
-
).to_return(body: fixture, status: 201)
|
94
|
-
|
95
|
-
returned_action = resource.send(action, droplet_id: droplet_id, name: 'Dwight')
|
96
|
-
|
97
|
-
expect(request).to have_been_made
|
98
|
-
expect(returned_action.type).to eq(action)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe "Action change_kernel" do
|
103
|
-
let(:action) { 'change_kernel' }
|
104
|
-
|
105
|
-
it 'performs the action' do
|
106
|
-
request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
|
107
|
-
body: { type: action, kernel: 1556 }.to_json
|
108
|
-
).to_return(body: fixture, status: 201)
|
109
|
-
|
110
|
-
returned_action = resource.send(action, droplet_id: droplet_id, kernel: 1556)
|
111
|
-
|
112
|
-
expect(request).to have_been_made
|
113
|
-
expect(returned_action.type).to eq(action)
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
describe "Action rename" do
|
118
|
-
let(:action) { 'rename' }
|
119
|
-
|
120
|
-
it 'performs the action' do
|
121
|
-
request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
|
122
|
-
body: { type: action, name: 'newname.com' }.to_json
|
123
|
-
).to_return(body: fixture, status: 201)
|
124
|
-
|
125
|
-
returned_action = resource.send(action, droplet_id: droplet_id, name: 'newname.com')
|
126
|
-
|
127
|
-
expect(request).to have_been_made
|
128
|
-
expect(returned_action.type).to eq(action)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
describe "Action rebuild" do
|
133
|
-
let(:action) { 'rebuild' }
|
134
|
-
|
135
|
-
it 'performs the action' do
|
136
|
-
request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
|
137
|
-
body: { type: action, image: 'ubuntu-14-04-x86' }.to_json
|
138
|
-
).to_return(body: fixture, status: 201)
|
139
|
-
|
140
|
-
returned_action = resource.send(action, droplet_id: droplet_id, image: 'ubuntu-14-04-x86')
|
141
|
-
|
142
|
-
expect(request).to have_been_made
|
143
|
-
expect(returned_action.type).to eq(action)
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
describe "Action restore" do
|
148
|
-
let(:action) { 'restore' }
|
149
|
-
|
150
|
-
it 'performs the action' do
|
151
|
-
request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
|
152
|
-
body: { type: action, image: 'ubuntu-14-04-x86' }.to_json
|
153
|
-
).to_return(body: fixture, status: 201)
|
154
|
-
|
155
|
-
returned_action = resource.send(action, droplet_id: droplet_id, image: 'ubuntu-14-04-x86')
|
156
|
-
|
157
|
-
expect(request).to have_been_made
|
158
|
-
expect(returned_action.type).to eq(action)
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
describe "Action resize" do
|
163
|
-
let(:action) { 'resize' }
|
164
|
-
|
165
|
-
it 'performs the action' do
|
166
|
-
request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
|
167
|
-
body: { type: action, size: '1gb', disk: nil }.to_json
|
168
|
-
).to_return(body: fixture, status: 201)
|
169
|
-
|
170
|
-
returned_action = resource.send(action, droplet_id: droplet_id, size: '1gb')
|
171
|
-
|
172
|
-
expect(request).to have_been_made
|
173
|
-
expect(returned_action.type).to eq(action)
|
174
|
-
end
|
175
|
-
end
|
176
|
-
|
177
|
-
describe "Action resize with disk" do
|
178
|
-
let(:action) { 'resize' }
|
179
|
-
|
180
|
-
it 'performs the action' do
|
181
|
-
request = stub_do_api("/v2/droplets/#{droplet_id}/actions", :post).with(
|
182
|
-
body: { type: action, size: '1gb', disk: true }.to_json
|
183
|
-
).to_return(body: fixture, status: 201)
|
184
|
-
|
185
|
-
returned_action = resource.send(action, droplet_id: droplet_id, size: '1gb', disk: true)
|
186
|
-
|
187
|
-
expect(request).to have_been_made
|
188
|
-
expect(returned_action.type).to eq(action)
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
describe '#find' do
|
193
|
-
it 'returns an action' do
|
194
|
-
request = stub_do_api("/v2/droplets/1066/actions/123", :get).to_return(
|
195
|
-
body: api_fixture('droplet_actions/find')
|
196
|
-
)
|
197
|
-
|
198
|
-
returned_action = resource.find(droplet_id: 1066, id: 123)
|
199
|
-
expect(request).to have_been_made
|
200
|
-
|
201
|
-
expect(returned_action.type).to eq('test')
|
202
|
-
expect(returned_action.started_at).to eq("2014-07-29T14:35:27Z")
|
203
|
-
expect(returned_action.completed_at).to eq(nil)
|
204
|
-
expect(returned_action.resource_id).to eq(nil)
|
205
|
-
expect(returned_action.resource_type).to eq("backend")
|
206
|
-
expect(returned_action.region_slug).to eq('nyc1')
|
207
|
-
|
208
|
-
expect(returned_action.region).to be_kind_of(DropletKit::Region)
|
209
|
-
expect(returned_action.region.slug).to eq('nyc1')
|
210
|
-
expect(returned_action.region.name).to eq('New York')
|
211
|
-
expect(returned_action.region.sizes).to include('512mb')
|
212
|
-
expect(returned_action.region.available).to be(true)
|
213
|
-
expect(returned_action.region.features).to include("virtio", "private_networking", "backups", "ipv6", "metadata")
|
214
|
-
end
|
215
|
-
|
216
|
-
it_behaves_like 'resource that handles common errors' do
|
217
|
-
let(:path) { '/v2/droplets/1066/actions/123' }
|
218
|
-
let(:method) { :get }
|
219
|
-
let(:action) { :find }
|
220
|
-
let(:arguments) { { droplet_id: 1066, id: 123 } }
|
221
|
-
end
|
222
|
-
end
|
223
|
-
end
|