datacentred 0.1.0pre

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 (66) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/Gemfile.lock +35 -0
  4. data/README.md +2 -0
  5. data/Rakefile +10 -0
  6. data/circle.yml +5 -0
  7. data/datacentred.gemspec +23 -0
  8. data/lib/datacentred/error.rb +28 -0
  9. data/lib/datacentred/model/project.rb +44 -0
  10. data/lib/datacentred/model/role.rb +44 -0
  11. data/lib/datacentred/model/usage.rb +15 -0
  12. data/lib/datacentred/model/user.rb +32 -0
  13. data/lib/datacentred/model/version.rb +14 -0
  14. data/lib/datacentred/request/base.rb +46 -0
  15. data/lib/datacentred/request/projects.rb +38 -0
  16. data/lib/datacentred/request/roles.rb +38 -0
  17. data/lib/datacentred/request/usage.rb +10 -0
  18. data/lib/datacentred/request/users.rb +26 -0
  19. data/lib/datacentred/request/versions.rb +10 -0
  20. data/lib/datacentred/response.rb +12 -0
  21. data/lib/datacentred.rb +40 -0
  22. data/test/integration/projects_test.rb +117 -0
  23. data/test/integration/roles_test.rb +128 -0
  24. data/test/integration/usage_test.rb +24 -0
  25. data/test/integration/users_test.rb +128 -0
  26. data/test/integration/versions_test.rb +15 -0
  27. data/test/test_helper.rb +14 -0
  28. data/test/vcr_cassettes/add_user_to_project.yml +140 -0
  29. data/test/vcr_cassettes/add_user_to_role.yml +187 -0
  30. data/test/vcr_cassettes/create_project.yml +58 -0
  31. data/test/vcr_cassettes/create_role_with_invalid_permissions.yml +51 -0
  32. data/test/vcr_cassettes/create_role_with_permissions.yml +51 -0
  33. data/test/vcr_cassettes/create_role_without_permissions.yml +50 -0
  34. data/test/vcr_cassettes/create_user.yml +50 -0
  35. data/test/vcr_cassettes/delete_project.yml +103 -0
  36. data/test/vcr_cassettes/delete_role.yml +183 -0
  37. data/test/vcr_cassettes/delete_user.yml +136 -0
  38. data/test/vcr_cassettes/find_role.yml +97 -0
  39. data/test/vcr_cassettes/list_project_users.yml +58 -0
  40. data/test/vcr_cassettes/list_projects.yml +58 -0
  41. data/test/vcr_cassettes/list_role_users.yml +97 -0
  42. data/test/vcr_cassettes/list_roles.yml +50 -0
  43. data/test/vcr_cassettes/list_users.yml +58 -0
  44. data/test/vcr_cassettes/project_create_failed_validation.yml +56 -0
  45. data/test/vcr_cassettes/project_not_found.yml +54 -0
  46. data/test/vcr_cassettes/project_update_failed_validation.yml +55 -0
  47. data/test/vcr_cassettes/project_update_not_found.yml +54 -0
  48. data/test/vcr_cassettes/remove_user_from_project.yml +138 -0
  49. data/test/vcr_cassettes/remove_user_from_role.yml +228 -0
  50. data/test/vcr_cassettes/remove_user_from_role_not_found.yml +95 -0
  51. data/test/vcr_cassettes/show_project.yml +58 -0
  52. data/test/vcr_cassettes/show_usage.yml +51 -0
  53. data/test/vcr_cassettes/show_user.yml +97 -0
  54. data/test/vcr_cassettes/show_version.yml +50 -0
  55. data/test/vcr_cassettes/update_project.yml +58 -0
  56. data/test/vcr_cassettes/update_role.yml +98 -0
  57. data/test/vcr_cassettes/update_role_with_invalid_permissions.yml +98 -0
  58. data/test/vcr_cassettes/update_user.yml +97 -0
  59. data/test/vcr_cassettes/usage_not_found.yml +54 -0
  60. data/test/vcr_cassettes/user_create_failed_validation.yml +54 -0
  61. data/test/vcr_cassettes/user_delete_failed_validation.yml +54 -0
  62. data/test/vcr_cassettes/user_delete_not_found.yml +54 -0
  63. data/test/vcr_cassettes/user_show_not_found.yml +54 -0
  64. data/test/vcr_cassettes/user_update_failed_validation.yml +96 -0
  65. data/test/vcr_cassettes/user_update_not_found.yml +48 -0
  66. metadata +165 -0
