profitbricks-sdk-ruby 3.0.2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/spec/user_spec.rb ADDED
@@ -0,0 +1,96 @@
1
+ require 'spec_helper'
2
+
3
+ describe ProfitBricks::User do
4
+ before(:all) do
5
+ @email = "no-reply#{Time.now.to_i}@example.com"
6
+ @email1 = "no-reply#{Time.now.to_i+1}@example.com"
7
+ @group = ProfitBricks::Group.create(options[:group])
8
+ @group.wait_for { ready? }
9
+
10
+ user = options[:user]
11
+ user[:email] = @email
12
+ @user = ProfitBricks::User.create(user)
13
+ @user.wait_for { ready? }
14
+ end
15
+
16
+ after(:all) do
17
+ @group.delete()
18
+ @user.delete()
19
+ end
20
+
21
+ it '#create failure' do
22
+ expect { ProfitBricks::User.create(options[:bad_user]) }.to raise_error(Excon::Error::UnprocessableEntity)
23
+ end
24
+
25
+ it '#create' do
26
+ expect(@user.id).to match(options[:uuid])
27
+ expect(@user.type).to eq('user')
28
+ expect(@user.properties['firstname']).to eq('John')
29
+ expect(@user.properties['lastname']).to eq('Doe')
30
+ expect(@user.properties['email']).to eq(@email)
31
+ #Password is not present in Create user response
32
+ #expect(@user.password).to eq('secretpassword123')
33
+ expect(@user.properties['administrator']).to be true
34
+ end
35
+
36
+ it '#list' do
37
+ users = ProfitBricks::User.list()
38
+
39
+ expect(users.count).to be > 0
40
+ expect(users[0].type).to eq('user')
41
+ end
42
+
43
+ it '#get' do
44
+ user = ProfitBricks::User.get(@user.id)
45
+ expect(user.id).to match(options[:uuid])
46
+ expect(user.type).to eq('user')
47
+ expect(user.properties['firstname']).to eq('John')
48
+ expect(user.properties['lastname']).to eq('Doe')
49
+ expect(user.properties['email']).to eq(@email)
50
+ #Password is not present in user response
51
+ #expect(user.properties['password']).to eq('secretpassword123')
52
+ expect(user.properties['administrator']).to be true
53
+ expect(user.properties['forceSecAuth']).to be false
54
+ expect(user.properties['secAuthActive']).to be false
55
+ end
56
+
57
+ it '#get failure' do
58
+ expect { ProfitBricks::User.get(options[:bad_id]) }.to raise_error(Excon::Error::NotFound)
59
+ end
60
+
61
+ it '#update' do
62
+ user = @user.update(
63
+ firstname: 'Jane',
64
+ lastname: 'Doe',
65
+ administrator: false,
66
+ email: @email
67
+ )
68
+
69
+ expect(user.id).to match(options[:uuid])
70
+ expect(user.type).to eq('user')
71
+ expect(user.properties['firstname']).to eq('Jane')
72
+ expect(user.properties['lastname']).to eq('Doe')
73
+ expect(user.properties['email']).to eq(@email)
74
+ expect(user.properties['administrator']).to be false
75
+ expect(user.properties['secAuthActive']).to be false
76
+ end
77
+
78
+ it '#delete' do
79
+ user = options[:user]
80
+ user[:email] = @email1
81
+ user = ProfitBricks::User.create(user)
82
+ user.wait_for { ready? }
83
+
84
+ expect(user.delete.requestId).to match(options[:uuid])
85
+ end
86
+
87
+ it '#add user to group' do
88
+ user = ProfitBricks::User.add_to_group(@group.id,@user.id)
89
+ expect(user.id).to match(options[:uuid])
90
+ expect(user.type).to eq('user')
91
+ end
92
+
93
+ it '#remove user from group' do
94
+ expect(ProfitBricks::User.remove_from_group(@group.id,@user.id)).to be true
95
+ end
96
+ end
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+
3
+ describe ProfitBricks::UserManagement do
4
+ before(:all) do
5
+
6
+ @datacenter = ProfitBricks::Datacenter.create(options[:datacenter])
7
+ @datacenter.wait_for { ready? }
8
+
9
+ @group = ProfitBricks::UserManagement.create_group(options[:group])
10
+ @group.wait_for { ready? }
11
+
12
+ share = options[:share]
13
+ share[:resource_id] = @datacenter.id
14
+ @share = ProfitBricks::Share.create(@group.id,share)
15
+ @share.wait_for { ready? }
16
+
17
+ @email = "no-reply#{Time.now.to_i}@example.com"
18
+ user = options[:user]
19
+ user[:email] = @email
20
+ @user = ProfitBricks::UserManagement.create_user(user)
21
+ @user.wait_for { ready? }
22
+ end
23
+
24
+ after(:all) do
25
+ ProfitBricks::Share.delete(@group.id,@datacenter.id)
26
+ @group.delete()
27
+ # @user.delete()
28
+ @datacenter.delete()
29
+ end
30
+
31
+ it '#create group failure' do
32
+ expect { ProfitBricks::UserManagement.create_group(options[:bad_group]) }.to raise_error(Excon::Error::UnprocessableEntity)
33
+ end
34
+
35
+ it '#create group' do
36
+ expect(@group.id).to match(options[:uuid])
37
+ expect(@group.type).to eq('group')
38
+ expect(@group.properties['name']).to eq('Ruby SDK Test')
39
+ expect(@group.properties['createDataCenter']).to be false
40
+ expect(@group.properties['createSnapshot']).to be false
41
+ expect(@group.properties['reserveIp']).to be false
42
+ expect(@group.properties['accessActivityLog']).to be false
43
+ end
44
+
45
+ it '#list group' do
46
+ groups = ProfitBricks::UserManagement.list_group()
47
+
48
+ expect(groups.count).to be > 0
49
+ end
50
+
51
+ it '#get group' do
52
+ group = ProfitBricks::UserManagement.get_group(@group.id)
53
+ expect(group.type).to eq('group')
54
+ expect(group.properties['name']).to eq('Ruby SDK Test')
55
+ expect(group.properties['createDataCenter']).to be false
56
+ expect(group.properties['createSnapshot']).to be false
57
+ expect(group.properties['reserveIp']).to be false
58
+ expect(group.properties['accessActivityLog']).to be false
59
+ end
60
+
61
+ it '#create share' do
62
+ expect(@share.id).to match(options[:uuid])
63
+ expect(@share.type).to eq('resource')
64
+ # expect(@share.properties.editPrivilege).to be true
65
+ # expect(@share.properties.sharePrivilege).to be true
66
+ end
67
+
68
+ it '#list share' do
69
+ shares = ProfitBricks::UserManagement.list_share(@group.id)
70
+
71
+ expect(shares.count).to be > 0
72
+ expect(shares[0].type).to eq('resource')
73
+ end
74
+
75
+ it '#get share' do
76
+ share = ProfitBricks::UserManagement.get_share(@group.id,@share.id)
77
+ expect(share.id).to match(options[:uuid])
78
+ expect(share.type).to eq('resource')
79
+ # expect(share.properties.editPrivilege).to be true
80
+ # expect(share.properties.sharePrivilege).to be true
81
+ end
82
+
83
+ it '#create user' do
84
+ expect(@user.id).to match(options[:uuid])
85
+ expect(@user.type).to eq('user')
86
+ expect(@user.properties['firstname']).to eq('John')
87
+ expect(@user.properties['lastname']).to eq('Doe')
88
+ expect(@user.properties['email']).to eq(@email)
89
+ #Password is not present in Create user response
90
+ #expect(@user.password).to eq('secretpassword123')
91
+ expect(@user.properties['administrator']).to be true
92
+ end
93
+
94
+ it '#list user' do
95
+ users = ProfitBricks::UserManagement.list_user()
96
+
97
+ expect(users.count).to be > 0
98
+ expect(users[0].type).to eq('user')
99
+ end
100
+
101
+ it '#get user' do
102
+ user = ProfitBricks::UserManagement.get_user(@user.id)
103
+ expect(user.id).to match(options[:uuid])
104
+ expect(user.type).to eq('user')
105
+ expect(user.properties['firstname']).to eq('John')
106
+ expect(user.properties['lastname']).to eq('Doe')
107
+ expect(user.properties['email']).to eq(@email)
108
+ expect(user.properties['administrator']).to be true
109
+ expect(user.properties['forceSecAuth']).to be false
110
+ expect(user.properties['secAuthActive']).to be false
111
+ end
112
+
113
+ end
data/spec/volume_spec.rb CHANGED
@@ -8,6 +8,9 @@ describe ProfitBricks::Volume do
8
8
  @server = ProfitBricks::Server.create(@datacenter.id, options[:server])
