code42 0.2.6 → 0.2.7
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.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/code42.gemspec +3 -0
- data/lib/code42.rb +66 -27
- data/lib/code42/api/destination.rb +18 -0
- data/lib/code42/api/diagnostic.rb +9 -0
- data/lib/code42/api/org.rb +5 -2
- data/lib/code42/api/product_license.rb +21 -0
- data/lib/code42/api/server.rb +21 -0
- data/lib/code42/api/server_connection_string.rb +9 -0
- data/lib/code42/api/server_settings.rb +13 -0
- data/lib/code42/api/store_point.rb +22 -0
- data/lib/code42/api/token.rb +7 -0
- data/lib/code42/client.rb +23 -31
- data/lib/code42/computer.rb +0 -2
- data/lib/code42/connection.rb +14 -26
- data/lib/code42/destination.rb +52 -0
- data/lib/code42/product_license.rb +12 -0
- data/lib/code42/server.rb +54 -0
- data/lib/code42/server_connection_string.rb +10 -0
- data/lib/code42/server_settings.rb +4 -0
- data/lib/code42/settings.rb +1 -1
- data/lib/code42/store_point.rb +63 -0
- data/lib/code42/version.rb +1 -1
- data/spec/cassettes/Code42_Client/_add_product_license/adds_a_product_license.yml +39 -0
- data/spec/cassettes/Code42_Client/_apply_mlk/applies_the_mlk.yml +77 -0
- data/spec/cassettes/Code42_Client/_create_destination/creates_a_destination.yml +40 -0
- data/spec/cassettes/Code42_Client/_create_server/creates_a_server.yml +38 -0
- data/spec/cassettes/Code42_Client/_destination/returns_a_destination.yml +37 -0
- data/spec/cassettes/Code42_Client/_destinations/returns_an_array_of_desinations.yml +37 -0
- data/spec/cassettes/Code42_Client/_org_share_destinations/returns_a_provider_key.yml +36 -0
- data/spec/cassettes/Code42_Client/_product_licenses/returns_an_array_of_product_licenses.yml +81 -0
- data/spec/cassettes/Code42_Client/_remove_product_license/removes_a_product_license.yml +104 -0
- data/spec/cassettes/Code42_Client/_server/returns_a_server.yml +37 -0
- data/spec/cassettes/Code42_Client/_server_connection_string/returns_a_connection_string.yml +36 -0
- data/spec/cassettes/Code42_Client/_server_settings/returns_a_server_settings_object.yml +37 -0
- data/spec/cassettes/Code42_Client/_servers/returns_an_array_of_servers.yml +37 -0
- data/spec/cassettes/Code42_Client/_update_product_license/updates_a_product_license.yml +76 -0
- data/spec/cassettes/Code42_Client/_update_server_settings/updates_server_settings.yml +70 -0
- data/spec/cassettes/Code42_StorePoint/_accept_new_devices/should_return_store_point_with_accept_new_devices_enabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_disable_balancing/should_return_store_point_with_balancing_enabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_disable_inbound_backup/should_return_store_point_with_inbound_backup_disabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_enable_balancing/should_return_store_point_with_balancing_enabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_enable_inbound_backup/should_return_store_point_with_inbound_backup_disabled.yml +75 -0
- data/spec/cassettes/Code42_StorePoint/_find_store_point_by_id/should_return_correct_store_point.yml +38 -0
- data/spec/cassettes/Code42_StorePoint/_find_store_point_by_name/should_return_correct_store_point.yml +38 -0
- data/spec/cassettes/Code42_StorePoint/_find_store_point_by_server_name/should_return_correct_store_point.yml +38 -0
- data/spec/cassettes/Code42_StorePoint/_reject_new_devices/should_return_store_point_with_accept_new_devices_disabled.yml +75 -0
- data/spec/code42/client_spec.rb +161 -57
- data/spec/code42/connection_spec.rb +10 -12
- data/spec/code42/extension_spec.rb +0 -2
- data/spec/code42/org_spec.rb +20 -22
- data/spec/code42/ping_spec.rb +1 -3
- data/spec/code42/product_license_spec.rb +34 -0
- data/spec/code42/resource_spec.rb +0 -2
- data/spec/code42/role_spec.rb +2 -4
- data/spec/code42/server_connection_string_spec.rb +34 -0
- data/spec/code42/server_spec.rb +66 -0
- data/spec/code42/settings_spec.rb +25 -27
- data/spec/code42/store_point_spec.rb +90 -0
- data/spec/code42/token_spec.rb +10 -15
- data/spec/code42/user_spec.rb +4 -6
- data/spec/spec_helper.rb +1 -1
- metadata +74 -4
data/spec/cassettes/Code42_StorePoint/_find_store_point_by_id/should_return_correct_store_point.yml
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://admin:admin@10.10.40.57:4280/api/storePoint/2
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Cache-Control:
|
22
|
+
- no-store
|
23
|
+
Pragma:
|
24
|
+
- no-cache
|
25
|
+
Content-Location:
|
26
|
+
- http://10.10.40.57:4280/api/v1/storePoint/2
|
27
|
+
Content-Type:
|
28
|
+
- application/json;charset=UTF-8
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Server:
|
32
|
+
- Jetty(7.6.3.v20120416)
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: '{"metadata":{"timestamp":"2014-08-30T17:29:12.721Z","params":{}},"data":{"storePointId":2,"storePointName":"651951667247317249_Default","note":null,"path":"/var/opt/proserver/backupArchives","directory":"CrashPlanArchive_Default","absolutePath":"/var/opt/proserver/backupArchives/CrashPlanArchive_Default","serverId":5,"serverName":"test_storage_node","destinationId":4,"destinationName":"local-storage","backupSessionCount":0,"computerCount":0,"backupComputerCount":0,"userCount":0,"licensedUserCount":0,"orgCount":0,"usedBytes":4657938432,"usedPercentage":22.0,"freeBytes":16478859264,"freeBytesAlert":"null","freePercentage":78.0,"coldBytes":0,"coldPercentageOfUsed":0.0,"coldPercentageOfTotal":0.0,"totalBytes":21136797696,"acceptingInboundBackup":true,"balancingData":true,"acceptingNewComputers":true,"writeSpeed":null,"online":true,"serverOnline":true,"archiveBytes":0,"selectedBytes":0,"todoBytes":0}}'
|
36
|
+
http_version:
|
37
|
+
recorded_at: Sat, 30 Aug 2014 17:29:12 GMT
|
38
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://admin:admin@10.10.40.57:4280/api/storePoint?q=651951667247317249_Default
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Cache-Control:
|
22
|
+
- no-store
|
23
|
+
Pragma:
|
24
|
+
- no-cache
|
25
|
+
Content-Location:
|
26
|
+
- http://10.10.40.57:4280/api/v1/storePoint?q=651951667247317249_Default
|
27
|
+
Content-Type:
|
28
|
+
- application/json;charset=UTF-8
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Server:
|
32
|
+
- Jetty(7.6.3.v20120416)
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: '{"metadata":{"timestamp":"2014-08-30T17:29:18.686Z","params":{"q":"651951667247317249_Default"}},"data":{"totalCount":1,"storepoints":[{"storePointId":2,"storePointName":"651951667247317249_Default","note":null,"path":"/var/opt/proserver/backupArchives","directory":"CrashPlanArchive_Default","absolutePath":"/var/opt/proserver/backupArchives/CrashPlanArchive_Default","serverId":5,"serverName":"test_storage_node","destinationId":4,"destinationName":"local-storage","backupSessionCount":0,"computerCount":0,"backupComputerCount":0,"userCount":0,"licensedUserCount":0,"orgCount":0,"usedBytes":4657950720,"usedPercentage":22.0,"freeBytes":16478846976,"freeBytesAlert":"null","freePercentage":78.0,"coldBytes":0,"coldPercentageOfUsed":0.0,"coldPercentageOfTotal":0.0,"totalBytes":21136797696,"acceptingInboundBackup":false,"balancingData":false,"acceptingNewComputers":false,"writeSpeed":null,"online":true,"serverOnline":true,"archiveBytes":0,"selectedBytes":0,"todoBytes":0}]}}'
|
36
|
+
http_version:
|
37
|
+
recorded_at: Sat, 30 Aug 2014 17:29:18 GMT
|
38
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://admin:admin@10.10.40.57:4280/api/storePoint?q=test_storage_node
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Cache-Control:
|
22
|
+
- no-store
|
23
|
+
Pragma:
|
24
|
+
- no-cache
|
25
|
+
Content-Location:
|
26
|
+
- http://10.10.40.57:4280/api/v1/storePoint?q=test_storage_node
|
27
|
+
Content-Type:
|
28
|
+
- application/json;charset=UTF-8
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Server:
|
32
|
+
- Jetty(7.6.3.v20120416)
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: '{"metadata":{"timestamp":"2014-08-30T17:29:14.011Z","params":{"q":"test_storage_node"}},"data":{"totalCount":1,"storepoints":[{"storePointId":2,"storePointName":"651951667247317249_Default","note":null,"path":"/var/opt/proserver/backupArchives","directory":"CrashPlanArchive_Default","absolutePath":"/var/opt/proserver/backupArchives/CrashPlanArchive_Default","serverId":5,"serverName":"test_storage_node","destinationId":4,"destinationName":"local-storage","backupSessionCount":0,"computerCount":0,"backupComputerCount":0,"userCount":0,"licensedUserCount":0,"orgCount":0,"usedBytes":4657938432,"usedPercentage":22.0,"freeBytes":16478859264,"freeBytesAlert":"null","freePercentage":78.0,"coldBytes":0,"coldPercentageOfUsed":0.0,"coldPercentageOfTotal":0.0,"totalBytes":21136797696,"acceptingInboundBackup":true,"balancingData":true,"acceptingNewComputers":true,"writeSpeed":null,"online":true,"serverOnline":true,"archiveBytes":0,"selectedBytes":0,"todoBytes":0}]}}'
|
36
|
+
http_version:
|
37
|
+
recorded_at: Sat, 30 Aug 2014 17:29:13 GMT
|
38
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,75 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://admin:admin@10.10.40.57:4280/api/storePoint/2
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.0
|
12
|
+
Accept-Encoding:
|
13
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
+
Accept:
|
15
|
+
- '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Cache-Control:
|
22
|
+
- no-store
|
23
|
+
Pragma:
|
24
|
+
- no-cache
|
25
|
+
Content-Location:
|
26
|
+
- http://10.10.40.57:4280/api/v1/storePoint/2
|
27
|
+
Content-Type:
|
28
|
+
- application/json;charset=UTF-8
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Server:
|
32
|
+
- Jetty(7.6.3.v20120416)
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: '{"metadata":{"timestamp":"2014-08-30T18:27:30.187Z","params":{}},"data":{"storePointId":2,"storePointName":"651951667247317249_Default","note":null,"path":"/var/opt/proserver/backupArchives","directory":"CrashPlanArchive_Default","absolutePath":"/var/opt/proserver/backupArchives/CrashPlanArchive_Default","serverId":5,"serverName":"test_storage_node","destinationId":4,"destinationName":"local-storage","backupSessionCount":0,"computerCount":0,"backupComputerCount":0,"userCount":0,"licensedUserCount":0,"orgCount":0,"usedBytes":4658135040,"usedPercentage":22.0,"freeBytes":16478662656,"freeBytesAlert":"null","freePercentage":78.0,"coldBytes":0,"coldPercentageOfUsed":0.0,"coldPercentageOfTotal":0.0,"totalBytes":21136797696,"acceptingInboundBackup":true,"balancingData":true,"acceptingNewComputers":true,"writeSpeed":null,"online":true,"serverOnline":true,"archiveBytes":0,"selectedBytes":0,"todoBytes":0}}'
|
36
|
+
http_version:
|
37
|
+
recorded_at: Sat, 30 Aug 2014 18:27:29 GMT
|
38
|
+
- request:
|
39
|
+
method: put
|
40
|
+
uri: http://admin:admin@10.10.40.57:4280/api/storePoint/2
|
41
|
+
body:
|
42
|
+
encoding: UTF-8
|
43
|
+
string: '{"acceptingNewComputers":false}'
|
44
|
+
headers:
|
45
|
+
User-Agent:
|
46
|
+
- Faraday v0.9.0
|
47
|
+
Content-Type:
|
48
|
+
- application/json
|
49
|
+
Accept-Encoding:
|
50
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
51
|
+
Accept:
|
52
|
+
- '*/*'
|
53
|
+
response:
|
54
|
+
status:
|
55
|
+
code: 200
|
56
|
+
message: OK
|
57
|
+
headers:
|
58
|
+
Cache-Control:
|
59
|
+
- no-store
|
60
|
+
Pragma:
|
61
|
+
- no-cache
|
62
|
+
Content-Location:
|
63
|
+
- http://10.10.40.57:4280/api/v1/storePoint/2
|
64
|
+
Content-Type:
|
65
|
+
- application/json;charset=UTF-8
|
66
|
+
Transfer-Encoding:
|
67
|
+
- chunked
|
68
|
+
Server:
|
69
|
+
- Jetty(7.6.3.v20120416)
|
70
|
+
body:
|
71
|
+
encoding: UTF-8
|
72
|
+
string: '{"metadata":{"timestamp":"2014-08-30T18:27:30.818Z","params":{}},"data":{"storePointId":2,"storePointName":"651951667247317249_Default","note":null,"path":"/var/opt/proserver/backupArchives","directory":"CrashPlanArchive_Default","absolutePath":"/var/opt/proserver/backupArchives/CrashPlanArchive_Default","serverId":5,"serverName":"test_storage_node","destinationId":4,"destinationName":"local-storage","backupSessionCount":0,"computerCount":0,"backupComputerCount":0,"userCount":0,"licensedUserCount":0,"orgCount":0,"usedBytes":4658135040,"usedPercentage":22.0,"freeBytes":16478662656,"freeBytesAlert":"null","freePercentage":78.0,"coldBytes":0,"coldPercentageOfUsed":0.0,"coldPercentageOfTotal":0.0,"totalBytes":21136797696,"acceptingInboundBackup":true,"balancingData":true,"acceptingNewComputers":false,"writeSpeed":null,"online":true,"serverOnline":true,"archiveBytes":0,"selectedBytes":0,"todoBytes":0}}'
|
73
|
+
http_version:
|
74
|
+
recorded_at: Sat, 30 Aug 2014 18:27:30 GMT
|
75
|
+
recorded_with: VCR 2.5.0
|
data/spec/code42/client_spec.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
1
|
describe Code42::Client, :vcr do
|
4
2
|
|
5
3
|
subject(:client) do
|
@@ -9,31 +7,136 @@ describe Code42::Client, :vcr do
|
|
9
7
|
https: false,
|
10
8
|
api_root: '/api',
|
11
9
|
username: 'admin',
|
12
|
-
password: 'admin'
|
10
|
+
password: 'admin',
|
11
|
+
verify_https: false,
|
12
|
+
debug: true
|
13
13
|
)
|
14
14
|
end
|
15
15
|
|
16
|
-
describe
|
17
|
-
it
|
16
|
+
describe '#server_connection_string' do
|
17
|
+
it 'returns a connection string' do
|
18
|
+
connection_string = client.server_connection_string(3)
|
19
|
+
connection_string.should be_a(Code42::ServerConnectionString)
|
20
|
+
connection_string.server_id.should == 3
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#org_share_destinations' do
|
25
|
+
it 'returns a provider key' do
|
26
|
+
client.org_share_destinations(5).should == 'rO0ABXQCnSI2MDA3ODIyNTE5MDIzNzAwNDkifHwiNjAwNzgyMTgzNjg2MjA5NzkzInx8IkNyYXNoUGxhbiBQUk9lIFNlcnZlciJ8fCJ1cms4Mm1tMjRtdzc4amNjInx8IjEwLjEwLjQ2LjEzNzo0MjgyInx8Im51bGwifHwiMTAuMTAuNDYuMTM3OjQyODYifHwiMTAuMTAuNDYuMTM3OjQyODMifHwiaHR0cDovLzEwLjEwLjQ2LjEzNzo0MjgwInx8Ik1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBb2hoeXdmYUpTWDh2RzZmK2JvR3ZDeGJPUzJrdk8yRlRIQUdJUGJtb0kwUUphd2gxZ3ZPQVFUQk5WeHY2Y1k4R1hKckphelI4dUl0UGQ3ZFNHNFNTbFYyR2FsT09WVUJuRitpUGQ2T1E2cDBhaVgvR1JIcjNqaTU2ZVNNNW1yYlUvTmQybGVKMSttV1Z2UkhOQ2ErTXFWbWQ3K3dNYkJvZk5aeGRSbzhZRk1SSVVMVFJEZk1MRFJLbnZUWUgzRk5vMCt6STZkb1RUeHpueXdTWXlqN0hEbkRDbW4yZGs4WnJwbnNpRkZHU3NDRUxPWXUraDZEUVppTkhlVDdwNWMzYnhSSW1tU2VxOUtPRmxkSlhZYk9ZSXB4TVE0QUtnYXYyWk9RWlBKZkIxOTJNek8rK25TY1B4Z1R6SVR4Nmw1N0xIY3Fzc1RPaFV3Z29JSm9ncTJDZzl3SURBUUFCInx8IlBST1ZJREVSInx8Ijgya21yOGo5a3Bjdzk5cHMifHwiNjAwNzgyMjUyMDE5ODEwNTYxInx8IkNyYXNoUGxhbiBQUk9lIFNlcnZlciJ8fCJudWxsIg=='
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#server_settings' do
|
31
|
+
it 'returns a server settings object' do
|
32
|
+
client.server_settings(1).should be_a(Code42::ServerSettings)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#server' do
|
37
|
+
it 'returns a server' do
|
38
|
+
server = client.server(3)
|
39
|
+
server.should be_a(Code42::Server)
|
40
|
+
server.id.should == 3
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#update_server_settings' do
|
45
|
+
it 'updates server settings' do
|
46
|
+
client.update_server_settings(1, name: 'Foo Bar Server')
|
47
|
+
client.server_settings(1).name.should == 'Foo Bar Server'
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe '#destinations' do
|
52
|
+
it 'returns an array of desinations' do
|
53
|
+
destinations = client.destinations
|
54
|
+
destinations.should be_an(Array)
|
55
|
+
destinations.first.should be_a(Code42::Destination)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#create_destination' do
|
60
|
+
it 'creates a destination' do
|
61
|
+
destination = client.create_destination(provider: true, destination_name: 'aaa', provider_key: 'rO0ABXQCnSI2MDA3ODIyNTE5MDIzNzAwNDkifHwiNjAwNzgyMTgzNjg2MjA5NzkzInx8IkNyYXNoUGxhbiBQUk9lIFNlcnZlciJ8fCJ1cms4Mm1tMjRtdzc4amNjInx8IjEwLjEwLjQ2LjEzNzo0MjgyInx8Im51bGwifHwiMTAuMTAuNDYuMTM3OjQyODYifHwiMTAuMTAuNDYuMTM3OjQyODMifHwiaHR0cDovLzEwLjEwLjQ2LjEzNzo0MjgwInx8Ik1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBb2hoeXdmYUpTWDh2RzZmK2JvR3ZDeGJPUzJrdk8yRlRIQUdJUGJtb0kwUUphd2gxZ3ZPQVFUQk5WeHY2Y1k4R1hKckphelI4dUl0UGQ3ZFNHNFNTbFYyR2FsT09WVUJuRitpUGQ2T1E2cDBhaVgvR1JIcjNqaTU2ZVNNNW1yYlUvTmQybGVKMSttV1Z2UkhOQ2ErTXFWbWQ3K3dNYkJvZk5aeGRSbzhZRk1SSVVMVFJEZk1MRFJLbnZUWUgzRk5vMCt6STZkb1RUeHpueXdTWXlqN0hEbkRDbW4yZGs4WnJwbnNpRkZHU3NDRUxPWXUraDZEUVppTkhlVDdwNWMzYnhSSW1tU2VxOUtPRmxkSlhZYk9ZSXB4TVE0QUtnYXYyWk9RWlBKZkIxOTJNek8rK25TY1B4Z1R6SVR4Nmw1N0xIY3Fzc1RPaFV3Z29JSm9ncTJDZzl3SURBUUFCInx8IlBST1ZJREVSInx8IjRtOWhqNDJrd3BwY21yc20ifHwiNjAwNzgyMjUyMDE5ODEwNTYxInx8IkNyYXNoUGxhbiBQUk9lIFNlcnZlciJ8fCJudWxsIg==')
|
62
|
+
destination.should be_true
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#servers' do
|
67
|
+
it 'returns an array of servers' do
|
68
|
+
client.servers.should be_an(Array)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe '#create_server' do
|
73
|
+
it 'creates a server' do
|
74
|
+
server = client.create_server(connection_string: 'rO0ABXQCmCI2MDA2MjQyNjI0MDI4MDE5MjEifHwiNjAwNjI0MTc0ODU5Mjg4ODMzInx8Im1vcmUtMDIifHwibWh3aGNza3I4bThocHcycyJ8fCIxMC4xMC40Ni45NDo0MjgyInx8Im51bGwifHwiMTAuMTAuNDYuOTQ6NDI4NiJ8fCIxMC4xMC40Ni45NDo0MjgzInx8Imh0dHA6Ly8xMC4xMC40Ni45NDo0MjgwInx8Ik1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBcFcxTVd0bnUyWEd0aXkzQjFWMXJlV1dXR204ak5OV3V1SHVDTGVNcHdqRGVHMUFUQm5aaTV5aEIxSTBBREhCekZYYkwrbHgvTTBMUDJuQkplek9nRVRXQ0R5ZCtncXV1K3pBdlF4K3RrdTZHcmo2cDZhaHgxYnQ2Y0tZd28zcW9jaTMxY3pZOElRWll5V0JVZUducDlEOTd3ZWxmaGgxakkwdEE3MlBUSEt0NzAvcUdDeXZaaVRqK3VSRDhIVTJsL3hDaVh2a2F6Wmc0dzBBQXhmL0VwNUlmNFJBYlNPTzZrTzNjVkFmcWxxcjdxS2dqc04ydGFhVlgvbXM0YnBmQ05ubXhHZWI3bnI1WXMrcUpuT0Q3bytTb1R5dmVJWm5SMUtkeEkwcDBIdmpLd3JSeEpIamdrS0Z6RU1lTFFhVmJlRmhrTm5RM3laVlVydkdOeDZXSHN3SURBUUFCInx8IlNUT1JBR0VfTk9ERSJ8fCJEZWZhdWx0Inx8Ii92YXIvb3B0L3Byb3NlcnZlci9iYWNrdXBBcmNoaXZlcyJ8fCJDcmFzaFBsYW5BcmNoaXZlX0RlZmF1bHQifHwibnVsbCI=', destination_id: 4)
|
75
|
+
server.should be_a(Code42::Server)
|
76
|
+
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '#destination' do
|
81
|
+
it 'returns a destination' do
|
82
|
+
client.destination(45).should be_a(Code42::Destination)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe '#product_licenses' do
|
87
|
+
it 'returns an array of product licenses' do
|
88
|
+
client.product_licenses.should be_an(Array)
|
89
|
+
client.product_licenses.first.should be_a(Code42::ProductLicense)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#add_product_license' do
|
94
|
+
it 'adds a product license' do
|
95
|
+
product_licenses = client.add_product_license('ZP5Pbz8wx1dBHKjhkkQjGDZ+tTtkvuD5e5d2TC9/uHoODR9NvyaHfbypRUHR15hbeHdf7ExfnVpmwPiIcgYxCQ==')
|
96
|
+
product_licenses.first.license_key.should == 'ZP5Pbz8wx1dBHKjhkkQjGDZ+tTtkvuD5e5d2TC9/uHoODR9NvyaHfbypRUHR15hbeHdf7ExfnVpmwPiIcgYxCQ=='
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe '#remove_product_license' do
|
101
|
+
it 'removes a product license' do
|
102
|
+
product_licenses = client.product_licenses
|
103
|
+
id = product_licenses.first.id
|
104
|
+
client.remove_product_license id
|
105
|
+
client.product_licenses.should be_empty
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe '#apply_mlk' do
|
110
|
+
it 'applies the mlk' do
|
111
|
+
response = client.apply_mlk 'BdYS3i2U+1J/d/sU+IeZ/sTP0mac3k3FyXHxL69MPps3JOUIjb6PUc2UUw5jrD01CnLsJLhnanwJUTCRyjtwn+b7BkI/5kjosUo5RETbLKlc4PToufLu6cELvTUdwi/tMdLJFtx51jtoVdnZu4CfkBbcgcXR9yafkKas8XuOSd0=', {}
|
112
|
+
expect(response).to be_a Code42::Token
|
113
|
+
expect(response.cookie_token).to eql '1ix3k2701jn5l0kixl1xa05giw'
|
114
|
+
expect(response.url_token).to eql '136jc2w1tym050fdkky855t7en'
|
115
|
+
client.connection.mlk.should eql 'BdYS3i2U+1J/d/sU+IeZ/sTP0mac3k3FyXHxL69MPps3JOUIjb6PUc2UUw5jrD01CnLsJLhnanwJUTCRyjtwn+b7BkI/5kjosUo5RETbLKlc4PToufLu6cELvTUdwi/tMdLJFtx51jtoVdnZu4CfkBbcgcXR9yafkKas8XuOSd0='
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe '#validate_token' do
|
120
|
+
it 'returns a valid response' do
|
18
121
|
token = client.get_token
|
19
122
|
validation = client.validate_token token
|
20
123
|
validation.should be_valid
|
21
124
|
end
|
22
125
|
end
|
23
126
|
|
24
|
-
describe
|
25
|
-
it
|
127
|
+
describe '#user_roles' do
|
128
|
+
it 'returns an enumerable' do
|
26
129
|
roles = client.user_roles
|
27
130
|
roles.should respond_to(:each)
|
28
131
|
end
|
29
132
|
end
|
30
133
|
|
31
|
-
describe
|
134
|
+
describe '#unassign_role' do
|
32
135
|
|
33
136
|
let(:user_id) { 4 }
|
34
137
|
let(:role_name) { 'PROe User' }
|
35
138
|
|
36
|
-
it
|
139
|
+
it 'removes the role' do
|
37
140
|
current_roles = client.user_roles user_id
|
38
141
|
current_role_names = current_roles.map(&:name)
|
39
142
|
|
@@ -47,50 +150,50 @@ describe Code42::Client, :vcr do
|
|
47
150
|
end
|
48
151
|
end
|
49
152
|
|
50
|
-
describe
|
51
|
-
it
|
153
|
+
describe '#permissions' do
|
154
|
+
it 'returns an enumerable of permissions' do
|
52
155
|
permissions = client.permissions
|
53
156
|
permissions.should respond_to(:each)
|
54
157
|
expect(permissions.first).to be_a Code42::Permission
|
55
158
|
end
|
56
159
|
end
|
57
160
|
|
58
|
-
describe
|
59
|
-
it
|
161
|
+
describe '#roles' do
|
162
|
+
it 'returns an enumerable' do
|
60
163
|
roles = client.roles
|
61
164
|
roles.should respond_to(:each)
|
62
165
|
end
|
63
166
|
end
|
64
167
|
|
65
|
-
describe
|
168
|
+
describe '#create_role' do
|
66
169
|
it 'creates a role' do
|
67
170
|
role = client.create_role('My Role', ['admin.user.read'])
|
68
171
|
role.name.should == 'My Role'
|
69
172
|
end
|
70
173
|
end
|
71
174
|
|
72
|
-
describe
|
73
|
-
it
|
175
|
+
describe '#delete_role' do
|
176
|
+
it 'deletes a role' do
|
74
177
|
client.delete_role(62)
|
75
178
|
end
|
76
179
|
end
|
77
180
|
|
78
|
-
describe
|
79
|
-
it
|
181
|
+
describe '#update_role' do
|
182
|
+
it 'updates a role' do
|
80
183
|
role = client.update_role(63, name: 'New name')
|
81
184
|
role.name.should == 'New name'
|
82
185
|
end
|
83
186
|
end
|
84
187
|
|
85
|
-
describe
|
86
|
-
it
|
188
|
+
describe '#get_token' do
|
189
|
+
it 'returns valid tokens' do
|
87
190
|
auth = client.get_token
|
88
191
|
auth.cookie_token.should have(26).characters
|
89
192
|
auth.url_token.should have(26).characters
|
90
193
|
end
|
91
194
|
|
92
|
-
context
|
93
|
-
it
|
195
|
+
context 'when providing invalid credentials' do
|
196
|
+
it 'should raise an exception' do
|
94
197
|
client.settings.password = 'badpassword'
|
95
198
|
expect{client.get_token}.to raise_error Code42::Error::AuthenticationError
|
96
199
|
end
|
@@ -100,25 +203,25 @@ describe Code42::Client, :vcr do
|
|
100
203
|
describe '#deactivate_org' do
|
101
204
|
it 'puts to the correct route' do
|
102
205
|
expect(client).to receive(:deactivate_org).with(88).and_call_original
|
103
|
-
expect(client).to receive(:put).with(
|
206
|
+
expect(client).to receive(:put).with('OrgDeactivation/88', {}).and_call_original
|
104
207
|
client.deactivate_org(88)
|
105
208
|
end
|
106
209
|
end
|
107
210
|
|
108
|
-
describe
|
211
|
+
describe '#create_org' do
|
109
212
|
let(:org_attributes) do
|
110
213
|
{
|
111
214
|
:orgName => 'IBM'
|
112
215
|
}
|
113
216
|
end
|
114
217
|
|
115
|
-
it
|
218
|
+
it 'returns created org' do
|
116
219
|
org = client.create_org(org_attributes)
|
117
220
|
org.name.should eq 'IBM'
|
118
221
|
end
|
119
222
|
end
|
120
223
|
|
121
|
-
describe
|
224
|
+
describe '#create_user' do
|
122
225
|
let(:user_attributes) do
|
123
226
|
{
|
124
227
|
:orgId => 2,
|
@@ -126,21 +229,22 @@ describe Code42::Client, :vcr do
|
|
126
229
|
}
|
127
230
|
end
|
128
231
|
|
129
|
-
it
|
232
|
+
it 'returns created user' do
|
130
233
|
user = client.create_user(user_attributes)
|
131
234
|
user.username.should eq 'testuser'
|
132
235
|
user.id.should eq 38
|
236
|
+
user.org_id.should eq 2
|
133
237
|
end
|
134
238
|
|
135
|
-
context
|
136
|
-
it
|
239
|
+
context 'when sending an invalid email' do
|
240
|
+
it 'raises an exception' do
|
137
241
|
user_attributes[:email] = 'testuser'
|
138
242
|
expect { client.create_user(user_attributes) }.to raise_error Code42::Error::EmailInvalid
|
139
243
|
end
|
140
244
|
end
|
141
245
|
end
|
142
246
|
|
143
|
-
describe
|
247
|
+
describe '#update_user' do
|
144
248
|
let(:user_attributes) do
|
145
249
|
{
|
146
250
|
:orgId => 2,
|
@@ -154,54 +258,54 @@ describe Code42::Client, :vcr do
|
|
154
258
|
@user = client.create_user(user_attributes)
|
155
259
|
end
|
156
260
|
|
157
|
-
it
|
261
|
+
it 'returns the updated user' do
|
158
262
|
updated_user = client.update_user(user.id, last_name: 'Jenkins')
|
159
263
|
expect(updated_user.last_name).to eq 'Jenkins'
|
160
264
|
end
|
161
265
|
|
162
|
-
context
|
163
|
-
it
|
266
|
+
context 'when sending an invalid email' do
|
267
|
+
it 'raises an exception' do
|
164
268
|
expect{ client.update_user(user.id, email: 'Jenkins') }.to raise_error(Code42::Error::EmailInvalid)
|
165
269
|
end
|
166
270
|
end
|
167
271
|
end
|
168
272
|
|
169
|
-
describe
|
273
|
+
describe '#user' do
|
170
274
|
let(:user_id) { 2 }
|
171
275
|
|
172
|
-
context
|
173
|
-
it
|
276
|
+
context 'when ID is not passed' do
|
277
|
+
it 'returns my user' do
|
174
278
|
user = client.user
|
175
279
|
user.id.should == 1
|
176
280
|
end
|
177
281
|
end
|
178
282
|
|
179
|
-
context
|
180
|
-
it
|
283
|
+
context 'when ID is passed in' do
|
284
|
+
it 'returns a specific user' do
|
181
285
|
user = client.user(user_id)
|
182
286
|
user.id.should == user_id
|
183
287
|
end
|
184
288
|
|
185
|
-
it
|
289
|
+
it 'passes params to code42 server' do
|
186
290
|
client.should_receive(:object_from_response).with(Code42::User, :get, "user/#{user_id}", :incAll => true)
|
187
|
-
|
291
|
+
client.user(user_id, :incAll => true)
|
188
292
|
end
|
189
293
|
end
|
190
294
|
|
191
|
-
context
|
192
|
-
it
|
295
|
+
context 'when blocked' do
|
296
|
+
it 'returns the blocked status' do
|
193
297
|
client.block_user(user_id)
|
194
298
|
user = client.user(user_id)
|
195
299
|
user.blocked.should be_true
|
196
300
|
end
|
197
301
|
end
|
198
302
|
|
199
|
-
context
|
303
|
+
context 'when unblocked' do
|
200
304
|
before(:each) do
|
201
305
|
client.block_user(user_id)
|
202
306
|
end
|
203
307
|
|
204
|
-
it
|
308
|
+
it 'returns the blocked status' do
|
205
309
|
client.unblock_user(user_id)
|
206
310
|
user = client.user(user_id)
|
207
311
|
user.blocked.should be_false
|
@@ -209,41 +313,41 @@ describe Code42::Client, :vcr do
|
|
209
313
|
end
|
210
314
|
end
|
211
315
|
|
212
|
-
describe
|
213
|
-
context
|
214
|
-
it
|
316
|
+
describe '#org' do
|
317
|
+
context 'when ID is not passed' do
|
318
|
+
it 'returns my org' do
|
215
319
|
org = client.org
|
216
320
|
org.id.should == 1
|
217
321
|
end
|
218
322
|
end
|
219
323
|
|
220
|
-
context
|
221
|
-
it
|
324
|
+
context 'when ID is passed in' do
|
325
|
+
it 'returns a specific org' do
|
222
326
|
org = client.org(1)
|
223
327
|
org.id.should == 1
|
224
328
|
end
|
225
329
|
|
226
|
-
it
|
227
|
-
client.should_receive(:object_from_response).with(Code42::Org, :get,
|
228
|
-
|
330
|
+
it 'passes params to code42 server' do
|
331
|
+
client.should_receive(:object_from_response).with(Code42::Org, :get, 'org/2', :incAll => true)
|
332
|
+
client.org(2, :incAll => true)
|
229
333
|
end
|
230
334
|
end
|
231
335
|
end
|
232
336
|
|
233
|
-
describe
|
234
|
-
it
|
337
|
+
describe '#find_org_by_name' do
|
338
|
+
it 'returns the org with the specified name' do
|
235
339
|
org = client.find_org_by_name 'PROServer Demo'
|
236
340
|
org.name.should == 'PROServer Demo'
|
237
341
|
end
|
238
342
|
end
|
239
343
|
|
240
|
-
describe
|
241
|
-
it
|
344
|
+
describe '#ping' do
|
345
|
+
it 'returns a ping' do
|
242
346
|
client.ping.should be_true
|
243
347
|
end
|
244
348
|
end
|
245
349
|
|
246
|
-
describe
|
350
|
+
describe '#reset_password' do
|
247
351
|
shared_examples 'reset_password' do
|
248
352
|
it 'is successful' do
|
249
353
|
expect(client.reset_password(*arguments)).to be_true
|