@@ -0,0 +1,128 @@
1
+ require_relative '../test_helper'
2
+
3
+ module Datacentred
4
+ class RolesIntegrationTest < Minitest::Test
5
+ def setup
6
+ @create_params1 = {"role" => {"name" => "New Role"}}
7
+ @create_params2 = {"role" => {"name" => "Historical Figures",
8
+ "permissions" => ["usage.read","tickets.modify"]}}
9
+ @new_permissions = {"role" => {"permissions" => ['usage.read',
10
+ 'roles.modify', 'roles.read']}}
11
+ @invalid_permissions = {"role" => {"name" => "Genghis Khan",
12
+ "permissions" => ["fighting"]}}
13
+ @update_params = {"role" => {"name" => "Administrator 2"}}
14
+ @user_id = "06eacbafda355a927f50f304db3af132"
15
+ end
16
+
17
+ def test_list_roles
18
+ VCR.use_cassette('list_roles') do
19
+ @roles = Datacentred::Role.all
20
+ assert_equal 2, @roles.count
21
+ @role = @roles.first
22
+ assert @role.id
23
+ assert @role.name
24
+ assert @role.permissions
25
+ end
26
+ end
27
+
28
+ def test_find_role
29
+ VCR.use_cassette('find_role') do
30
+ @new_role = Datacentred::Role.create(@create_params1)
31
+ @role = Datacentred::Role.find(@new_role.id)
32
+ assert_equal @role.name, "New Role"
33
+ end
34
+ end
35
+
36
+ def test_create_role_without_permissions
37
+ VCR.use_cassette('create_role_without_permissions') do
38
+ @new_role = Datacentred::Role.create(@create_params1)
39
+ assert_equal @new_role.name, "New Role"
40
+ end
41
+ end
42
+
43
+ def test_create_role_with_permissions
44
+ VCR.use_cassette('create_role_with_permissions') do
45
+ @new_role = Datacentred::Role.create(@create_params2)
46
+ assert_equal @new_role.name, "Historical Figures"
47
+ end
48
+ end
49
+
50
+ def test_create_role_with_invalid_permissions
51
+ VCR.use_cassette('create_role_with_invalid_permissions') do
52
+ assert_raises(Datacentred::UnprocessableEntity) do
53
+ @role = Datacentred::Role.create(@invalid_permissions)
54
+ end
55
+ end
56
+ end
57
+
58
+ def test_update_role
59
+ VCR.use_cassette('update_role') do
60
+ @role = Datacentred::Role.create(@create_params1)
61
+ assert_equal @role.name, 'New Role'
62
+ @updated_role = Datacentred::Role.update(@role.id, @update_params)
63
+ assert_equal @updated_role.name, 'Administrator 2'
64
+ end
65
+ end
66
+
67
+ def test_update_role_with_invalid_permissions
68
+ VCR.use_cassette('update_role_with_invalid_permissions') do
69
+ @role = Datacentred::Role.create(@create_params1)
70
+ assert_raises(Datacentred::UnprocessableEntity) do
71
+ Datacentred::Role.update(@role.id, @invalid_permissions)
72
+ end
73
+ end
74
+ end
75
+
76
+ def test_delete_role
77
+ VCR.use_cassette('delete_role') do
78
+ @role = Datacentred::Role.create(@create_params1)
79
+ assert Datacentred::Role.find(@role.id)
80
+ Datacentred::Role.delete(@role.id)
81
+ assert_raises(Datacentred::NotFoundError) do
82
+ @role = Datacentred::Role.find(@role.id)
83
+ end
84
+ end
85
+ end
86
+
87
+ def test_list_role_users
88
+ VCR.use_cassette('list_role_users') do
89
+ @role = Datacentred::Role.create(@create_params1)
90
+ @user_list = Datacentred::Role.users(@role.id)
91
+ assert_equal @user_list.count, 0
92
+ end
93
+ end
94
+
95
+ def test_add_user_to_role
96
+ VCR.use_cassette('add_user_to_role') do
97
+ @role = Datacentred::Role.create(@create_params1)
98
+ @user_list = Datacentred::Role.users(@role.id)
99
+ assert_equal @user_list.count, 0
100
+ Datacentred::Role.add_user(@role.id, @user_id)
101
+ @new_users_list = Datacentred::Role.users(@role.id)
102
+ assert_equal @new_users_list.count, 1
103
+ assert_equal @new_users_list.first.id, @user_id
104
+ end
105
+ end
106
+
107
+ def test_remove_user_from_role
108
+ VCR.use_cassette('remove_user_from_role') do
109
+ @role = Datacentred::Role.create(@create_params1)
110
+ Datacentred::Role.add_user(@role.id, @user_id)
111
+ @user_list = Datacentred::Role.users(@role.id)
112
+ assert_equal @user_list.count, 1
113
+ Datacentred::Role.remove_user(@role.id, @user_id)
114
+ @new_user_list = Datacentred::Role.users(@role.id)
115
+ assert_equal @new_user_list.count, 0
116
+ end
117
+ end
118
+
119
+ def test_remove_user_from_role_not_found
120
+ VCR.use_cassette('remove_user_from_role_not_found') do
121
+ @role = Datacentred::Role.create(@create_params1)
122
+ assert_raises(Datacentred::NotFoundError) do
123
+ Datacentred::Role.remove_user(@role.id, "unknown")
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,24 @@
1
+ require_relative '../test_helper'
2
+
3
+ module Datacentred
4
+ class UsageIntegrationTest < Minitest::Test
5
+
6
+ def test_show_usage
7
+ VCR.use_cassette('show_usage') do
8
+ @usage = Datacentred::Usage.show(2017, 07)
9
+ assert @usage.is_a? Array
10
+ assert @usage.first.name.is_a? String
11
+ assert @usage.first.id.is_a? String
12
+ assert @usage.first.usage.is_a? Hash
13
+ end
14
+ end
15
+
16
+ def test_raises_not_found_if_no_data
17
+ VCR.use_cassette('usage_not_found') do
18
+ assert_raises(Datacentred::NotFoundError) do
19
+ @usage = Datacentred::Usage.show(2010, 07)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,128 @@
1
+ require_relative '../test_helper'
2
+
3
+ module Datacentred
4
+ class UsersIntegrationTest < Minitest::Test
5
+
6
+ def setup
7
+
8
+ @create_params_without_pass = {"user" => {"email" => "death@afterlife2.com"}}
9
+ @create_params = {"user" => {"email" => "death@afterlife.com",
10
+ "password" => "melvin11", "first_name" => "Foo","last_name" => "Bar"}}
11
+ @create_params2 = {"user" => {"email" => "death2@afterlife2.com",
12
+ "password" => "melvin22"}}
13
+ @user_id = "bda96ae2c89347d5a059d663c153ec2a"
14
+ @update_params = {"user" => {"first_name" => "Foo2"}}
15
+ @short_password = {"user" => {"password" => "tiny"}}
16
+ end
17
+
18
+ def test_user_object_properties
19
+ VCR.use_cassette('list_users') do
20
+ @users = Datacentred::User.all
21
+ user = @users.first
22
+ assert user.first_name.is_a? String
23
+ assert user.last_name.is_a? String
24
+ assert user.id.is_a? String
25
+ assert user.created_at.is_a? Time
26
+ assert user.updated_at.is_a? Time
27
+ refute user.links
28
+ end
29
+ end
30
+
31
+ def test_list_users
32
+ VCR.use_cassette('list_users') do
33
+ @users = Datacentred::User.all
34
+ assert_equal 2, @users.count
35
+ end
36
+ end
37
+
38
+ def test_show_user
39
+ VCR.use_cassette('show_user') do
40
+ @new_user = Datacentred::User.create(@create_params)
41
+ @user = Datacentred::User.find(@new_user.id)
42
+ assert @user.id
43
+ assert @user.email
44
+ assert @user.first_name
45
+ assert @user.last_name
46
+ assert @user.created_at
47
+ assert @user.updated_at
48
+ end
49
+ end
50
+
51
+ def test_raises_not_found_if_cant_find_user
52
+ VCR.use_cassette('user_show_not_found') do
53
+ assert_raises(Datacentred::NotFoundError) do
54
+ @user = Datacentred::User.find("unknown")
55
+ end
56
+ end
57
+ end
58
+
59
+ def test_create_user
60
+ VCR.use_cassette('create_user') do
61
+ @user = Datacentred::User.create(@create_params)
62
+ assert @user.id
63
+ assert_equal @user.email, 'death@afterlife.com'
64
+ assert_equal @user.first_name, "Foo"
65
+ assert_equal @user.last_name, "Bar"
66
+ end
67
+ end
68
+
69
+ def test_raises_unprocessable_entity_if_failed_validation_for_create
70
+ VCR.use_cassette('user_create_failed_validation') do
71
+ assert_raises(Datacentred::UnprocessableEntity) do
72
+ @user = Datacentred::User.create(@create_params_without_pass)
73
+ end
74
+ end
75
+ end
76
+
77
+ def test_update_user
78
+ VCR.use_cassette('update_user') do
79
+ @user = Datacentred::User.create(@create_params)
80
+ @user = Datacentred::User.update(@user.id, @update_params)
81
+ assert_equal @user.first_name, 'Foo2'
82
+ end
83
+ end
84
+
85
+ def test_raises_unprocessable_entity_if_failed_validation_for_update
86
+ VCR.use_cassette('user_update_failed_validation') do
87
+ @user = Datacentred::User.create(@create_params)
88
+ assert_raises(Datacentred::UnprocessableEntity) do
89
+ @user = Datacentred::User.update(@user.id, @short_password)
90
+ end
91
+ end
92
+ end
93
+
94
+ def test_raises_not_found_if_user_doesnt_exist
95
+ VCR.use_cassette('user_update_not_found') do
96
+ assert_raises(Datacentred::NotFoundError) do
97
+ @user = Datacentred::User.update("unknown", @update_params)
98
+ end
99
+ end
100
+ end
101
+
102
+ def test_delete_user
103
+ VCR.use_cassette('delete_user') do
104
+ @user = Datacentred::User.create(@create_params)
105
+ Datacentred::User.delete(@user.id)
106
+ assert_raises(Datacentred::NotFoundError) do
107
+ @user = Datacentred::User.find(@user.id)
108
+ end
109
+ end
110
+ end
111
+
112
+ def test_raises_unprocessable_entity_if_failed_validation_for_delete
113
+ VCR.use_cassette('user_delete_failed_validation') do
114
+ assert_raises(Datacentred::UnprocessableEntity) do
115
+ @user = Datacentred::User.delete("my_user_id")
116
+ end
117
+ end
118
+ end
119
+
120
+ def test_user_cant_be_deleted_if_not_found
121
+ VCR.use_cassette('user_delete_not_found') do
122
+ assert_raises(Datacentred::NotFoundError) do
123
+ @user = Datacentred::User.delete("unknown")
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,15 @@
1
+ require_relative '../test_helper'
2
+
3
+ module Datacentred
4
+ class VersionsIntegrationTest < Minitest::Test
5
+
6
+ def test_show_version
7
+ VCR.use_cassette('show_version') do
8
+ @versions = Datacentred::Version.show
9
+ assert @versions.is_a? Array
10
+ assert_equal @versions.first.id, "1"
11
+ assert_equal @versions.first.status, "CURRENT"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../lib/datacentred'
2
+ require 'json'
3
+ require 'vcr'
4
+
5
+ VCR.configure do |c|
6
+ c.cassette_library_dir = 'test/vcr_cassettes'
7
+ c.hook_into :webmock
8
+ end
9
+
10
+ TEST_ENV = true
11
+
12
+ require 'rubygems'
13
+ gem "minitest"
14
+ require 'minitest/autorun'
@@ -0,0 +1,140 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://my.datacentred.io/api/projects/project_id1/users
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/vnd.datacentred.api+json; version=1
12
+ Authorization:
13
+ - Token token=access_key:secret_key
14
+ Content-Type:
15
+ - application/json
16
+ User-Agent:
17
+ - Faraday v0.9.2
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ X-Frame-Options:
26
+ - SAMEORIGIN
27
+ X-Xss-Protection:
28
+ - 1; mode=block
29
+ X-Content-Type-Options:
30
+ - nosniff
31
+ X-Api-Version:
32
+ - '1'
33
+ Content-Type:
34
+ - application/vnd.datacentred.api+json; charset=utf-8
35
+ Etag:
36
+ - W/"a49ddef61fd02a4859e54c61f0d506bb"
37
+ Cache-Control:
38
+ - max-age=0, private, must-revalidate
39
+ X-Request-Id:
40
+ - 655310e5-7e32-4111-bc58-0969fba85ef8
41
+ X-Runtime:
42
+ - '0.101663'
43
+ Transfer-Encoding:
44
+ - chunked
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"users":[{"id":"06eacbafda355a927f50f304db3af132","email":"foo@bar.com","first_name":"Foo","last_name":"Bar","created_at":"2017-07-20T13:06:20Z","updated_at":"2017-07-20T13:06:20Z","links":[{"href":"https://my.datacentred.io/api/users/06eacbafda355a927f50f304db3af132","rel":"self"},{"href":"https://my.datacentred.io/api/schemas/user","rel":"schema"}]}]}'
48
+ http_version:
49
+ recorded_at: Tue, 05 Sep 2017 15:17:43 GMT
50
+ - request:
51
+ method: put
52
+ uri: https://my.datacentred.io/api/projects/project_id1/users/user_id
53
+ body:
54
+ encoding: UTF-8
55
+ string: ''
56
+ headers:
57
+ Accept:
58
+ - application/vnd.datacentred.api+json; version=1
59
+ Authorization:
60
+ - Token token=e9d2d4cd37adf1634e2a65b9e18a8fcb:821fac118e7675f28fa42ab79ace57de
61
+ Content-Type:
62
+ - application/json
63
+ User-Agent:
64
+ - Faraday v0.9.2
65
+ Content-Length:
66
+ - '0'
67
+ Accept-Encoding:
68
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
69
+ response:
70
+ status:
71
+ code: 204
72
+ message: No Content
73
+ headers:
74
+ X-Frame-Options:
75
+ - SAMEORIGIN
76
+ X-Xss-Protection:
77
+ - 1; mode=block
78
+ X-Content-Type-Options:
79
+ - nosniff
80
+ X-Api-Version:
81
+ - '1'
82
+ Cache-Control:
83
+ - no-cache
84
+ X-Request-Id:
85
+ - 04084f5b-0ede-46d5-84a0-a546e1db7507
86
+ X-Runtime:
87
+ - '0.143236'
88
+ body:
89
+ encoding: UTF-8
90
+ string: ''
91
+ http_version:
92
+ recorded_at: Tue, 05 Sep 2017 15:17:43 GMT
93
+ - request:
94
+ method: get
95
+ uri: https://my.datacentred.io/api/projects/project_id1/users
96
+ body:
97
+ encoding: US-ASCII
98
+ string: ''
99
+ headers:
100
+ Accept:
101
+ - application/vnd.datacentred.api+json; version=1
102
+ Authorization:
103
+ - Token token=e9d2d4cd37adf1634e2a65b9e18a8fcb:821fac118e7675f28fa42ab79ace57de
104
+ Content-Type:
105
+ - application/json
106
+ User-Agent:
107
+ - Faraday v0.9.2
108
+ Accept-Encoding:
109
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
110
+ response:
111
+ status:
112
+ code: 200
113
+ message: OK
114
+ headers:
115
+ X-Frame-Options:
116
+ - SAMEORIGIN
117
+ X-Xss-Protection:
118
+ - 1; mode=block
119
+ X-Content-Type-Options:
120
+ - nosniff
121
+ X-Api-Version:
122
+ - '1'
123
+ Content-Type:
124
+ - application/vnd.datacentred.api+json; charset=utf-8
125
+ Etag:
126
+ - W/"89f589a53690f0175b3b8ee53ccdc4b0"
127
+ Cache-Control:
128
+ - max-age=0, private, must-revalidate
129
+ X-Request-Id:
130
+ - 8e3f4a76-6122-4512-9d15-25fb027180f4
131
+ X-Runtime:
132
+ - '0.100477'
133
+ Transfer-Encoding:
134
+ - chunked
135
+ body:
136
+ encoding: UTF-8
137
+ string: '{"users":[{"id":"user_id","email":"foo1@bar.com","first_name":"Foo1","last_name":"Bar","created_at":"2017-07-20T13:06:20Z","updated_at":"2017-07-20T13:06:20Z","links":[{"href":"https://my.datacentred.io/api/users/user_id","rel":"self"},{"href":"https://my.datacentred.io/api/schemas/user","rel":"schema"}]},{"id":"06eacbafda355a927f50f304db3af132","email":"foo@bar.com","first_name":"Foo","last_name":"Bar","created_at":"2017-07-20T13:06:20Z","updated_at":"2017-07-20T13:06:20Z","links":[{"href":"https://my.datacentred.io/api/users/06eacbafda355a927f50f304db3af132","rel":"self"},{"href":"https://my.datacentred.io/api/schemas/user","rel":"schema"}]}]}'
138
+ http_version:
139
+ recorded_at: Tue, 05 Sep 2017 15:17:43 GMT
140
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,187 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://my.datacentred.io/api/roles
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"role":{"name":"New Role"}}'
9
+ headers:
10
+ Accept:
11
+ - application/vnd.datacentred.api+json; version=1
12
+ Authorization:
13
+ - Token token=access_key:secret_key
14
+ Content-Type:
15
+ - application/json
16
+ User-Agent:
17
+ - Faraday v0.9.2
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ response:
21
+ status:
22
+ code: 201
23
+ message: Created
24
+ headers:
25
+ X-Frame-Options:
26
+ - SAMEORIGIN
27
+ X-Xss-Protection:
28
+ - 1; mode=block
29
+ X-Content-Type-Options:
30
+ - nosniff
31
+ X-Api-Version:
32
+ - '1'
33
+ Content-Type:
34
+ - application/vnd.datacentred.api+json; charset=utf-8
35
+ Etag:
36
+ - W/"3b9b0331bd0342e07befc2763cc250a7"
37
+ Cache-Control:
38
+ - max-age=0, private, must-revalidate
39
+ X-Request-Id:
40
+ - 9b223a95-6742-48ea-90c9-6886eb7c4567
41
+ X-Runtime:
42
+ - '0.143252'
43
+ Transfer-Encoding:
44
+ - chunked
45
+ body:
46
+ encoding: UTF-8
47
+ string: '{"role":{"id":"46b76828-2e99-41fa-b935-668b14d2c850","name":"New Role","admin":false,"permissions":[],"created_at":"2017-09-06T09:25:46Z","updated_at":"2017-09-06T09:25:46Z","links":[{"href":"https://my.datacentred.io/api/roles/46b76828-2e99-41fa-b935-668b14d2c850","rel":"self"},{"href":"https://my.datacentred.io/api/schemas/role","rel":"schema"}]}}'
48
+ http_version:
49
+ recorded_at: Wed, 06 Sep 2017 09:25:46 GMT
50
+ - request:
51
+ method: get
52
+ uri: https://my.datacentred.io/api/roles/46b76828-2e99-41fa-b935-668b14d2c850/users
53
+ body:
54
+ encoding: US-ASCII
55
+ string: ''
56
+ headers:
57
+ Accept:
58
+ - application/vnd.datacentred.api+json; version=1
59
+ Authorization:
60
+ - Token token=e9d2d4cd37adf1634e2a65b9e18a8fcb:821fac118e7675f28fa42ab79ace57de
61
+ Content-Type:
62
+ - application/json
63
+ User-Agent:
64
+ - Faraday v0.9.2
65
+ Accept-Encoding:
66
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
67
+ response:
68
+ status:
69
+ code: 200
70
+ message: OK
71
+ headers:
72
+ X-Frame-Options:
73
+ - SAMEORIGIN
74
+ X-Xss-Protection:
75
+ - 1; mode=block
76
+ X-Content-Type-Options:
77
+ - nosniff
78
+ X-Api-Version:
79
+ - '1'
80
+ Content-Type:
81
+ - application/vnd.datacentred.api+json; charset=utf-8
82
+ Etag:
83
+ - W/"adac7b84dc3b7394d8385aa0c65fe27a"
84
+ Cache-Control:
85
+ - max-age=0, private, must-revalidate
86
+ X-Request-Id:
87
+ - 62466fe5-3c54-4562-ab14-c70d4cd5208e
88
+ X-Runtime:
89
+ - '0.105758'
90
+ Transfer-Encoding:
91
+ - chunked
92
+ body:
93
+ encoding: UTF-8
94
+ string: '{"users":[]}'
95
+ http_version:
96
+ recorded_at: Wed, 06 Sep 2017 09:25:46 GMT
97
+ - request:
98
+ method: put
99
+ uri: https://my.datacentred.io/api/roles/46b76828-2e99-41fa-b935-668b14d2c850/users/06eacbafda355a927f50f304db3af132
100
+ body:
101
+ encoding: UTF-8
102
+ string: ''
103
+ headers:
104
+ Accept:
105
+ - application/vnd.datacentred.api+json; version=1
106
+ Authorization:
107
+ - Token token=e9d2d4cd37adf1634e2a65b9e18a8fcb:821fac118e7675f28fa42ab79ace57de
108
+ Content-Type:
109
+ - application/json
110
+ User-Agent:
111
+ - Faraday v0.9.2
112
+ Content-Length:
113
+ - '0'
114
+ Accept-Encoding:
115
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
116
+ response:
117
+ status:
118
+ code: 204
119
+ message: No Content
120
+ headers:
121
+ X-Frame-Options:
122
+ - SAMEORIGIN
123
+ X-Xss-Protection:
124
+ - 1; mode=block
125
+ X-Content-Type-Options:
126
+ - nosniff
127
+ X-Api-Version:
128
+ - '1'
129
+ Cache-Control:
130
+ - no-cache
131
+ X-Request-Id:
132
+ - 98907f33-6b49-4c4a-9605-cfb1f1dab1c1
133
+ X-Runtime:
134
+ - '0.112941'
135
+ body:
136
+ encoding: UTF-8
137
+ string: ''
138
+ http_version:
139
+ recorded_at: Wed, 06 Sep 2017 09:25:47 GMT
140
+ - request:
141
+ method: get
142
+ uri: https://my.datacentred.io/api/roles/46b76828-2e99-41fa-b935-668b14d2c850/users
143
+ body:
144
+ encoding: US-ASCII
145
+ string: ''
146
+ headers:
147
+ Accept:
148
+ - application/vnd.datacentred.api+json; version=1
149
+ Authorization:
150
+ - Token token=e9d2d4cd37adf1634e2a65b9e18a8fcb:821fac118e7675f28fa42ab79ace57de
151
+ Content-Type:
152
+ - application/json
153
+ User-Agent:
154
+ - Faraday v0.9.2
155
+ Accept-Encoding:
156
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
157
+ response:
158
+ status:
159
+ code: 200
160
+ message: OK
161
+ headers:
162
+ X-Frame-Options:
163
+ - SAMEORIGIN
164
+ X-Xss-Protection:
165
+ - 1; mode=block
166
+ X-Content-Type-Options:
167
+ - nosniff
168
+ X-Api-Version:
169
+ - '1'
170
+ Content-Type:
171
+ - application/vnd.datacentred.api+json; charset=utf-8
172
+ Etag:
173
+ - W/"a49ddef61fd02a4859e54c61f0d506bb"
174
+ Cache-Control:
175
+ - max-age=0, private, must-revalidate
176
+ X-Request-Id:
177
+ - d0c48633-f6ee-45c6-9501-f8e78ef89e4f
178
+ X-Runtime:
179
+ - '0.097074'
180
+ Transfer-Encoding:
181
+ - chunked
182
+ body:
183
+ encoding: UTF-8
184
+ string: '{"users":[{"id":"06eacbafda355a927f50f304db3af132","email":"eugenia.grieff@datacentred.co.uk","first_name":"Eugenia","last_name":"Grieff","created_at":"2017-07-20T13:06:20Z","updated_at":"2017-07-20T13:06:20Z","links":[{"href":"https://my.datacentred.io/api/users/06eacbafda355a927f50f304db3af132","rel":"self"},{"href":"https://my.datacentred.io/api/schemas/user","rel":"schema"}]}]}'
185
+ http_version:
186
+ recorded_at: Wed, 06 Sep 2017 09:25:47 GMT
187
+ recorded_with: VCR 2.8.0
@@ -0,0 +1,58 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://my.datacentred.io/api/projects
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"project":{"name":"test_new_project"}}'
9
+ headers:
10
+ Accept:
11
+ - application/vnd.datacentred.api+json; version=1
12
+ Authorization:
13
+ - Token token=access_key:secret_key
14
+ Content-Type:
15
+ - application/json
16
+ User-Agent:
17
+ - Faraday v0.9.2
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ response:
21
+ status:
22
+ code: 201
23
+ message: Created
24
+ headers:
25
+ Server:
26
+ - nginx/1.10.3
27
+ Date:
28
+ - Tue, 29 Aug 2017 15:30:20 GMT
29
+ Content-Type:
30
+ - application/vnd.datacentred.api+json; charset=utf-8
31
+ Transfer-Encoding:
32
+ - chunked
33
+ Connection:
34
+ - keep-alive
35
+ X-Frame-Options:
36
+ - SAMEORIGIN
37
+ X-Xss-Protection:
38
+ - 1; mode=block
39
+ X-Content-Type-Options:
40
+ - nosniff
41
+ X-Api-Version:
42
+ - '1'
43
+ Etag:
44
+ - W/"bcf2e37842911b0835ebdbd785272265"
45
+ Cache-Control:
46
+ - max-age=0, private, must-revalidate
47
+ X-Request-Id:
48
+ - 5771e02d-fa57-4e89-9798-7cd95bb0d318
49
+ X-Runtime:
50
+ - '1.274402'
51
+ Strict-Transport-Security:
52
+ - max-age=31536000; includeSubdomains; preload
53
+ body:
54
+ encoding: UTF-8
55
+ string: '{"project":{"id":"37ebf1100ef64599bdfc3f19b913d82c","name":"test_new_project","created_at":"2017-08-29T15:30:20Z","updated_at":"2017-08-29T15:30:20Z","quota_set":{"compute":{"instances":5,"cores":5,"ram":10240},"volume":{"volumes":4,"snapshots":4,"gigabytes":40},"network":{"floatingip":1,"router":1,"security_group_rule":100,"security_group":10,"network":10,"port":10,"subnet":10,"pool":10,"vip":10}},"links":[{"href":"https://my.datacentred.io/api/projects/37ebf1100ef64599bdfc3f19b913d82c","rel":"self"},{"href":"https://my.datacentred.io/api/schemas/project","rel":"schema"}]}}'
56
+ http_version:
57
+ recorded_at: Tue, 29 Aug 2017 15:30:20 GMT
58
+ recorded_with: VCR 2.8.0