9
9
  @server.wait_for { ready? }
10
10
 
11
+ @volume_with_alias = ProfitBricks::Volume.create(@datacenter.id,options[:volume_with_alias])
12
+ @volume_with_alias.wait_for { ready? }
13
+
11
14
  @volume = ProfitBricks::Volume.create(@datacenter.id, options[:volume])
12
15
  @volume.wait_for { ready? }
13
16
 
@@ -22,13 +25,30 @@ describe ProfitBricks::Volume do
22
25
  @datacenter.delete
23
26
  end
24
27
 
28
+ it '#create failure' do
29
+ expect { ProfitBricks::Volume.create(@datacenter.id, name: 'Ruby SDK Test') }.to raise_error(Excon::Error::UnprocessableEntity, /Attribute 'size' is required/)
30
+ end
31
+
25
32
  it '#create' do
26
33
  expect(@volume.type).to eq('volume')
27
34
  expect(@volume.id).to match(options[:uuid])
28
- expect(@volume.properties['name']).to eq('my boot volume for server 1')
35
+ expect(@volume.properties['name']).to eq('Ruby SDK Test')
29
36
  expect(@volume.properties['size']).to be_kind_of(Integer)
30
- expect(@volume.properties['bus']).to be nil
31
- expect(@volume.properties['type']).to eq('HDD')
37
+ expect(@volume.properties['bus']).to eq('VIRTIO')
38
+ expect(@volume.properties['size']).to eq(2)
39
+ expect(@volume.properties['type']).to eq('HDD')
40
+ expect(@volume.properties['licenceType']).to eq('UNKNOWN')
41
+ expect(@volume.properties['availabilityZone']).to eq('ZONE_3')
42
+ #expect(@volume.properties['sshKeys']).to be_kind_of(Array)
43
+ end
44
+
45
+ it '#create image alias' do
46
+ expect(@volume_with_alias.type).to eq('volume')
47
+ expect(@volume_with_alias.properties['name']).to eq('volume created with alias')
48
+ expect(@volume_with_alias.properties['size']).to be_kind_of(Integer)
49
+ expect(@volume_with_alias.properties['bus']).to be nil
50
+ expect(@volume_with_alias.properties['type']).to eq('HDD')
51
+ expect(@volume_with_alias.properties['imagePassword']).to eq('Vol44lias')
32
52
  end
