nephophobia 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/lib/nephophobia/client.rb +8 -0
- data/lib/nephophobia/compute.rb +6 -7
- data/lib/nephophobia/image.rb +2 -2
- data/lib/nephophobia/project.rb +20 -4
- data/lib/nephophobia/role.rb +64 -0
- data/lib/nephophobia/user.rb +16 -32
- data/lib/nephophobia/version.rb +1 -1
- data/test/fixtures/cassettes/project_find_with_invalid_username.yml +30 -0
- data/test/fixtures/cassettes/project_members.yml +3 -3
- data/test/fixtures/cassettes/role_all.yml +28 -0
- data/test/fixtures/cassettes/role_all_with_no_roles.yml +28 -0
- data/test/fixtures/cassettes/role_all_with_string_into_int_error.yml +28 -0
- data/test/fixtures/cassettes/{user_add_role.yml → role_create.yml} +0 -0
- data/test/fixtures/cassettes/{user_remove_role.yml → role_destroy.yml} +2 -2
- data/test/fixtures/cassettes/user_credentials.yml +28 -0
- data/test/fixtures/cassettes/user_find_with_invalid_user_name.yml +59 -0
- data/test/lib/nephophobia/project_test.rb +27 -2
- data/test/lib/nephophobia/role_test.rb +55 -0
- data/test/lib/nephophobia/user_test.rb +20 -19
- metadata +20 -6
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
data/lib/nephophobia/client.rb
CHANGED
@@ -86,5 +86,13 @@ module Nephophobia
|
|
86
86
|
@path = "/services/Admin/"
|
87
87
|
@user ||= Nephophobia::User.new self
|
88
88
|
end
|
89
|
+
|
90
|
+
##
|
91
|
+
# Provide a simple interface to the OpenStack Role resources.
|
92
|
+
|
93
|
+
def role
|
94
|
+
@path = "/services/Admin/"
|
95
|
+
@role ||= Nephophobia::Role.new self
|
96
|
+
end
|
89
97
|
end
|
90
98
|
end
|
data/lib/nephophobia/compute.rb
CHANGED
@@ -46,7 +46,7 @@ module Nephophobia
|
|
46
46
|
end
|
47
47
|
|
48
48
|
##
|
49
|
-
# Create
|
49
|
+
# Create a compute instance with the given 'image_id'.
|
50
50
|
# Returns information about the new instance.
|
51
51
|
#
|
52
52
|
# +image_id+: A String representing the ID of the image.
|
@@ -68,8 +68,7 @@ module Nephophobia
|
|
68
68
|
end
|
69
69
|
|
70
70
|
##
|
71
|
-
#
|
72
|
-
# you terminate an instance more than once, each call will succeed.
|
71
|
+
# Removes the given 'instance_id'.
|
73
72
|
# Returns instances response to a state change.
|
74
73
|
#
|
75
74
|
# +instance_id+: A String representing the ID of the instance.
|
@@ -85,7 +84,7 @@ module Nephophobia
|
|
85
84
|
end
|
86
85
|
|
87
86
|
##
|
88
|
-
# Returns information about the given 'instance_id'
|
87
|
+
# Returns information about the given 'instance_id'.
|
89
88
|
#
|
90
89
|
# +instance_id+: A String representing the ID of the instance.
|
91
90
|
|
@@ -100,7 +99,7 @@ module Nephophobia
|
|
100
99
|
end
|
101
100
|
|
102
101
|
##
|
103
|
-
# Reboot the
|
102
|
+
# Reboot the given 'instance_id'.
|
104
103
|
# Returns instances response to a state change.
|
105
104
|
#
|
106
105
|
# +instance_id+: A String representing the ID of the instance.
|
@@ -116,7 +115,7 @@ module Nephophobia
|
|
116
115
|
end
|
117
116
|
|
118
117
|
##
|
119
|
-
# Starts the
|
118
|
+
# Starts the given 'instance_id'.
|
120
119
|
# Returns instances current and previous state.
|
121
120
|
#
|
122
121
|
# +instance_id+: A String representing the ID of the instance.
|
@@ -132,7 +131,7 @@ module Nephophobia
|
|
132
131
|
end
|
133
132
|
|
134
133
|
##
|
135
|
-
# Stops the
|
134
|
+
# Stops the given 'instance_id'
|
136
135
|
# Returns instances current and previous state.
|
137
136
|
#
|
138
137
|
# +instance_id+: A String representing the ID of the instance.
|
data/lib/nephophobia/image.rb
CHANGED
@@ -44,7 +44,7 @@ module Nephophobia
|
|
44
44
|
end
|
45
45
|
|
46
46
|
##
|
47
|
-
# Returns information about the
|
47
|
+
# Returns information about the given 'image_id'.
|
48
48
|
#
|
49
49
|
# +image_id+: A String representing the ID of the image.
|
50
50
|
|
@@ -69,7 +69,7 @@ module Nephophobia
|
|
69
69
|
|
70
70
|
private
|
71
71
|
##
|
72
|
-
#
|
72
|
+
# Images which do not have a valid kernel_id are not runnable.
|
73
73
|
|
74
74
|
def public? image
|
75
75
|
image.is_public == "true" && image.kernel_id != "true"
|
data/lib/nephophobia/project.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
module Nephophobia
|
2
2
|
class ProjectData
|
3
|
-
attr_reader :name, :manager_id, :description
|
3
|
+
attr_reader :name, :manager_id, :description, :member
|
4
4
|
|
5
5
|
def initialize hash
|
6
6
|
@name = hash['projectname']
|
7
7
|
@manager_id = hash['projectManagerId']
|
8
8
|
@description = hash['description']
|
9
|
+
@member = hash['member']
|
9
10
|
end
|
10
11
|
end
|
11
12
|
|
@@ -37,7 +38,7 @@ module Nephophobia
|
|
37
38
|
end
|
38
39
|
|
39
40
|
##
|
40
|
-
# Creates the given 'project_name'.
|
41
|
+
# Creates the given 'project_name' and adds the specified 'user_name' as the manager.
|
41
42
|
# Returns a response to the state change.
|
42
43
|
#
|
43
44
|
# +user_name+: A String representing a nova user_name.
|
@@ -75,19 +76,34 @@ module Nephophobia
|
|
75
76
|
response = @client.action "DescribeProject", "Name" => project_name
|
76
77
|
|
77
78
|
ProjectData.new response.body['DescribeProjectResponse']
|
79
|
+
rescue Hugs::Errors::BadRequest
|
78
80
|
end
|
79
81
|
|
80
82
|
##
|
81
83
|
# Returns information about all members of the given 'project_name'.
|
84
|
+
#
|
85
|
+
# +project_name+: A String representing a nova project name.
|
82
86
|
|
83
87
|
def members project_name
|
84
88
|
response = @client.action "DescribeProjectMembers", "Name" => project_name
|
85
89
|
|
86
|
-
response.body['DescribeProjectMembersResponse']['members']['item']
|
90
|
+
response.body['DescribeProjectMembersResponse']['members']['item'].collect do |data|
|
91
|
+
ProjectData.new data
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
##
|
96
|
+
# Return a Boolean if the given 'user_name' is a member of the specified 'project_name'.
|
97
|
+
#
|
98
|
+
# +user_name+: A String representing a nova user_name.
|
99
|
+
# +project_name+: A String representing a nova project_name name.
|
100
|
+
|
101
|
+
def member? user_name, project_name
|
102
|
+
members(project_name).any? { |f| f.member == user_name }
|
87
103
|
end
|
88
104
|
|
89
105
|
##
|
90
|
-
# Removes the given 'user_name' from the specified
|
106
|
+
# Removes the given 'user_name' from the specified 'project_name'.
|
91
107
|
# Returns a response to the state change.
|
92
108
|
#
|
93
109
|
# +user_name+: A String representing a nova user_name.
|
data/lib/nephophobia/role.rb
CHANGED
@@ -1,5 +1,69 @@
|
|
1
1
|
module Nephophobia
|
2
|
+
class RoleData
|
3
|
+
attr_reader :name
|
4
|
+
|
5
|
+
def initialize hash
|
6
|
+
@name = hash['role']
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
2
10
|
class Role
|
11
|
+
### TODO: Add a default attr.
|
3
12
|
DEFAULT = "sysadmin"
|
13
|
+
|
14
|
+
def initialize client
|
15
|
+
@client = client
|
16
|
+
end
|
17
|
+
|
18
|
+
##
|
19
|
+
# Adds the given 'user_name' to the specified "project_name's" 'Role::DEFAULT'.
|
20
|
+
# Returns a response to the state change.
|
21
|
+
#
|
22
|
+
# +user_name+: A String representing a nova user_name.
|
23
|
+
# +project_name+: A String representing a nova project_name name.
|
24
|
+
|
25
|
+
def create user_name, project_name
|
26
|
+
modify_role user_name, "add", project_name
|
27
|
+
end
|
28
|
+
|
29
|
+
##
|
30
|
+
# Removes the given 'user_name' from the specified "project_name's" 'Role::DEFAULT'.
|
31
|
+
#
|
32
|
+
# +user_name+: A String representing a nova user_name.
|
33
|
+
# +project_name+: A String representing a nova project_name name.
|
34
|
+
|
35
|
+
def destroy user_name, project_name
|
36
|
+
modify_role user_name, "remove", project_name
|
37
|
+
end
|
38
|
+
|
39
|
+
##
|
40
|
+
# Returns roles for the given 'user_name' and 'project_name'.
|
41
|
+
|
42
|
+
def all user_name, project_name
|
43
|
+
params = {
|
44
|
+
"User" => user_name,
|
45
|
+
"Project" => project_name
|
46
|
+
}
|
47
|
+
|
48
|
+
response = @client.action "DescribeUserRoles", params
|
49
|
+
|
50
|
+
response.body['DescribeUserRolesResponse']['roles'] &&
|
51
|
+
Nephophobia.coerce(response.body['DescribeUserRolesResponse']['roles']['item']).collect do |data|
|
52
|
+
RoleData.new data
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
def modify_role user_name, operation, project_name
|
58
|
+
params = {
|
59
|
+
"User" => user_name,
|
60
|
+
"Role" => DEFAULT,
|
61
|
+
"Operation" => operation
|
62
|
+
}
|
63
|
+
|
64
|
+
response = @client.action "ModifyUserRole", params
|
65
|
+
|
66
|
+
ResponseData.new response.body['ModifyUserRoleResponse']
|
67
|
+
end
|
4
68
|
end
|
5
69
|
end
|
data/lib/nephophobia/user.rb
CHANGED
@@ -15,26 +15,32 @@ module Nephophobia
|
|
15
15
|
end
|
16
16
|
|
17
17
|
##
|
18
|
-
#
|
18
|
+
# Creates the given 'user_name'.
|
19
19
|
# Returns a response to the state change.
|
20
20
|
#
|
21
21
|
# +user_name+: A String representing a nova user_name.
|
22
|
-
# +project_name+: A String representing a nova project_name name.
|
23
22
|
|
24
|
-
def
|
25
|
-
|
23
|
+
def create user_name
|
24
|
+
response = @client.action "RegisterUser", "Name" => user_name
|
25
|
+
|
26
|
+
UserData.new response.body['RegisterUserResponse']
|
26
27
|
end
|
27
28
|
|
28
29
|
##
|
29
|
-
#
|
30
|
-
# Returns a response to the state change.
|
30
|
+
# Returns the credentials for a given 'user_name' for the specified 'project_name'.
|
31
31
|
#
|
32
32
|
# +user_name+: A String representing a nova user_name.
|
33
|
+
# +project_name+: A String representing a nova project_name name.
|
33
34
|
|
34
|
-
def
|
35
|
-
|
35
|
+
def credentials user_name, project_name
|
36
|
+
params = {
|
37
|
+
"name" => user_name,
|
38
|
+
"project" => project_name
|
39
|
+
}
|
36
40
|
|
37
|
-
|
41
|
+
response = @client.action "GenerateX509ForUser", params
|
42
|
+
|
43
|
+
Base64.decode64 response.body['GenerateX509ForUserResponse']['file']
|
38
44
|
end
|
39
45
|
|
40
46
|
##
|
@@ -58,29 +64,7 @@ module Nephophobia
|
|
58
64
|
response = @client.action "DescribeUser", "Name" => user_name
|
59
65
|
|
60
66
|
UserData.new response.body['DescribeUserResponse']
|
61
|
-
|
62
|
-
|
63
|
-
##
|
64
|
-
# Removes the given 'user_name' from the specified "project_name's" 'Role::DEFAULT'.
|
65
|
-
#
|
66
|
-
# +user_name+: A String representing a nova user_name.
|
67
|
-
# +project_name+: A String representing a nova project_name name.
|
68
|
-
|
69
|
-
def remove_role user_name, project_name
|
70
|
-
modify_role user_name, "remove", project_name
|
71
|
-
end
|
72
|
-
|
73
|
-
private
|
74
|
-
def modify_role user_name, operation, project_name
|
75
|
-
params = {
|
76
|
-
"User" => user_name,
|
77
|
-
"Role" => Role::DEFAULT,
|
78
|
-
"Operation" => operation
|
79
|
-
}
|
80
|
-
|
81
|
-
response = @client.action "ModifyUserRole", params
|
82
|
-
|
83
|
-
ResponseData.new response.body['ModifyUserRoleResponse']
|
67
|
+
rescue Hugs::Errors::BadRequest
|
84
68
|
end
|
85
69
|
end
|
86
70
|
end
|
data/lib/nephophobia/version.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://10.1.170.32:8773/services/Admin/?AWSAccessKeyId=1d7a687b-0065-44d6-9611-5bf6c6c72424%3Aproduction&Action=DescribeProject&Name=invalid_project_name&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&Version=2010-11-15&Signature=8Sk4Nu3S6eiEiftNj3jhPusdsT7%2FRpkFMGLBKaCaurw%3D
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- application/xml
|
10
|
+
connection:
|
11
|
+
- keep-alive
|
12
|
+
keep-alive:
|
13
|
+
- 30
|
14
|
+
response: !ruby/struct:VCR::Response
|
15
|
+
status: !ruby/struct:VCR::ResponseStatus
|
16
|
+
code: 400
|
17
|
+
message: Bad Request
|
18
|
+
headers:
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
content-length:
|
22
|
+
- "197"
|
23
|
+
date:
|
24
|
+
- Mon, 07 Mar 2011 23:40:33 GMT
|
25
|
+
connection:
|
26
|
+
- keep-alive
|
27
|
+
body: |-
|
28
|
+
<?xml version="1.0"?>
|
29
|
+
<Response><Errors><Error><Code>NotFound</Code><Message>No project with id invalid_project_name</Message></Error></Errors><RequestID>ZVKFOJ0MKX8MJ5JJO0II</RequestID></Response>
|
30
|
+
http_version: "1.1"
|
@@ -19,10 +19,10 @@
|
|
19
19
|
content-type:
|
20
20
|
- text/xml
|
21
21
|
content-length:
|
22
|
-
- "
|
22
|
+
- "563"
|
23
23
|
date:
|
24
|
-
- Tue,
|
24
|
+
- Tue, 08 Mar 2011 06:05:21 GMT
|
25
25
|
connection:
|
26
26
|
- keep-alive
|
27
|
-
body: <?xml version="1.0" ?><DescribeProjectMembersResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>
|
27
|
+
body: <?xml version="1.0" ?><DescribeProjectMembersResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>LE01AT-PG3M3UDJGO3GC</requestId><members><item><member>tr0001</member></item><item><member>jtran</member></item><item><member>jdewey</member></item><item><member>jkleinpeter</member></item><item><member>kbringard</member></item><item><member>root</member></item><item><member>jt708u</member></item><item><member>xx1234</member></item><item><member>jd265j</member></item><item><member>jk520u</member></item></members></DescribeProjectMembersResponse>
|
28
28
|
http_version: "1.1"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://10.1.170.32:8773/services/Admin/?AWSAccessKeyId=1d7a687b-0065-44d6-9611-5bf6c6c72424%3Aproduction&Action=DescribeUserRoles&Project=foobar_project&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&User=foobar_user&Version=2010-11-15&Signature=b27VsAcRr9dEbjffLUzb4zeztwPFRSVWM53vxFcuyzY%3D
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- application/xml
|
10
|
+
connection:
|
11
|
+
- keep-alive
|
12
|
+
keep-alive:
|
13
|
+
- 30
|
14
|
+
response: !ruby/struct:VCR::Response
|
15
|
+
status: !ruby/struct:VCR::ResponseStatus
|
16
|
+
code: 200
|
17
|
+
message: OK
|
18
|
+
headers:
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
content-length:
|
22
|
+
- "252"
|
23
|
+
date:
|
24
|
+
- Mon, 07 Mar 2011 23:23:41 GMT
|
25
|
+
connection:
|
26
|
+
- keep-alive
|
27
|
+
body: <?xml version="1.0" ?><DescribeUserRolesResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>5P5XXDX7JWE3X1VH7XV8</requestId><roles><item><role>netadmin</role></item><item><role>sysadmin</role></item></roles></DescribeUserRolesResponse>
|
28
|
+
http_version: "1.1"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://10.1.170.32:8773/services/Admin/?AWSAccessKeyId=1d7a687b-0065-44d6-9611-5bf6c6c72424%3Aproduction&Action=DescribeUserRoles&Project=foobar_project&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&User=foobar_user&Version=2010-11-15&Signature=b27VsAcRr9dEbjffLUzb4zeztwPFRSVWM53vxFcuyzY%3D
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- application/xml
|
10
|
+
connection:
|
11
|
+
- keep-alive
|
12
|
+
keep-alive:
|
13
|
+
- 30
|
14
|
+
response: !ruby/struct:VCR::Response
|
15
|
+
status: !ruby/struct:VCR::ResponseStatus
|
16
|
+
code: 200
|
17
|
+
message: OK
|
18
|
+
headers:
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
content-length:
|
22
|
+
- "177"
|
23
|
+
date:
|
24
|
+
- Tue, 08 Mar 2011 05:04:36 GMT
|
25
|
+
connection:
|
26
|
+
- keep-alive
|
27
|
+
body: <?xml version="1.0" ?><DescribeUserRolesResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>YL8TVVAIPZF4TAL3BNA-</requestId><roles/></DescribeUserRolesResponse>
|
28
|
+
http_version: "1.1"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://10.1.170.32:8773/services/Admin/?AWSAccessKeyId=1d7a687b-0065-44d6-9611-5bf6c6c72424%3Aproduction&Action=DescribeUserRoles&Project=foobar_project&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&User=foobar_user&Version=2010-11-15&Signature=b27VsAcRr9dEbjffLUzb4zeztwPFRSVWM53vxFcuyzY%3D
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- application/xml
|
10
|
+
connection:
|
11
|
+
- keep-alive
|
12
|
+
keep-alive:
|
13
|
+
- 30
|
14
|
+
response: !ruby/struct:VCR::Response
|
15
|
+
status: !ruby/struct:VCR::ResponseStatus
|
16
|
+
code: 200
|
17
|
+
message: OK
|
18
|
+
headers:
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
content-length:
|
22
|
+
- "252"
|
23
|
+
date:
|
24
|
+
- Mon, 07 Mar 2011 23:23:41 GMT
|
25
|
+
connection:
|
26
|
+
- keep-alive
|
27
|
+
body: <?xml version="1.0" ?><DescribeUserRolesResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>5P5XXDX7JWE3X1VH7XV8</requestId><roles><item><role>sysadmin</role></item></roles></DescribeUserRolesResponse>
|
28
|
+
http_version: "1.1"
|
File without changes
|
@@ -21,8 +21,8 @@
|
|
21
21
|
content-length:
|
22
22
|
- "184"
|
23
23
|
date:
|
24
|
-
-
|
24
|
+
- Mon, 07 Mar 2011 23:09:07 GMT
|
25
25
|
connection:
|
26
26
|
- keep-alive
|
27
|
-
body: <?xml version="1.0" ?><ModifyUserRoleResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>
|
27
|
+
body: <?xml version="1.0" ?><ModifyUserRoleResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>J3NI8VJ2XF9WIYC7ZLSQ</requestId><return>true</return></ModifyUserRoleResponse>
|
28
28
|
http_version: "1.1"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://10.1.170.32:8773/services/Admin/?AWSAccessKeyId=1d7a687b-0065-44d6-9611-5bf6c6c72424%3Aproduction&Action=GenerateX509ForUser&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&Version=2010-11-15&name=foobar_user&project=production&Signature=BO8yZkptbtg6q5iaxfx%2BvRp0wQktH0oEIPHVmDtisI0%3D
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- application/xml
|
10
|
+
connection:
|
11
|
+
- keep-alive
|
12
|
+
keep-alive:
|
13
|
+
- 30
|
14
|
+
response: !ruby/struct:VCR::Response
|
15
|
+
status: !ruby/struct:VCR::ResponseStatus
|
16
|
+
code: 200
|
17
|
+
message: OK
|
18
|
+
headers:
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
content-length:
|
22
|
+
- "9800"
|
23
|
+
date:
|
24
|
+
- Tue, 08 Mar 2011 00:58:04 GMT
|
25
|
+
connection:
|
26
|
+
- keep-alive
|
27
|
+
body: <?xml version="1.0" ?><GenerateX509ForUserResponse xmlns="http://ec2.amazonaws.com/doc/2010-11-15/"><requestId>0B3PAS4ZCYMRW2L3EL78</requestId><username>foobar_user</username><secretkey>bd2c4c04-a2e7-4082-8482-778435b9427b</secretkey><accesskey>494e56aa-b021-4610-b7c0-e4434da1bf2f</accesskey><file>UEsDBBQAAAAAAEIHaD7YpiZC7AMAAOwDAAAGAAAAbm92YXJjTk9WQV9LRVlfRElSPSQocHVzaGQgJChkaXJuYW1lICRCQVNIX1NPVVJDRSk+L2Rldi9udWxsOyBwd2Q7IHBvcGQ+L2Rldi9udWxsKQpleHBvcnQgRUMyX0FDQ0VTU19LRVk9IjQ5NGU1NmFhLWIwMjEtNDYxMC1iN2MwLWU0NDM0ZGExYmYyZjpwcm9kdWN0aW9uIgpleHBvcnQgRUMyX1NFQ1JFVF9LRVk9ImJkMmM0YzA0LWEyZTctNDA4Mi04NDgyLTc3ODQzNWI5NDI3YiIKZXhwb3J0IEVDMl9VUkw9Imh0dHA6Ly8wLjAuMC4wOjg3NzMvc2VydmljZXMvQ2xvdWQiCmV4cG9ydCBTM19VUkw9Imh0dHA6Ly8wLjAuMC4wOjMzMzMiCmV4cG9ydCBFQzJfVVNFUl9JRD00MiAjIG5vdmEgZG9lcyBub3QgdXNlIHVzZXIgaWQsIGJ1dCBidW5kbGluZyByZXF1aXJlcyBpdApleHBvcnQgRUMyX1BSSVZBVEVfS0VZPSR7Tk9WQV9LRVlfRElSfS9way5wZW0KZXhwb3J0IEVDMl9DRVJUPSR7Tk9WQV9LRVlfRElSfS9jZXJ0LnBlbQpleHBvcnQgTk9WQV9DRVJUPSR7Tk9WQV9LRVlfRElSfS9jYWNlcnQucGVtCmV4cG9ydCBFVUNBTFlQVFVTX0NFUlQ9JHtOT1ZBX0NFUlR9ICMgZXVjYS1idW5kbGUtaW1hZ2Ugc2VlbXMgdG8gcmVxdWlyZSB0aGlzIHNldAphbGlhcyBlYzItYnVuZGxlLWltYWdlPSJlYzItYnVuZGxlLWltYWdlIC0tY2VydCAke0VDMl9DRVJUfSAtLXByaXZhdGVrZXkgJHtFQzJfUFJJVkFURV9LRVl9IC0tdXNlciA0MiAtLWVjMmNlcnQgJHtOT1ZBX0NFUlR9IgphbGlhcyBlYzItdXBsb2FkLWJ1bmRsZT0iZWMyLXVwbG9hZC1idW5kbGUgLWEgJHtFQzJfQUNDRVNTX0tFWX0gLXMgJHtFQzJfU0VDUkVUX0tFWX0gLS11cmwgJHtTM19VUkx9IC0tZWMyY2VydCAke05PVkFfQ0VSVH0iCmV4cG9ydCBDTE9VRF9TRVJWRVJTX0FQSV9LRVk9IjQ5NGU1NmFhLWIwMjEtNDYxMC1iN2MwLWU0NDM0ZGExYmYyZiIKZXhwb3J0IENMT1VEX1NFUlZFUlNfVVNFUk5BTUU9ImZvb2Jhcl91c2VyIgpleHBvcnQgQ0xPVURfU0VSVkVSU19VUkw9Imh0dHA6Ly8wLjAuMC4wOjg3NzQvdjEuMC8iCgpQSwMEFAAAAAAAQgdoPngFLUt7AwAAewMAAAYAAABway5wZW0tLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCk1JSUNYd0lCQUFLQmdRRE9mTGJudDlKYi9NTHpWRzYrRGNaSDRsV1NyMDlyNklHeWRoTHNnQVJ4M0VmNG1jZXYKKzExblBNSEZicDV5NDk3RFZVUEpjc1A5K29vSzcwRzUranErZVdlZDVNN28yS3MrenVXbVV2NjYvZ3FleVBRUQpFZExvWHYyZDlXdXVTeVl2SjEydFBZSGVMQ01rRGJZWUY5UWtIWWZld0ZBeUZyaCtJZjdQRXJ3c0JRSURBUUFCCkFvR0JBS1M0dHN5cFJ1WGRBTVJPc2IxcGphamd0TFU4cHhZRk9CbmV1WC96TEJpTXl0bFdEQWVtZGIrYXAxWFIKeGhNUEZ6RXFQdFpnZUZ1TzF6cWIzUW40eFl5bjVyRkdIVG5DQmVRV0s4VnZvU2hTUE4xSWo0aFJUT0RudkNtSQpmaE43L3l0MFRRU3dabFkwRUE3MUhUVFhLWFNBdjRNdFFYZ24zM1pzaFRZeldtSU5Ba0VBOW1GRXEwMk5BdVg1CnRLTDVkd00xNjlmbnFkcUhGYW1PSGhHdGdQdUQyUGRxYmFWbzZacnY0YkN2MlBmUm5YUWlVVjBRYTFrbVRkTnYKSmIxOGwxNU94d0pCQU5hTXNQVlFCV09TeTRuejlZcnZpYnhTQWMxMjJic2tyMkRXWTFFRFZxL0U1WUdKNFoxago3disxY0lYZW5pQXJDWDAyenRaZW9JWE8zdG9LRmJlTzB0TUNRUUNSaWFtZnEwTEYySVdsbjdQUENwVjZpR0l2CllvZnpVdUpCZnQzSDJFcnRDbEhURFNlby9yMyt5bmxGcURZcFZXWEVQRDRydTFDMkhsU0VyYWNBWDFRWEFrRUEKdXBYaWM0VWpHcVNZVktJUW9jS09NM1BTVTRDUC9GdjhGYWg4K1FDQlRCMWRSeG5GVjE2SWhHT2p0eGlTeGdFSApvSmlncXZmaWZGd2JuTjMyWXd0WHR3SkJBTUI2VWk3cW5ua3dsb3JZS2pSYm4zeWlUWER3cVZRYWpFbkU1L2pZCmkvN0dhTW5jRlNhdUhwcy8rWlJlR2dPR2lnM0dZQlh4em8rZnE3TC9QUklPZGVBPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQpQSwMEFAAAAAAAQgdoPmgxUxDWCQAA1gkAAAgAAABjZXJ0LnBlbUNlcnRpZmljYXRlOgogICAgRGF0YToKICAgICAgICBWZXJzaW9uOiAxICgweDApCiAgICAgICAgU2VyaWFsIE51bWJlcjogMjkgKDB4MWQpCiAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogbWQ1V2l0aFJTQUVuY3J5cHRpb24KICAgICAgICBJc3N1ZXI6IE89Tk9WQSBST09ULCBMPU1vdW50YWluIFZpZXcsIFNUPUNhbGlmb3JuaWEsIEM9VVMKICAgICAgICBWYWxpZGl0eQogICAgICAgICAgICBOb3QgQmVmb3JlOiBNYXIgIDggMDA6NTg6MDQgMjAxMSBHTVQKICAgICAgICAgICAgTm90IEFmdGVyIDogTWFyICA3IDAwOjU4OjA0IDIwMTIgR01UCiAgICAgICAgU3ViamVjdDogQz1VUywgU1Q9Q2FsaWZvcm5pYSwgTz1BbnNvTGFicywgT1U9Tm92YURldiwgQ049cHJvZHVjdGlvbi1mb29iYXJfdXNlci0yMDExLTAzLTA4VDAwOjU4OjA0WgogICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOgogICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgogICAgICAgICAgICAgICAgUHVibGljLUtleTogKDEwMjQgYml0KQogICAgICAgICAgICAgICAgTW9kdWx1czoKICAgICAgICAgICAgICAgICAgICAwMDpjZTo3YzpiNjplNzpiNzpkMjo1YjpmYzpjMjpmMzo1NDo2ZTpiZTowZDoKICAgICAgICAgICAgICAgICAgICBjNjo0NzplMjo1NTo5MjphZjo0Zjo2YjplODo4MTpiMjo3NjoxMjplYzo4MDoKICAgICAgICAgICAgICAgICAgICAwNDo3MTpkYzo0NzpmODo5OTpjNzphZjpmYjo1ZDo2NzozYzpjMTpjNTo2ZToKICAgICAgICAgICAgICAgICAgICA5ZTo3MjplMzpkZTpjMzo1NTo0MzpjOTo3MjpjMzpmZDpmYTo4YTowYTplZjoKICAgICAgICAgICAgICAgICAgICA0MTpiOTpmYTozYTpiZTo3OTo2Nzo5ZDplNDpjZTplODpkODphYjozZTpjZToKICAgICAgICAgICAgICAgICAgICBlNTphNjo1MjpmZTpiYTpmZTowYTo5ZTpjODpmNDoxMDoxMTpkMjplODo1ZToKICAgICAgICAgICAgICAgICAgICBmZDo5ZDpmNTo2YjphZTo0YjoyNjoyZjoyNzo1ZDphZDozZDo4MTpkZToyYzoKICAgICAgICAgICAgICAgICAgICAyMzoyNDowZDpiNjoxODoxNzpkNDoyNDoxZDo4NzpkZTpjMDo1MDozMjoxNjoKICAgICAgICAgICAgICAgICAgICBiODo3ZToyMTpmZTpjZjoxMjpiYzoyYzowNQogICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQogICAgU2lnbmF0dXJlIEFsZ29yaXRobTogbWQ1V2l0aFJTQUVuY3J5cHRpb24KICAgICAgICA5NDplZTpiMzozZDpmZjpmNjo1NzowNjpjZDo0MTo2YTplNjo0MDoxMDoxMDpiNDpjNjo0ZToKICAgICAgICBiMDowNzo3ZTpjNjo2MTpkODpkODo5ZjoxZDo5MDozYzoyNzpiODpiYzo0NjpmOTo3YjozZDoKICAgICAgICBmYjo4YjoyOTowYjoxMjpkOTpjODo1NDpmNzoyMDoxZTowMTpmYjozNzowODo4NzowZjo0ZDoKICAgICAgICA5NzozZTpiNDphZDo5NzpjYTpmYjpkNDpjMzpmNjpkODowYjpkNjo4NTozZDo2Yjo5ZTphNToKICAgICAgICA2NjoyYToyZTowOTo3ZDowNToxNjo4MzozZDoyNDozNDphMzo4MDplYjo4MzozODoyNTo2MToKICAgICAgICA2Mzo2MDoyNzo3Mzo1Yjo0MzpiNzplODowNzo2NDphNzozNTpkMDoyYzpiNzoxMzpkZjo2NDoKICAgICAgICA3ZTplYTpiMTo3YTowMjpkZTpmYzozNjo4Njo2Zjo3Yjo4YTowNjoxNjo0MTozODpmMjoyMDoKICAgICAgICA2YTo5ZAotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ09qQ0NBYU1DQVIwd0RRWUpLb1pJaHZjTkFRRUVCUUF3VGpFU01CQUdBMVVFQ2hNSlRrOVdRU0JTVDA5VQpNUll3RkFZRFZRUUhFdzFOYjNWdWRHRnBiaUJXYVdWM01STXdFUVlEVlFRSUV3cERZV3hwWm05eWJtbGhNUXN3CkNRWURWUVFHRXdKVlV6QWVGdzB4TVRBek1EZ3dNRFU0TURSYUZ3MHhNakF6TURjd01EVTRNRFJhTUgweEN6QUoKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1saE1SRXdEd1lEVlFRS0RBaEJibk52VEdGaQpjekVRTUE0R0ExVUVDd3dIVG05MllVUmxkakUwTURJR0ExVUVBd3dyY0hKdlpIVmpkR2x2YmkxbWIyOWlZWEpmCmRYTmxjaTB5TURFeExUQXpMVEE0VkRBd09qVTRPakEwV2pDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXcKZ1lrQ2dZRUF6bnkyNTdmU1cvekM4MVJ1dmczR1IrSlZrcTlQYStpQnNuWVM3SUFFY2R4SCtKbkhyL3RkWnp6Qgp4VzZlY3VQZXcxVkR5WExEL2ZxS0N1OUJ1Zm82dm5sbm5lVE82TmlyUHM3bHBsTCt1djRLbnNqMEVCSFM2Rjc5Cm5mVnJya3NtTHlkZHJUMkIzaXdqSkEyMkdCZlVKQjJIM3NCUU1oYTRmaUgrenhLOExBVUNBd0VBQVRBTkJna3EKaGtpRzl3MEJBUVFGQUFPQmdRQ1U3ck05Ly9aWEJzMUJhdVpBRUJDMHhrNndCMzdHWWRqWW54MlFQQ2U0dkViNQplejM3aXlrTEV0bklWUGNnSGdIN053aUhEMDJYUHJTdGw4cjcxTVAyMkF2V2hUMXJucVZtS2k0SmZRVVdnejBrCk5LT0E2NE00SldGallDZHpXME8zNkFka3B6WFFMTGNUMzJSKzZyRjZBdDc4Tm9admU0b0dGa0U0OGlCcW5RPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpQSwMEFAAAAAAAQgdoPvjYZrmOBAAAjgQAAA0AAABub3ZhLXZwbi5jb25mIyB2aW06IHRhYnN0b3A9NCBzaGlmdHdpZHRoPTQgc29mdHRhYnN0b3A9NAoKIyBDb3B5cmlnaHQgMjAxMCBVbml0ZWQgU3RhdGVzIEdvdmVybm1lbnQgYXMgcmVwcmVzZW50ZWQgYnkgdGhlCiMgQWRtaW5pc3RyYXRvciBvZiB0aGUgTmF0aW9uYWwgQWVyb25hdXRpY3MgYW5kIFNwYWNlIEFkbWluaXN0cmF0aW9uLgojIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiMKIyAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heQojICAgIG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluCiMgICAgYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQKIyAgICBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKIyAgICBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwojICAgIHVuZGVyIHRoZSBMaWNlbnNlLgoKIyBOT1ZBIHVzZXIgY29ubmVjdGlvbgojIEVkaXQgdGhlIGZvbGxvd2luZyBsaW5lcyB0byBwb2ludCB0byB5b3VyIGNlcnQgZmlsZXM6CmNlcnQgY2VydC5wZW0Ka2V5IHBrLnBlbQoKY2EgY2FjZXJ0LnBlbQoKY2xpZW50CmRldiB0YXAKcHJvdG8gdWRwCgpyZW1vdGUgMTAuMS4xNzAuMzIgMTAwMApyZXNvbHYtcmV0cnkgaW5maW5pdGUKbm9iaW5kCgojIERvd25ncmFkZSBwcml2aWxlZ2VzIGFmdGVyIGluaXRpYWxpemF0aW9uIChub24tV2luZG93cyBvbmx5KQp1c2VyIG5vYm9keQpncm91cCBub2dyb3VwCmNvbXAtbHpvCgojIFNldCBsb2cgZmlsZSB2ZXJib3NpdHkuCnZlcmIgMgoKa2VlcGFsaXZlIDEwIDEyMApwaW5nLXRpbWVyLXJlbQpwZXJzaXN0LXR1bgpwZXJzaXN0LWtleQpQSwMEFAAAAAAAQgdoPjP33SUFBAAABQQAAAoAAABjYWNlcnQucGVtLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5ekNDQWpTZ0F3SUJBZ0lKQUsrVm53V2NuNU9CTUEwR0NTcUdTSWIzRFFFQkJBVUFNRTR4RWpBUUJnTlYKQkFvVENVNVBWa0VnVWs5UFZERVdNQlFHQTFVRUJ4TU5UVzkxYm5SaGFXNGdWbWxsZHpFVE1CRUdBMVVFQ0JNSwpRMkZzYVdadmNtNXBZVEVMTUFrR0ExVUVCaE1DVlZNd0hoY05NVEV3TVRJM01qRXdOVEl5V2hjTk1USXdNVEkzCk1qRXdOVEl5V2pCT01SSXdFQVlEVlFRS0V3bE9UMVpCSUZKUFQxUXhGakFVQmdOVkJBY1REVTF2ZFc1MFlXbHUKSUZacFpYY3hFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4Q3pBSkJnTlZCQVlUQWxWVE1JR2ZNQTBHQ1NxRwpTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0JnUUROSDJVOXRaT05yM2dTNGsrMWtTZDFjMzFmTnRsTTJrWEhGN3RBCmxjQ21SYUxReXUvQnNFR2J5T2t4bWdyK1RrZlZpaXBiaGU1Z0VzWkxCV3piVVB0MDlsb0ZENjltNXNBcU9zbVQKbXQvUU9FZUVFdXNJSWg4UjM0QStEL1pJR3pWeGhGMnRSejhWT0l6bDdzUi9ZcnVnWkxla2Y5L2lVbmE3RzI1bwppT1RjK1FJREFRQUJvNEd3TUlHdE1Bd0dBMVVkRXdRRk1BTUJBZjh3SFFZRFZSME9CQllFRkJDeTkwVWJScTZJCk12SWoyeUc0M0ZGWGZXSWpNSDRHQTFVZEl3UjNNSFdBRkJDeTkwVWJScTZJTXZJajJ5RzQzRkZYZldJam9WS2sKVURCT01SSXdFQVlEVlFRS0V3bE9UMVpCSUZKUFQxUXhGakFVQmdOVkJBY1REVTF2ZFc1MFlXbHVJRlpwWlhjeApFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4Q3pBSkJnTlZCQVlUQWxWVGdna0FyNVdmQlp5Zms0RXdEUVlKCktvWklodmNOQVFFRUJRQURnWUVBcHZGY1REZVZFdGRYc3E2MUpENzBvaithVlBmUjdFT09iYmU5eFhySFFBaU4KVWo4c21qY1RGWXBubHFlNHZoRC9KRFpCdTNFS3JxZkpRd3pnVDMyaWZUK25GVnhqc1I4cm1GandMU3h3NUtCWgpIOUhId1d6Y0lvMXZYZGFoQnROZlZ6bWQvUjdPNzkyY1IwL3lmZXE5Z0FJQTRrdjhHZkVXM1FtencwS0lRMlE9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KUEsBAhQDFAAAAAAAQgdoPtimJkLsAwAA7AMAAAYAAAAAAAAAAAAAAIABAAAAAG5vdmFyY1BLAQIUAxQAAAAAAEIHaD54BS1LewMAAHsDAAAGAAAAAAAAAAAAAACAARAEAABway5wZW1QSwECFAMUAAAAAABCB2g+aDFTENYJAADWCQAACAAAAAAAAAAAAAAAgAGvBwAAY2VydC5wZW1QSwECFAMUAAAAAABCB2g++NhmuY4EAACOBAAADQAAAAAAAAAAAAAAgAGrEQAAbm92YS12cG4uY29uZlBLAQIUAxQAAAAAAEIHaD4z990lBQQAAAUEAAAKAAAAAAAAAAAAAACAAWQWAABjYWNlcnQucGVtUEsFBgAAAAAFAAUAEQEAAJEaAAAAAA==</file></GenerateX509ForUserResponse>
|
28
|
+
http_version: "1.1"
|
@@ -0,0 +1,59 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://10.1.170.32:8773/services/Admin/?AWSAccessKeyId=1d7a687b-0065-44d6-9611-5bf6c6c72424%3Aproduction&Action=DescribeUser&Name=invalid_username&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&Version=2010-11-15&Signature=O4Ljcvuo%2BKnDxxWssxqGF36cNu%2B4WFRrI%2FPVD4BmAE4%3D
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
accept:
|
9
|
+
- application/xml
|
10
|
+
connection:
|
11
|
+
- keep-alive
|
12
|
+
keep-alive:
|
13
|
+
- 30
|
14
|
+
response: !ruby/struct:VCR::Response
|
15
|
+
status: !ruby/struct:VCR::ResponseStatus
|
16
|
+
code: 400
|
17
|
+
message: Bad Request
|
18
|
+
headers:
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
content-length:
|
22
|
+
- "189"
|
23
|
+
date:
|
24
|
+
- Mon, 07 Mar 2011 04:52:21 GMT
|
25
|
+
connection:
|
26
|
+
- keep-alive
|
27
|
+
body: |-
|
28
|
+
<?xml version="1.0"?>
|
29
|
+
<Response><Errors><Error><Code>NotFound</Code><Message>No user for id invalid_username</Message></Error></Errors><RequestID>0R2C84PAWETJ033HJLX2</RequestID></Response>
|
30
|
+
http_version: "1.1"
|
31
|
+
- !ruby/struct:VCR::HTTPInteraction
|
32
|
+
request: !ruby/struct:VCR::Request
|
33
|
+
method: :get
|
34
|
+
uri: http://10.1.170.32:8773/services/Admin/?AWSAccessKeyId=1d7a687b-0065-44d6-9611-5bf6c6c72424%3Aproduction&Action=DescribeUser&Name=invalid_user_name&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=1999-12-31T19%3A59%3A59Z&Version=2010-11-15&Signature=5K4TfIF6QONc2CZjSsZHsgixj61JYDO4c1B1TndWe9A%3D
|
35
|
+
body:
|
36
|
+
headers:
|
37
|
+
accept:
|
38
|
+
- application/xml
|
39
|
+
connection:
|
40
|
+
- keep-alive
|
41
|
+
keep-alive:
|
42
|
+
- 30
|
43
|
+
response: !ruby/struct:VCR::Response
|
44
|
+
status: !ruby/struct:VCR::ResponseStatus
|
45
|
+
code: 400
|
46
|
+
message: Bad Request
|
47
|
+
headers:
|
48
|
+
content-type:
|
49
|
+
- text/xml
|
50
|
+
content-length:
|
51
|
+
- "190"
|
52
|
+
date:
|
53
|
+
- Mon, 07 Mar 2011 23:40:04 GMT
|
54
|
+
connection:
|
55
|
+
- keep-alive
|
56
|
+
body: |-
|
57
|
+
<?xml version="1.0"?>
|
58
|
+
<Response><Errors><Error><Code>NotFound</Code><Message>No user for id invalid_user_name</Message></Error></Errors><RequestID>N3AL9FC3HF0YCKA5AZLG</RequestID></Response>
|
59
|
+
http_version: "1.1"
|
@@ -37,7 +37,7 @@ describe Nephophobia::Project do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
describe "#create" do
|
40
|
-
it "creates the given 'project_name'" do
|
40
|
+
it "creates the given 'user_name' in the specified 'project_name'" do
|
41
41
|
VCR.use_cassette "project_create" do
|
42
42
|
response = @project.create @project_name, @user_name
|
43
43
|
|
@@ -80,6 +80,16 @@ describe Nephophobia::Project do
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
+
describe "#find with invalid project_name" do
|
84
|
+
it "rescues Hugs::Errors::BadRequest" do
|
85
|
+
VCR.use_cassette "project_find_with_invalid_username" do
|
86
|
+
@response = @project.find "invalid_project_name"
|
87
|
+
end
|
88
|
+
|
89
|
+
@response.must_be_nil
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
83
93
|
describe "#members" do
|
84
94
|
before { @project_name = "production" }
|
85
95
|
|
@@ -87,7 +97,22 @@ describe Nephophobia::Project do
|
|
87
97
|
VCR.use_cassette "project_members" do
|
88
98
|
response = @project.members @project_name
|
89
99
|
|
90
|
-
response.size.must_equal
|
100
|
+
response.size.must_equal 10
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "#member?" do
|
106
|
+
before do
|
107
|
+
@user_name = "jdewey"
|
108
|
+
@project_name = "production"
|
109
|
+
end
|
110
|
+
|
111
|
+
it "returns true if the given 'user_name' is a member of the specified 'project_name'" do
|
112
|
+
VCR.use_cassette "project_members" do
|
113
|
+
response = @project.member? @user_name, @project_name
|
114
|
+
|
115
|
+
response.must_equal true
|
91
116
|
end
|
92
117
|
end
|
93
118
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
describe Nephophobia::Role do
|
4
|
+
before do
|
5
|
+
@role = ADMIN_CLIENT.role
|
6
|
+
@user_name = "foobar_user"
|
7
|
+
@project_name = "foobar_project"
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "#create" do
|
11
|
+
it "adds the default role to the given 'user_name' and 'project_name'" do
|
12
|
+
VCR.use_cassette "role_create" do
|
13
|
+
response = @role.create @user_name, @project_name
|
14
|
+
|
15
|
+
response.return.must_equal true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "#destroy" do
|
21
|
+
it "removes the default role to the given 'user_name' and 'project_name'" do
|
22
|
+
VCR.use_cassette "role_destroy" do
|
23
|
+
response = @role.destroy @user_name, @project_name
|
24
|
+
|
25
|
+
response.return.must_equal true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#all" do
|
31
|
+
it "returns all roles for the given 'user_name' and 'project_name'" do
|
32
|
+
VCR.use_cassette "role_all" do
|
33
|
+
response = @role.all @user_name, @project_name
|
34
|
+
|
35
|
+
response.size.must_equal 2
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
it "has a 'TypeError: can't convert String into Integer' error" do
|
40
|
+
VCR.use_cassette "role_all_with_string_into_int_error" do
|
41
|
+
response = @role.all @user_name, @project_name
|
42
|
+
|
43
|
+
response.size.must_equal 1
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
it "has a 'NoMethodError: undefined method `[]' for nil:NilClass' error" do
|
48
|
+
VCR.use_cassette "role_all_with_no_roles" do
|
49
|
+
response = @role.all @user_name, @project_name
|
50
|
+
|
51
|
+
response.must_be_nil
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -2,19 +2,8 @@ require "test_helper"
|
|
2
2
|
|
3
3
|
describe Nephophobia::User do
|
4
4
|
before do
|
5
|
-
@user
|
6
|
-
@user_name
|
7
|
-
@project_name = "foobar_project"
|
8
|
-
end
|
9
|
-
|
10
|
-
describe "#add_role" do
|
11
|
-
it "adds the default role to the given 'user_name'" do
|
12
|
-
VCR.use_cassette "user_add_role" do
|
13
|
-
response = @user.add_role @user_name, @project_name
|
14
|
-
|
15
|
-
response.return.must_equal true
|
16
|
-
end
|
17
|
-
end
|
5
|
+
@user = ADMIN_CLIENT.user
|
6
|
+
@user_name = "foobar_user"
|
18
7
|
end
|
19
8
|
|
20
9
|
describe "#create" do
|
@@ -27,6 +16,18 @@ describe Nephophobia::User do
|
|
27
16
|
end
|
28
17
|
end
|
29
18
|
|
19
|
+
describe "#credentials" do
|
20
|
+
before { @project_name = "production" }
|
21
|
+
|
22
|
+
it "returns the credentials for a given 'user_name' for the specified 'project_name'." do
|
23
|
+
VCR.use_cassette "user_credentials" do
|
24
|
+
response = @user.credentials @user_name, @project_name
|
25
|
+
|
26
|
+
response.must_match %r{BEGIN CERTIFICATE}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
30
31
|
describe "#destroy" do
|
31
32
|
it "destroys the given 'user_name'" do
|
32
33
|
VCR.use_cassette "user_destroy" do
|
@@ -59,13 +60,13 @@ describe Nephophobia::User do
|
|
59
60
|
end
|
60
61
|
end
|
61
62
|
|
62
|
-
describe "#
|
63
|
-
it "
|
64
|
-
VCR.use_cassette "
|
65
|
-
response = @user.
|
66
|
-
|
67
|
-
response.return.must_equal true
|
63
|
+
describe "#find with invalid user_name" do
|
64
|
+
it "rescues Hugs::Errors::BadRequest" do
|
65
|
+
VCR.use_cassette "user_find_with_invalid_user_name" do
|
66
|
+
@response = @user.find "invalid_user_name"
|
68
67
|
end
|
68
|
+
|
69
|
+
@response.must_be_nil
|
69
70
|
end
|
70
71
|
end
|
71
72
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: nephophobia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- John Dewey
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-03-
|
14
|
+
date: 2011-03-08 00:00:00 -08:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
@@ -140,18 +140,25 @@ files:
|
|
140
140
|
- test/fixtures/cassettes/project_create.yml
|
141
141
|
- test/fixtures/cassettes/project_destroy.yml
|
142
142
|
- test/fixtures/cassettes/project_find.yml
|
143
|
+
- test/fixtures/cassettes/project_find_with_invalid_username.yml
|
143
144
|
- test/fixtures/cassettes/project_members.yml
|
144
145
|
- test/fixtures/cassettes/project_remove_member.yml
|
145
|
-
- test/fixtures/cassettes/
|
146
|
+
- test/fixtures/cassettes/role_all.yml
|
147
|
+
- test/fixtures/cassettes/role_all_with_no_roles.yml
|
148
|
+
- test/fixtures/cassettes/role_all_with_string_into_int_error.yml
|
149
|
+
- test/fixtures/cassettes/role_create.yml
|
150
|
+
- test/fixtures/cassettes/role_destroy.yml
|
146
151
|
- test/fixtures/cassettes/user_create.yml
|
152
|
+
- test/fixtures/cassettes/user_credentials.yml
|
147
153
|
- test/fixtures/cassettes/user_destroy.yml
|
148
154
|
- test/fixtures/cassettes/user_find.yml
|
149
|
-
- test/fixtures/cassettes/
|
155
|
+
- test/fixtures/cassettes/user_find_with_invalid_user_name.yml
|
150
156
|
- test/lib/aws_test.rb
|
151
157
|
- test/lib/hashify_test.rb
|
152
158
|
- test/lib/nephophobia/compute_test.rb
|
153
159
|
- test/lib/nephophobia/image_test.rb
|
154
160
|
- test/lib/nephophobia/project_test.rb
|
161
|
+
- test/lib/nephophobia/role_test.rb
|
155
162
|
- test/lib/nephophobia/user_test.rb
|
156
163
|
- test/lib/nephophobia_test.rb
|
157
164
|
- test/test_helper.rb
|
@@ -204,18 +211,25 @@ test_files:
|
|
204
211
|
- test/fixtures/cassettes/project_create.yml
|
205
212
|
- test/fixtures/cassettes/project_destroy.yml
|
206
213
|
- test/fixtures/cassettes/project_find.yml
|
214
|
+
- test/fixtures/cassettes/project_find_with_invalid_username.yml
|
207
215
|
- test/fixtures/cassettes/project_members.yml
|
208
216
|
- test/fixtures/cassettes/project_remove_member.yml
|
209
|
-
- test/fixtures/cassettes/
|
217
|
+
- test/fixtures/cassettes/role_all.yml
|
218
|
+
- test/fixtures/cassettes/role_all_with_no_roles.yml
|
219
|
+
- test/fixtures/cassettes/role_all_with_string_into_int_error.yml
|
220
|
+
- test/fixtures/cassettes/role_create.yml
|
221
|
+
- test/fixtures/cassettes/role_destroy.yml
|
210
222
|
- test/fixtures/cassettes/user_create.yml
|
223
|
+
- test/fixtures/cassettes/user_credentials.yml
|
211
224
|
- test/fixtures/cassettes/user_destroy.yml
|
212
225
|
- test/fixtures/cassettes/user_find.yml
|
213
|
-
- test/fixtures/cassettes/
|
226
|
+
- test/fixtures/cassettes/user_find_with_invalid_user_name.yml
|
214
227
|
- test/lib/aws_test.rb
|
215
228
|
- test/lib/hashify_test.rb
|
216
229
|
- test/lib/nephophobia/compute_test.rb
|
217
230
|
- test/lib/nephophobia/image_test.rb
|
218
231
|
- test/lib/nephophobia/project_test.rb
|
232
|
+
- test/lib/nephophobia/role_test.rb
|
219
233
|
- test/lib/nephophobia/user_test.rb
|
220
234
|
- test/lib/nephophobia_test.rb
|
221
235
|
- test/test_helper.rb
|