datacentred 0.1.0pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +35 -0
- data/README.md +2 -0
- data/Rakefile +10 -0
- data/circle.yml +5 -0
- data/datacentred.gemspec +23 -0
- data/lib/datacentred/error.rb +28 -0
- data/lib/datacentred/model/project.rb +44 -0
- data/lib/datacentred/model/role.rb +44 -0
- data/lib/datacentred/model/usage.rb +15 -0
- data/lib/datacentred/model/user.rb +32 -0
- data/lib/datacentred/model/version.rb +14 -0
- data/lib/datacentred/request/base.rb +46 -0
- data/lib/datacentred/request/projects.rb +38 -0
- data/lib/datacentred/request/roles.rb +38 -0
- data/lib/datacentred/request/usage.rb +10 -0
- data/lib/datacentred/request/users.rb +26 -0
- data/lib/datacentred/request/versions.rb +10 -0
- data/lib/datacentred/response.rb +12 -0
- data/lib/datacentred.rb +40 -0
- data/test/integration/projects_test.rb +117 -0
- data/test/integration/roles_test.rb +128 -0
- data/test/integration/usage_test.rb +24 -0
- data/test/integration/users_test.rb +128 -0
- data/test/integration/versions_test.rb +15 -0
- data/test/test_helper.rb +14 -0
- data/test/vcr_cassettes/add_user_to_project.yml +140 -0
- data/test/vcr_cassettes/add_user_to_role.yml +187 -0
- data/test/vcr_cassettes/create_project.yml +58 -0
- data/test/vcr_cassettes/create_role_with_invalid_permissions.yml +51 -0
- data/test/vcr_cassettes/create_role_with_permissions.yml +51 -0
- data/test/vcr_cassettes/create_role_without_permissions.yml +50 -0
- data/test/vcr_cassettes/create_user.yml +50 -0
- data/test/vcr_cassettes/delete_project.yml +103 -0
- data/test/vcr_cassettes/delete_role.yml +183 -0
- data/test/vcr_cassettes/delete_user.yml +136 -0
- data/test/vcr_cassettes/find_role.yml +97 -0
- data/test/vcr_cassettes/list_project_users.yml +58 -0
- data/test/vcr_cassettes/list_projects.yml +58 -0
- data/test/vcr_cassettes/list_role_users.yml +97 -0
- data/test/vcr_cassettes/list_roles.yml +50 -0
- data/test/vcr_cassettes/list_users.yml +58 -0
- data/test/vcr_cassettes/project_create_failed_validation.yml +56 -0
- data/test/vcr_cassettes/project_not_found.yml +54 -0
- data/test/vcr_cassettes/project_update_failed_validation.yml +55 -0
- data/test/vcr_cassettes/project_update_not_found.yml +54 -0
- data/test/vcr_cassettes/remove_user_from_project.yml +138 -0
- data/test/vcr_cassettes/remove_user_from_role.yml +228 -0
- data/test/vcr_cassettes/remove_user_from_role_not_found.yml +95 -0
- data/test/vcr_cassettes/show_project.yml +58 -0
- data/test/vcr_cassettes/show_usage.yml +51 -0
- data/test/vcr_cassettes/show_user.yml +97 -0
- data/test/vcr_cassettes/show_version.yml +50 -0
- data/test/vcr_cassettes/update_project.yml +58 -0
- data/test/vcr_cassettes/update_role.yml +98 -0
- data/test/vcr_cassettes/update_role_with_invalid_permissions.yml +98 -0
- data/test/vcr_cassettes/update_user.yml +97 -0
- data/test/vcr_cassettes/usage_not_found.yml +54 -0
- data/test/vcr_cassettes/user_create_failed_validation.yml +54 -0
- data/test/vcr_cassettes/user_delete_failed_validation.yml +54 -0
- data/test/vcr_cassettes/user_delete_not_found.yml +54 -0
- data/test/vcr_cassettes/user_show_not_found.yml +54 -0
- data/test/vcr_cassettes/user_update_failed_validation.yml +96 -0
- data/test/vcr_cassettes/user_update_not_found.yml +48 -0
- 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
|
data/test/test_helper.rb
ADDED
@@ -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
|