33
53
 
34
54
  it '#list' do
@@ -37,7 +57,7 @@ describe ProfitBricks::Volume do
37
57
  expect(volumes.count).to be > 0
38
58
  expect(volumes[0].type).to eq('volume')
39
59
  expect(volumes[0].id).to eq(@volume.id)
40
- expect(volumes[0].properties['name']).to eq('my boot volume for server 1')
60
+ expect(volumes[0].properties['name']).to eq('Ruby SDK Test')
41
61
  expect(volumes[0].properties['size']).to be_kind_of(Integer)
42
62
  expect(volumes[0].properties['bus']).to eq('VIRTIO')
43
63
  expect(volumes[0].properties['type']).to eq('HDD')
@@ -48,24 +68,33 @@ describe ProfitBricks::Volume do
48
68
 
49
69
  expect(volume.type).to eq('volume')
50
70
  expect(volume.id).to eq(@volume.id)
51
- expect(volume.properties['name']).to eq('my boot volume for server 1')
71
+ expect(volume.properties['name']).to eq('Ruby SDK Test')
52
72
  expect(volume.properties['size']).to be_kind_of(Integer)
73
+ expect(volume.properties['size']).to eq(2)
53
74
  expect(volume.properties['bus']).to eq('VIRTIO')
54
75
  expect(volume.properties['type']).to eq('HDD')
