grendel-ruby 0.1.4 → 0.1.5

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{grendel-ruby}
8
- s.version = "0.1.4"
8
+ s.version = "0.1.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brad Greenlee"]
12
- s.date = %q{2010-04-29}
12
+ s.date = %q{2010-05-11}
13
13
  s.description = %q{Grendel is a RESTful web service which allows for the secure storage of users'
14
14
  documents. Grendel-Ruby provides a Ruby API for Grendel.}
15
15
  s.email = %q{brad@wesabe.com}
@@ -58,7 +58,10 @@ module Grendel
58
58
  end
59
59
 
60
60
  class HTTPException < Exception
61
+ attr_reader :response
62
+
61
63
  def initialize(response)
64
+ @response = response
62
65
  msg = "#{response.code} #{response.message}"
63
66
  msg << "\n#{response.body}" unless response.body.blank?
64
67
  super(msg)
@@ -4,43 +4,57 @@ describe "Grendel::User" do
4
4
  before do
5
5
  @client = Grendel::Client.new("http://grendel")
6
6
  end
7
-
7
+
8
8
  describe "new" do
9
9
  it "should strip the protocol and host from the uri" do
10
10
  user = Grendel::User.new(@client, :id => "alice", :uri => "http://grendel/users/alice")
11
11
  user.uri.should == "/users/alice"
12
12
  end
13
13
  end
14
-
14
+
15
+ describe "find" do
16
+ context "a non-existent user" do
17
+ it "raises a HTTPException with response code 404" do
18
+ stub_json_request(:get, 'http://grendel/users/idontexist', "", :status => [404, "Not Found"])
19
+ begin
20
+ @client.users.find('idontexist', 'nordoi')
21
+ fail "HTTPException should have been raised but wasn't"
22
+ rescue Grendel::Client::HTTPException => e
23
+ e.response.code.should == 404
24
+ end
25
+ end
26
+ end
27
+ end
28
+
15
29
  describe "change_password" do
16
30
  before do
17
31
  @old_password = "s3kret"
18
32
  @new_password = "newpass"
19
33
  @user = Grendel::User.new(@client, :id => "alice", :password => @old_password)
20
34
  @url = "#{@user.id}:#{@user.password}@grendel/users/#{@user.id}"
21
- stub_json_request(:put, @url, "", :status => "204 No Content")
35
+ stub_json_request(:put, @url, "", :status => [204, "No Content"])
22
36
  end
23
-
37
+
24
38
  it "should send a properly-formatted request" do
25
39
  @user.change_password(@new_password)
26
40
  params = { "password" => @new_password }
27
41
  request(:put, @url).with(:body => params.to_json).should have_been_made.once
28
42
  end
29
-
43
+
30
44
  it "should return a User with the new password" do
31
45
  lambda {
32
46
  @user.change_password(@new_password)
33
47
  }.should change(@user, :password).from(@old_password).to(@new_password)
34
48
  end
35
49
  end
36
-
50
+
37
51
  describe "delete" do
38
52
  before do
39
53
  @user = Grendel::User.new(@client, :id => "alice", :password => "s3kret")
40
54
  @url = "#{@user.id}:#{@user.password}@grendel/users/#{@user.id}"
41
- stub_json_request(:delete, @url, "", :status => "204 No Content")
55
+ stub_json_request(:delete, @url, "", :status => [204, "No Content"])
42
56
  end
43
-
57
+
44
58
  it "should send a properly-formatted request" do
45
59
  @user.delete
46
60
  request(:delete, @url).should have_been_made.once
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 4
9
- version: 0.1.4
8
+ - 5
9
+ version: 0.1.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Brad Greenlee
@@ -14,45 +14,45 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-29 00:00:00 -07:00
17
+ date: 2010-05-11 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
21
+ prerelease: false
22
+ type: :runtime
23
+ name: json
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
22
25
  requirements:
23
26
  - - ">="
24
27
  - !ruby/object:Gem::Version
25
28
  segments:
26
29
  - 0
27
30
  version: "0"
31
+ requirement: *id001
32
+ - !ruby/object:Gem::Dependency
28
33
  prerelease: false
29
34
  type: :runtime
30
- name: json
31
- version_requirements: *id001
32
- - !ruby/object:Gem::Dependency
33
- requirement: &id002 !ruby/object:Gem::Requirement
35
+ name: httparty
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
34
37
  requirements:
35
38
  - - ">="
36
39
  - !ruby/object:Gem::Version
37
40
  segments:
38
41
  - 0
39
42
  version: "0"
43
+ requirement: *id002
44
+ - !ruby/object:Gem::Dependency
40
45
  prerelease: false
41
46
  type: :runtime
42
- name: httparty
43
- version_requirements: *id002
44
- - !ruby/object:Gem::Dependency
45
- requirement: &id003 !ruby/object:Gem::Requirement
47
+ name: mime-types
48
+ version_requirements: &id003 !ruby/object:Gem::Requirement
46
49
  requirements:
47
50
  - - ">="
48
51
  - !ruby/object:Gem::Version
49
52
  segments:
50
53
  - 0
51
54
  version: "0"
52
- prerelease: false
53
- type: :runtime
54
- name: mime-types
55
- version_requirements: *id003
55
+ requirement: *id003
56
56
  description: |-
57
57
  Grendel is a RESTful web service which allows for the secure storage of users'
58
58
  documents. Grendel-Ruby provides a Ruby API for Grendel.