agree2 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +0 -0
- data/License.txt +20 -0
- data/README.rdoc +165 -0
- data/Rakefile +97 -0
- data/lib/agree2/agreement.rb +71 -0
- data/lib/agree2/base.rb +147 -0
- data/lib/agree2/client.rb +101 -0
- data/lib/agree2/party.rb +23 -0
- data/lib/agree2/proxy_collection.rb +76 -0
- data/lib/agree2/template.rb +100 -0
- data/lib/agree2/user.rb +73 -0
- data/lib/agree2.rb +34 -0
- data/spec/agreement_spec.rb +190 -0
- data/spec/client_spec.rb +49 -0
- data/spec/fixtures/agreement.json +50 -0
- data/spec/fixtures/party.json +15 -0
- data/spec/party_spec.rb +138 -0
- data/spec/proxy_collection_spec.rb +124 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/template_spec.rb +89 -0
- data/spec/user_spec.rb +77 -0
- metadata +118 -0
data/spec/party_spec.rb
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
require 'open-uri'
|
3
|
+
#require 'hpricot'
|
4
|
+
require 'oauth/request_proxy/rack_request'
|
5
|
+
require 'rack/request'
|
6
|
+
require 'rack/mock'
|
7
|
+
|
8
|
+
include Agree2
|
9
|
+
describe Party do
|
10
|
+
before(:each) do
|
11
|
+
@client=Agree2::Client.new "client_key","client_secret"
|
12
|
+
@user=Agree2::User.new(@client,"token","token_secret")
|
13
|
+
@agreement=Agreement.new @user,{:permalink=>'hello'}
|
14
|
+
@json=IO.read(File.join(File.dirname(__FILE__),"fixtures","party.json"))
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "Create new" do
|
18
|
+
before(:each) do
|
19
|
+
@party=Party.new(@agreement,{:first_name=>"Bob",:last_name=>"Wildcat",:email=>'bob@gmail.inv'})
|
20
|
+
end
|
21
|
+
it "should be new record" do
|
22
|
+
@party.should be_new_record
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have agreement" do
|
26
|
+
@party.agreement.should==@agreement
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a user" do
|
30
|
+
@party.user.should==@user
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have first_name" do
|
34
|
+
@party.first_name.should=="Bob"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have last_name" do
|
38
|
+
@party.last_name.should=="Wildcat"
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "Save to Server" do
|
42
|
+
before(:each) do
|
43
|
+
@user.should_receive(:post).with("/agreements/hello/parties",
|
44
|
+
{'party'=>{:first_name=>"Bob",:last_name=>"Wildcat",:email=>'bob@gmail.inv'}}).and_return(@json)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should save and return true" do
|
48
|
+
@party.save
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should no longer be new record" do
|
52
|
+
@party.save
|
53
|
+
@party.should_not be_new_record
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should have a permalink" do
|
57
|
+
@party.save
|
58
|
+
@party.id.should==1102
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "from json" do
|
65
|
+
|
66
|
+
before(:each) do
|
67
|
+
@party=Party.new(@agreement,@json)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should have agreement" do
|
71
|
+
@party.agreement.should==@agreement
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should have a user" do
|
75
|
+
@party.user.should==@user
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should have first_name" do
|
79
|
+
@party.first_name.should=="Bob"
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should have last_name" do
|
83
|
+
@party.last_name.should=="Wildcat"
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should have a path" do
|
87
|
+
@party.path.should=="/agreements/hello/parties/1102"
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should have a url" do
|
91
|
+
@party.to_url.should=="https://agree2.com/agreements/hello/parties/1102"
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should generate present url" do
|
95
|
+
present_url=@party.present
|
96
|
+
present_url=~/^(http.*)\?(.*)$/
|
97
|
+
$1.should=="https://agree2.com/present/hello/to/bob@gmail.inv"
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should verify present url" do
|
101
|
+
present_url=@party.present
|
102
|
+
request = Rack::Request.new(Rack::MockRequest.env_for(present_url))
|
103
|
+
OAuth::Signature.verify(request,{:consumer=>@client.consumer,:token=>@user.access_token}).should==true
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "Save to Server" do
|
108
|
+
before(:each) do
|
109
|
+
@user.should_receive(:put).with("/agreements/hello/parties/1102",
|
110
|
+
{'party'=>@party.attributes}).and_return(@json)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should save and return true" do
|
114
|
+
@party.save
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe Agree2::Party, "party hash validation" do
|
123
|
+
before(:each) do
|
124
|
+
@hash={:first_name=>'Bob',:last_name=>'Wilson',:email=>'bob@gmail.com',:organization_name=>'SomeCo Inc.'}
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should validate" do
|
128
|
+
lambda {Party.validate_party_hash(@hash).should==true}.should_not raise_error
|
129
|
+
end
|
130
|
+
|
131
|
+
[:first_name,:last_name,:email].each do |field|
|
132
|
+
it "should require #{field.to_s}" do
|
133
|
+
@hash.delete(field)
|
134
|
+
lambda {Party.validate_party_hash(@hash)}.should raise_error(ArgumentError)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
|
3
|
+
describe Agree2::ProxyCollection do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@client=Agree2::Client.new "client_key","client_secret"
|
7
|
+
@user=Agree2::User.new(@client,"token","token_secret")
|
8
|
+
end
|
9
|
+
describe "load" do
|
10
|
+
before(:each) do
|
11
|
+
@agreements=Agree2::ProxyCollection.new(@user,"/agreements")
|
12
|
+
@json="[#{IO.read(File.join(File.dirname(__FILE__),"fixtures","agreement.json"))}]"
|
13
|
+
@user.stub!(:get).and_return(@json)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should have a path" do
|
17
|
+
@agreements.path.should=="/agreements"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should have singular" do
|
21
|
+
@agreements.singular.should=='Agreement'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should call web service" do
|
25
|
+
@user.should_receive(:get).with("/agreements").and_return(@json)
|
26
|
+
@agreements.length.should==1
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a user" do
|
30
|
+
@agreements.user.should==@user
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "with default value" do
|
35
|
+
before(:each) do
|
36
|
+
@agreements=Agree2::ProxyCollection.new(@user,"/agreements",nil,[{:permalink=>'hello'}])
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should have a path" do
|
40
|
+
@agreements.path.should=="/agreements"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should have singular" do
|
44
|
+
@agreements.singular.should=='Agreement'
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should have a user" do
|
48
|
+
@agreements.user.should==@user
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should have one item" do
|
52
|
+
@agreements.length.should==1
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should not call web service" do
|
56
|
+
@user.should_not_receive(:get)
|
57
|
+
@agreements.first
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should find an individual resource" do
|
61
|
+
@user.should_receive(:get).with('/agreements/something').and_return(
|
62
|
+
IO.read(File.join(File.dirname(__FILE__),"fixtures","agreement.json")))
|
63
|
+
@agreements.find('something')
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should instantiate a new party" do
|
67
|
+
Agree2::Agreement.should_receive(:new).with(@user,{:title=>"Test",:body=>"Body"})
|
68
|
+
@agreements.build :title=>"Test",:body=>"Body"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should create and save a new party" do
|
72
|
+
@agreement=mock("agreement")
|
73
|
+
Agree2::Agreement.should_receive(:new).with(@user,{:title=>"Test",:body=>"Body"}).and_return(@agreement)
|
74
|
+
@agreement.should_receive(:save)
|
75
|
+
@agreements.create :title=>"Test",:body=>"Body"
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "nested load" do
|
81
|
+
before(:each) do
|
82
|
+
@agreement=Agree2::Agreement.new(@user,{:permalink=>'hello'})
|
83
|
+
@parties=@agreement.parties
|
84
|
+
@json="[#{IO.read(File.join(File.dirname(__FILE__),"fixtures","party.json"))}]"
|
85
|
+
@user.stub!(:get).and_return(@json)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should have a path" do
|
89
|
+
@parties.path.should=="/agreements/hello/parties"
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should have singular" do
|
93
|
+
@parties.singular.should=='Party'
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should call web service" do
|
97
|
+
@user.should_receive(:get).with("/agreements/hello/parties").and_return(@json)
|
98
|
+
@parties.length.should==1
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should have a user" do
|
102
|
+
@parties.user.should==@user
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should find an individual resource" do
|
106
|
+
@user.should_receive(:get).with('/agreements/hello/parties/123').and_return(
|
107
|
+
IO.read(File.join(File.dirname(__FILE__),"fixtures","party.json")))
|
108
|
+
@parties.find(123)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should instantiate a new party" do
|
112
|
+
Agree2::Party.should_receive(:new).with(@agreement,{:first_name=>"Bob",:last_name=>"Galbraith",:email=>'bob@bob.inv'})
|
113
|
+
@parties.build :first_name=>"Bob",:last_name=>"Galbraith",:email=>'bob@bob.inv'
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should create and save a new party" do
|
117
|
+
@party=mock("party")
|
118
|
+
Agree2::Party.should_receive(:new).with(@agreement,{:first_name=>"Bob",:last_name=>"Galbraith",:email=>'bob@bob.inv'}).and_return(@party)
|
119
|
+
@party.should_receive(:save)
|
120
|
+
@parties.create :first_name=>"Bob",:last_name=>"Galbraith",:email=>'bob@bob.inv'
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
|
3
|
+
describe Agree2::Template do
|
4
|
+
before(:each) do
|
5
|
+
@client=Agree2::Client.new "client_key","client_secret"
|
6
|
+
@user=Agree2::User.new(@client,"token","token_secret")
|
7
|
+
@template=Agree2::Template.new(@user,{:permalink=>'hello'})
|
8
|
+
@fields={:amount=>100}
|
9
|
+
@bob={:first_name=>'Bob',:last_name=>'Green',:email=>'bob@green.inv'}
|
10
|
+
@json=IO.read(File.join(File.dirname(__FILE__),"fixtures","agreement.json"))
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have a user" do
|
15
|
+
@template.user.should==@user
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have correct path" do
|
19
|
+
@template.path.should=="/masters/hello"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have correct url" do
|
23
|
+
@template.to_url.should=="https://agree2.com/masters/hello"
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "prepare" do
|
27
|
+
before(:each) do
|
28
|
+
@agreement=mock('agreement')
|
29
|
+
@user.stub!(:get).and_return(@agreement)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should call raw_prepare with correct parameters" do
|
33
|
+
@template.should_receive(:raw_prepare).with(:fields=>@fields,:parties=>{:client=>@bob})
|
34
|
+
@template.prepare(@fields,{:client=>@bob})
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should call raw_prepare with correct parameters for application" do
|
38
|
+
@template.should_receive(:raw_prepare).with(:fields=>@fields,:parties=>{:client=>@bob,'service'=>:application})
|
39
|
+
@template.prepare(@fields,{:client=>@bob},'service')
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should call raw_prepare with correct parameters" do
|
43
|
+
@user.should_receive(:post).with("/masters/hello/prepare",:fields=>@fields,:parties=>{:client=>@bob}).and_return(@json)
|
44
|
+
@template.prepare(@fields,{:client=>@bob})
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should raise exception and not receive raw_prepare when parties aren't valid" do
|
48
|
+
@bob.delete(:email)
|
49
|
+
@template.should_not_receive(:raw_prepare)
|
50
|
+
lambda {@template.prepare(@fields,{:client=>@bob})}.should raise_error(ArgumentError)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "prepare and sign" do
|
55
|
+
before(:each) do
|
56
|
+
@agreement=mock('agreement')
|
57
|
+
@user.stub!(:get).and_return(@agreement)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should call raw_prepare with correct parameters" do
|
61
|
+
@template.should_receive(:raw_prepare).with(:fields=>@fields,
|
62
|
+
:parties=>{:client=>@bob,'application'=>:application},:sign=>'application')
|
63
|
+
@template.prepare_and_sign(@fields,{:client=>@bob})
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should call raw_prepare with correct parameters for application" do
|
67
|
+
@template.should_receive(:raw_prepare).with(:fields=>@fields,:parties=>{:client=>@bob,'service'=>:application},:sign=>'service')
|
68
|
+
@template.prepare_and_sign(@fields,{:client=>@bob},'service')
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should call raw_prepare with correct parameters" do
|
72
|
+
@user.should_receive(:post).with("/masters/hello/prepare",:fields=>@fields,
|
73
|
+
:parties=>{:client=>@bob,'application'=>:application},:sign=>'application').and_return(@json)
|
74
|
+
@template.prepare_and_sign(@fields,{:client=>@bob})
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should raise exception and not receive raw_prepare when parties aren't valid" do
|
78
|
+
@bob.delete(:email)
|
79
|
+
@template.should_not_receive(:raw_prepare)
|
80
|
+
lambda {@template.prepare_and_sign(@fields,{:client=>@bob})}.should raise_error(ArgumentError)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should raise exception and not receive raw_prepare when no parties are present" do
|
84
|
+
@bob.delete(:email)
|
85
|
+
@template.should_not_receive(:raw_prepare)
|
86
|
+
lambda {@template.prepare_and_sign(@fields,{})}.should raise_error(ArgumentError)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/spec/user_spec.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
|
3
|
+
describe Agree2::User do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@client=Agree2::Client.new "client_key","client_secret"
|
7
|
+
@user=Agree2::User.new(@client,"token","token_secret")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should create user" do
|
11
|
+
@user.client.should==@client
|
12
|
+
@user.access_token.consumer.should==@client.consumer
|
13
|
+
@user.token.should=="token"
|
14
|
+
@user.secret.should=="token_secret"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should find all agreements" do
|
18
|
+
@agreements=[]
|
19
|
+
@json="[]"
|
20
|
+
@user.should_receive(:get).with("/agreements").and_return(@json)
|
21
|
+
@user.agreements.length.should==0
|
22
|
+
@user.agreements.should==@agreements
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should find all templates" do
|
26
|
+
@templates=[]
|
27
|
+
@json="[]"
|
28
|
+
@user.should_receive(:get).with("/masters").and_return(@json)
|
29
|
+
@user.templates.length.should==0
|
30
|
+
@user.templates.should==@templates
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "http calls" do
|
34
|
+
before(:each) do
|
35
|
+
@token=@user.access_token
|
36
|
+
@json='{"hello":"world"}'
|
37
|
+
@response=mock("response")
|
38
|
+
@response.stub!(:code).and_return("200")
|
39
|
+
@response.stub!(:body).and_return(@json)
|
40
|
+
end
|
41
|
+
|
42
|
+
[:get,:head,:delete].each do |m|
|
43
|
+
it "should perform http #{m.to_s}" do
|
44
|
+
@token.should_receive(m).with("/test",{'Content-Type'=>'application/json','Accept'=>'application/json'}).and_return(@response)
|
45
|
+
@user.send(m,"/test").should==@json
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
[:post,:put].each do |m|
|
50
|
+
it "should perform http #{m.to_s} with no data" do
|
51
|
+
@token.should_receive(m).with("/test",nil,{'Content-Type'=>'application/json','Accept'=>'application/json'}).and_return(@response)
|
52
|
+
@user.send(m,"/test").should==@json
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should perform http #{m.to_s} with hash" do
|
56
|
+
@token.should_receive(m).with("/test",'{"test":"this"}',{'Content-Type'=>'application/json','Accept'=>'application/json'}).and_return(@response)
|
57
|
+
@user.send(m,"/test",{:test=>'this'}).should==@json
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "handle_response" do
|
62
|
+
it "should return body" do
|
63
|
+
@user.send(:handle_response,@response).should==@json
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should return handle redirect" do
|
67
|
+
@response.stub!(:code).and_return("302")
|
68
|
+
@response.stub!(:[]).and_return('https://agree2.com/agreements/my_agreement')
|
69
|
+
@user.should_receive(:get).with('/agreements/my_agreement').and_return('{"permalink":"my_agreement","title":"hello there"}')
|
70
|
+
@agreement=@user.send(:handle_response,@response)
|
71
|
+
@agreement.permalink.should=='my_agreement'
|
72
|
+
@agreement.title.should=='hello there'
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
metadata
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: agree2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pelle Braendgaard
|
8
|
+
- Lau Taarnskov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2008-08-23 00:00:00 -04:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: ruby-hmac
|
18
|
+
type: :runtime
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 0.3.1
|
25
|
+
version:
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: oauth
|
28
|
+
type: :runtime
|
29
|
+
version_requirement:
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 0.2.4
|
35
|
+
version:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: json
|
38
|
+
type: :runtime
|
39
|
+
version_requirement:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 1.1.3
|
45
|
+
version:
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: activesupport
|
48
|
+
type: :runtime
|
49
|
+
version_requirement:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.0.2
|
55
|
+
version:
|
56
|
+
description: Agree2 Ruby client library
|
57
|
+
email:
|
58
|
+
- support@agree2.com
|
59
|
+
executables: []
|
60
|
+
|
61
|
+
extensions: []
|
62
|
+
|
63
|
+
extra_rdoc_files:
|
64
|
+
- History.txt
|
65
|
+
- License.txt
|
66
|
+
- README.rdoc
|
67
|
+
files:
|
68
|
+
- History.txt
|
69
|
+
- License.txt
|
70
|
+
- README.rdoc
|
71
|
+
- Rakefile
|
72
|
+
- lib/agree2.rb
|
73
|
+
- lib/agree2/base.rb
|
74
|
+
- lib/agree2/client.rb
|
75
|
+
- lib/agree2/user.rb
|
76
|
+
- lib/agree2/agreement.rb
|
77
|
+
- lib/agree2/party.rb
|
78
|
+
- lib/agree2/proxy_collection.rb
|
79
|
+
- lib/agree2/template.rb
|
80
|
+
has_rdoc: true
|
81
|
+
homepage: http://agree2.rubyforge.org
|
82
|
+
licenses: []
|
83
|
+
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options:
|
86
|
+
- --main
|
87
|
+
- README.rdoc
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: "0"
|
95
|
+
version:
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: "0"
|
101
|
+
version:
|
102
|
+
requirements: []
|
103
|
+
|
104
|
+
rubyforge_project: agree2
|
105
|
+
rubygems_version: 1.3.2
|
106
|
+
signing_key:
|
107
|
+
specification_version: 2
|
108
|
+
summary: Agree2 Ruby client library
|
109
|
+
test_files:
|
110
|
+
- spec/spec_helper.rb
|
111
|
+
- spec/agreement_spec.rb
|
112
|
+
- spec/client_spec.rb
|
113
|
+
- spec/party_spec.rb
|
114
|
+
- spec/proxy_collection_spec.rb
|
115
|
+
- spec/template_spec.rb
|
116
|
+
- spec/user_spec.rb
|
117
|
+
- spec/fixtures/agreement.json
|
118
|
+
- spec/fixtures/party.json
|