76
+ expect(volume.properties['licenceType']).to eq('UNKNOWN')
77
+ expect(volume.properties['availabilityZone']).to eq('ZONE_3')
78
+ #expect(volume.properties['sshKeys']).to be_kind_of(Array)
79
+ end
80
+
81
+ it '#get failure' do
82
+ expect { ProfitBricks::Volume.get(@datacenter.id,options[:bad_id]) }.to raise_error(Excon::Error::NotFound, /Resource does not exist/)
55
83
  end
56
84
 
57
85
  it '#update' do
58
86
  volume = @volume.update(
59
- name: 'Resized storage to 15 GB',
60
- size: 15
87
+ name: 'Ruby SDK Test - RENAME',
88
+ size: 5
61
89
  )
62
90
 
63
91
  expect(volume.type).to eq('volume')
64
92
  expect(volume.id).to eq(@volume.id)
65
- expect(volume.properties['name']).to eq('Resized storage to 15 GB')
93
+ expect(volume.properties['name']).to eq('Ruby SDK Test - RENAME')
66
94
  expect(volume.properties['size']).to be_kind_of(Integer)
67
95
  expect(volume.properties['bus']).to eq('VIRTIO')
68
96
  expect(volume.properties['type']).to eq('HDD')
97
+ expect(volume.properties['size']).to eq(5)
69
98
  end
70
99
 
71
100
  it '#delete' do
@@ -92,11 +121,11 @@ describe ProfitBricks::Volume do
92
121
  expect(volume).to be_kind_of(Hash)
93
122
  end
94
123
 
95
- it '#create_snapshop' do
124
+ it '#create_snapshot' do
96
125
  # Confirm snapshot has been created.
97
126
  expect(@snapshot.type).to eq('snapshot')
98
- expect(@snapshot.properties['name']).to eq('Snapshot of storage X on 12.12.12 12:12:12 - updated')
99
- expect(@snapshot.properties['description']).to eq('description of a snapshot - updated')
127
+ expect(@snapshot.properties['name']).to eq('Ruby SDK Test')
128
+ expect(@snapshot.properties['description']).to eq('Ruby SDK test snapshot')
100
129
  end
101
130
 
102
131
  it '#restore_snapshot' do
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: profitbricks-sdk-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan Devenport
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-10 00:00:00.000000000 Z
11
+ date: 2017-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.44'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.44'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.6'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.6'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '10.4'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '3.2'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.2'
83
83
  description: The ProfitBricks SDK for Ruby provides integration with the ProfitBricks
@@ -88,7 +88,7 @@ executables: []
88
88
  extensions: []
89
89
  extra_rdoc_files: []
90
90
  files:
91
- - .gitignore
91
+ - ".gitignore"
92
92
  - Gemfile
93
93
  - LICENSE.txt
94
94
  - README.md
@@ -97,9 +97,11 @@ files:
97
97
  - docs/reference.md
98
98
  - lib/profitbricks.rb
99
99
  - lib/profitbricks/config.rb
100
+ - lib/profitbricks/contract.rb
100
101
  - lib/profitbricks/datacenter.rb
101
102
  - lib/profitbricks/errors.rb
102
103
  - lib/profitbricks/firewall.rb
104
+ - lib/profitbricks/group.rb
103
105
  - lib/profitbricks/image.rb
104
106
  - lib/profitbricks/ipblock.rb
105
107
  - lib/profitbricks/lan.rb
@@ -109,14 +111,20 @@ files:
109
111
  - lib/profitbricks/nic.rb
110
112
  - lib/profitbricks/profitbricks.rb
111
113
  - lib/profitbricks/request.rb
114
+ - lib/profitbricks/resource.rb
112
115
  - lib/profitbricks/server.rb
116
+ - lib/profitbricks/share.rb
113
117
  - lib/profitbricks/snapshot.rb
118
+ - lib/profitbricks/user.rb
119
+ - lib/profitbricks/usermanagement.rb
114
120
  - lib/profitbricks/version.rb
115
121
  - lib/profitbricks/volume.rb
116
122
  - lib/profitbricks/wait_for.rb
117
123
  - profitbricks-sdk-ruby.gemspec
124
+ - spec/contract_spec.rb
118
125
  - spec/datacenter_spec.rb
119
126
  - spec/firewall_spec.rb
127
+ - spec/group_spec.rb
120
128
  - spec/image_spec.rb
121
129
  - spec/ipblock_spec.rb
122
130
  - spec/lan_spec.rb
@@ -125,10 +133,14 @@ files:
125
133
  - spec/nic_spec.rb
126
134
  - spec/profitbricks_spec.rb
127
135
  - spec/request_spec.rb
136
+ - spec/resource_spec.rb
128
137
  - spec/server_spec.rb
138
+ - spec/share_spec.rb
129
139
  - spec/snapshot_spec.rb
130
140
  - spec/spec_helper.rb
131
141
  - spec/support/resource_helper.rb
142
+ - spec/user_spec.rb
143
+ - spec/usermanagement_spec.rb
132
144
  - spec/volume_spec.rb
133
145
  homepage: https://github.com/profitbricks/profitbricks-sdk-ruby
134
146
  licenses:
@@ -140,23 +152,25 @@ require_paths:
140
152
  - lib
141
153
  required_ruby_version: !ruby/object:Gem::Requirement
142
154
  requirements:
143
- - - '>='
155
+ - - ">="
144
156
  - !ruby/object:Gem::Version
145
157
  version: '0'
146
158
  required_rubygems_version: !ruby/object:Gem::Requirement
147
159
  requirements:
148
- - - '>='
160
+ - - ">="
149
161
  - !ruby/object:Gem::Version
150
162
  version: '0'
151
163
  requirements: []
152
164
  rubyforge_project:
153
- rubygems_version: 2.0.14
165
+ rubygems_version: 2.6.12
154
166
  signing_key:
155
167
  specification_version: 4
156
168
  summary: Official ProfitBricks SDK for Ruby
157
169
  test_files:
170
+ - spec/contract_spec.rb
158
171
  - spec/datacenter_spec.rb
159
172
  - spec/firewall_spec.rb
173
+ - spec/group_spec.rb
160
174
  - spec/image_spec.rb
161
175
  - spec/ipblock_spec.rb
162
176
  - spec/lan_spec.rb
@@ -165,8 +179,12 @@ test_files:
165
179
  - spec/nic_spec.rb
166
180
  - spec/profitbricks_spec.rb
167
181
  - spec/request_spec.rb
182
+ - spec/resource_spec.rb
168
183
  - spec/server_spec.rb
184
+ - spec/share_spec.rb
169
185
  - spec/snapshot_spec.rb
170
186
  - spec/spec_helper.rb
171
187
  - spec/support/resource_helper.rb
188
+ - spec/user_spec.rb
189
+ - spec/usermanagement_spec.rb
172
190
  - spec/volume_spec.rb