codefumes 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/History.txt +9 -0
- data/Manifest.txt +13 -4
- data/Rakefile +1 -1
- data/bin/cf_release_project +10 -0
- data/bin/{store_codefumes_credentials → cf_store_credentials} +2 -2
- data/lib/cf_claim_project/cli.rb +20 -6
- data/lib/cf_release_project/cli.rb +76 -0
- data/lib/{store_codefumes_credentials → cf_store_credentials}/cli.rb +2 -2
- data/lib/codefumes/api.rb +9 -4
- data/lib/codefumes/claim.rb +37 -4
- data/lib/codefumes/config_file.rb +4 -0
- data/lib/codefumes/project.rb +1 -1
- data/lib/codefumes.rb +1 -1
- data/spec/cf_release_project/cli_spec.rb +41 -0
- data/spec/{store_codefumes_credentials → cf_store_credentials}/cli_spec.rb +11 -6
- data/spec/codefumes/api_spec.rb +3 -3
- data/spec/codefumes/claim_spec.rb +46 -9
- data/spec/codefumes/commit_spec.rb +39 -52
- data/spec/codefumes/config_file_spec.rb +16 -0
- data/spec/codefumes/payload_spec.rb +35 -41
- data/spec/codefumes/project_spec.rb +41 -85
- data/spec/codefumes_service_helpers.rb +101 -0
- data/spec/fixtures/commit.xml +22 -0
- data/spec/fixtures/commit_with_custom_attrs.xml +26 -0
- data/spec/fixtures/multiple_commits.xml +78 -0
- data/spec/fixtures/payload.xml +4 -0
- data/spec/fixtures/project.xml +12 -0
- data/spec/fixtures/project_update.xml +12 -0
- data/spec/spec_helper.rb +10 -2
- metadata +40 -12
- data/spec/codefumes_service_stubs.rb +0 -54
@@ -1,11 +1,23 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
2
|
|
3
|
-
include CodeFumesServiceStubs
|
4
|
-
|
5
3
|
describe "Commit" do
|
4
|
+
include CodeFumesServiceHelpers::Commit
|
5
|
+
|
6
6
|
before(:all) do
|
7
|
-
@identifier = "f3badd5624dfbcf5176f0471261731e1b92ce957"
|
8
7
|
FakeWeb.allow_net_connect = false
|
8
|
+
|
9
|
+
@project_name = "Project_Name(tm)"
|
10
|
+
@pub_key = 'public_key_value'
|
11
|
+
@priv_key = 'private_key_value'
|
12
|
+
@anonymous_base_uri = "http://codefumes.com/api/v1/xml"
|
13
|
+
@authenticated_base_uri = "http://#{@pub_key}:#{@priv_key}@codefumes.com/api/v1/xml/projects"
|
14
|
+
@project = Project.new(:public_key => @pub_key,
|
15
|
+
:private_key => @priv_key,
|
16
|
+
:name => @project_name)
|
17
|
+
@authd_project_api_uri = "#{@authenticated_base_uri}/projects/#{@pub_key}"
|
18
|
+
@anon_project_api_uri = "#{@anonymous_base_uri}/projects/#{@pub_key}"
|
19
|
+
@basic_auth_params = {:username => @pub_key, :password => @priv_key}
|
20
|
+
@identifier = "f3badd5624dfbcf5176f0471261731e1b92ce957"
|
9
21
|
end
|
10
22
|
|
11
23
|
after(:all) do
|
@@ -15,7 +27,7 @@ describe "Commit" do
|
|
15
27
|
describe "find" do
|
16
28
|
context "with a valid commit identifier" do
|
17
29
|
before(:each) do
|
18
|
-
|
30
|
+
register_find_uri
|
19
31
|
@commit = Commit.find(@identifier)
|
20
32
|
end
|
21
33
|
|
@@ -44,8 +56,7 @@ describe "Commit" do
|
|
44
56
|
|
45
57
|
context "with a non-existant commit identifier" do
|
46
58
|
before(:each) do
|
47
|
-
|
48
|
-
stub_codefumes_uri("commits/#{@identifier}", ["404", "Not Found"], "")
|
59
|
+
register_find_uri(["404", "Not Found"], "")
|
49
60
|
end
|
50
61
|
|
51
62
|
it "returns nil" do
|
@@ -55,85 +66,65 @@ describe "Commit" do
|
|
55
66
|
end
|
56
67
|
|
57
68
|
describe "calling 'latest'" do
|
58
|
-
before(:each) do
|
59
|
-
@project_public_key = "apk"
|
60
|
-
@request_uri = "projects/#{@project_public_key}/commits/latest"
|
61
|
-
end
|
62
|
-
|
63
69
|
context "with valid parameters" do
|
64
|
-
before(:each) do
|
65
|
-
stub_codefumes_uri(@request_uri, ["200", "Ok"], single_commit)
|
66
|
-
end
|
67
|
-
|
68
70
|
it "returns a commit object for the latest commit" do
|
69
|
-
|
71
|
+
register_latest_uri
|
72
|
+
Commit.latest(@pub_key).identifier.should == @identifier
|
70
73
|
end
|
71
74
|
end
|
72
75
|
|
73
76
|
context "with invalid parameters" do
|
74
|
-
before(:each) do
|
75
|
-
stub_codefumes_uri(@request_uri, ["404", "Not Found"], single_commit)
|
76
|
-
end
|
77
|
-
|
78
77
|
it "returns nil" do
|
79
|
-
|
78
|
+
register_latest_uri(["404", "Not Found"], "")
|
79
|
+
Commit.latest(@pub_key).should == nil
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
84
|
describe "calling 'latest_identifier'" do
|
85
|
-
before(:each) do
|
86
|
-
@project_public_key = "apk"
|
87
|
-
@request_uri = "projects/#{@project_public_key}/commits/latest"
|
88
|
-
end
|
89
|
-
|
90
85
|
context "with valid parameters" do
|
91
86
|
context "when the specified project has commits stored" do
|
92
87
|
it "returns the commit identifier of the latest commit" do
|
93
|
-
|
94
|
-
Commit.latest_identifier(@
|
88
|
+
register_latest_uri
|
89
|
+
Commit.latest_identifier(@pub_key).should == @identifier
|
95
90
|
end
|
96
91
|
end
|
97
92
|
|
98
93
|
context "when the specified project does not have any commits stored" do
|
99
94
|
it "returns nil" do
|
100
|
-
|
101
|
-
Commit.latest_identifier(@
|
95
|
+
register_latest_uri(["404", "Not Found"], "")
|
96
|
+
Commit.latest_identifier(@pub_key).should == nil
|
102
97
|
end
|
103
98
|
end
|
104
99
|
end
|
105
100
|
|
106
101
|
context "with invalid parameters" do
|
107
102
|
it "returns nil" do
|
108
|
-
|
109
|
-
Commit.latest(@
|
103
|
+
register_latest_uri(["404", "Not Found"], "")
|
104
|
+
Commit.latest(@pub_key).should == nil
|
110
105
|
end
|
111
106
|
end
|
112
107
|
end
|
113
108
|
|
114
109
|
describe "calling 'all'" do
|
115
|
-
before(:each) do
|
116
|
-
@project_public_key = "apk"
|
117
|
-
end
|
118
|
-
|
119
110
|
context "with valid parameters" do
|
120
111
|
it "returns an array of commits" do
|
121
112
|
register_index_uri
|
122
|
-
Commit.all(@
|
113
|
+
Commit.all(@pub_key).should have(3).items
|
123
114
|
end
|
124
115
|
end
|
125
116
|
|
126
117
|
context "with invalid parameters" do
|
127
118
|
it "returns nil" do
|
128
|
-
|
129
|
-
Commit.all(@
|
119
|
+
register_index_uri(["404", "Not Found"], "")
|
120
|
+
Commit.all(@pub_key).should == nil
|
130
121
|
end
|
131
122
|
end
|
132
123
|
end
|
133
124
|
|
134
125
|
describe "the convenience method" do
|
135
126
|
before(:each) do
|
136
|
-
|
127
|
+
register_find_uri
|
137
128
|
@email = "jdoe@example.com"
|
138
129
|
@name = "John Doe"
|
139
130
|
@commit = Commit.find(@identifier)
|
@@ -155,31 +146,27 @@ describe "Commit" do
|
|
155
146
|
end
|
156
147
|
|
157
148
|
describe "accessing custom metrics" do
|
158
|
-
before(:each) do
|
159
|
-
@project_public_key = "apk"
|
160
|
-
end
|
161
|
-
|
162
149
|
context "when the commit does not have any custom attributes" do
|
163
150
|
before(:each) do
|
164
|
-
|
151
|
+
register_latest_uri
|
165
152
|
end
|
166
153
|
|
167
154
|
it "returns an empty Hash" do
|
168
|
-
Commit.latest(@
|
155
|
+
Commit.latest(@pub_key).custom_attributes.should == {}
|
169
156
|
end
|
170
157
|
end
|
171
158
|
|
172
159
|
context "when the commit has defined custom attributes" do
|
173
160
|
before(:each) do
|
174
|
-
|
175
|
-
|
161
|
+
register_latest_uri(["200", "Ok"], fixtures[:commit_with_custom_attrs])
|
162
|
+
@commit = Commit.latest(@pub_key)
|
176
163
|
end
|
177
164
|
|
178
165
|
it "returns a Hash of key-value pairs (attribute_name -> attribute_value)" do
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
166
|
+
@commit.custom_attributes.should be_instance_of(Hash)
|
167
|
+
@commit.custom_attributes[:coverage].should == "83"
|
168
|
+
@commit.custom_attributes[:random_attribute].should == "1"
|
169
|
+
@commit.custom_attributes.size.should == 2
|
183
170
|
end
|
184
171
|
end
|
185
172
|
end
|
@@ -226,4 +226,20 @@ describe "ConfigFile" do
|
|
226
226
|
end
|
227
227
|
end
|
228
228
|
end
|
229
|
+
|
230
|
+
describe "calling 'api_key'" do
|
231
|
+
context "when credentials exist in the file" do
|
232
|
+
it "returns the API key stored in the file" do
|
233
|
+
api_key_value = "API_KEY"
|
234
|
+
ConfigFile.save_credentials(api_key_value)
|
235
|
+
ConfigFile.api_key.should == api_key_value
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
context "when no credentials exist in the file" do
|
240
|
+
it "returns an empty Hash" do
|
241
|
+
ConfigFile.api_key.should == nil
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
229
245
|
end
|
@@ -1,57 +1,54 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
2
|
|
3
|
+
module PayloadSpecHelper
|
4
|
+
end
|
5
|
+
|
3
6
|
describe "Payload" do
|
7
|
+
include CodeFumesServiceHelpers::Payload
|
8
|
+
|
4
9
|
after(:all) do
|
5
10
|
FakeWeb.allow_net_connect = false
|
6
11
|
FakeWeb.clean_registry
|
7
12
|
end
|
8
13
|
|
14
|
+
before(:each) do
|
15
|
+
setup_fixture_base
|
16
|
+
@payload = Payload.new(:public_key => @pub_key, :private_key => @priv_key, :content => {:commits => @commit_data})
|
17
|
+
@payload_query = {:payload => {:commits => @commit_data}}
|
18
|
+
@basic_auth_params = {:username => @pub_key, :password => @priv_key}
|
19
|
+
end
|
20
|
+
|
9
21
|
describe "save" do
|
10
|
-
|
11
|
-
|
22
|
+
it "sets basic auth with the public and private key" do
|
23
|
+
register_create_uri(["401", "Unauthorized"], "")
|
24
|
+
Payload.should_receive(:post).with("/projects/#{@project.public_key}/payloads", :query => @payload_query, :basic_auth => @basic_auth_params).and_return(mock("response", :code => 401))
|
25
|
+
@payload.save
|
12
26
|
end
|
13
27
|
|
14
28
|
context "with valid parameters" do
|
15
29
|
before(:each) do
|
16
|
-
|
17
|
-
:status => ["201", "Created"],
|
18
|
-
:string => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<payload>\n <created_at>Creation Date</created_at>\n </payload>\n")
|
30
|
+
register_create_uri(["201", "Created"])
|
19
31
|
end
|
20
32
|
|
21
|
-
it "sets
|
22
|
-
payload
|
23
|
-
|
24
|
-
payload.
|
33
|
+
it "sets a value for 'created_at'" do
|
34
|
+
@payload.created_at.should == nil
|
35
|
+
@payload.save.should == true
|
36
|
+
@payload.created_at.should_not == nil
|
25
37
|
end
|
38
|
+
end
|
26
39
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
payload = Payload.new(:public_key => @project.public_key, :content => {:commits => "data_to_send_up"})
|
31
|
-
payload.send(method_name).should == nil
|
32
|
-
payload.save.should == true
|
33
|
-
payload.send(method_name).should_not == nil
|
34
|
-
end
|
35
|
-
end
|
40
|
+
context "with Unauthorized response" do
|
41
|
+
before(:each) do
|
42
|
+
register_create_uri(["401", "Unauthorized"], "")
|
36
43
|
end
|
37
44
|
|
38
|
-
|
39
|
-
|
40
|
-
@
|
41
|
-
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
[:created_at].each do |method_name|
|
46
|
-
it "sets the '#{method_name.to_s}'" do
|
47
|
-
payload = Payload.new(:public_key => @project.public_key, :content => {:commits => "data_to_send_up"})
|
48
|
-
payload.send(method_name).should == nil
|
49
|
-
payload.save.should == false
|
50
|
-
payload.send(method_name).should == nil
|
51
|
-
end
|
45
|
+
[:created_at].each do |method_name|
|
46
|
+
it "sets the '#{method_name.to_s}'" do
|
47
|
+
@payload.send(method_name).should == nil
|
48
|
+
@payload.save.should == false
|
49
|
+
@payload.send(method_name).should == nil
|
52
50
|
end
|
53
51
|
end
|
54
|
-
|
55
52
|
end
|
56
53
|
|
57
54
|
context "when the payload does not have any content" do
|
@@ -60,6 +57,7 @@ describe "Payload" do
|
|
60
57
|
end
|
61
58
|
|
62
59
|
it "returns true without attempting to save to the site" do
|
60
|
+
Payload.should_not_receive(:post)
|
63
61
|
@payload.save.should == true
|
64
62
|
end
|
65
63
|
|
@@ -71,16 +69,12 @@ describe "Payload" do
|
|
71
69
|
|
72
70
|
context "with invalid parameters" do
|
73
71
|
before(:each) do
|
74
|
-
|
75
|
-
:status => ["422", "Unprocessable Entity"])
|
72
|
+
register_create_uri
|
76
73
|
end
|
77
74
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
payload.save.should == false
|
82
|
-
payload.send(method_name).should == nil
|
83
|
-
end
|
75
|
+
it "does not set a value for 'created_at'" do
|
76
|
+
@payload.save.should == false
|
77
|
+
@payload.created_at.should == nil
|
84
78
|
end
|
85
79
|
end
|
86
80
|
end
|
@@ -1,29 +1,12 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper.rb'
|
2
2
|
|
3
|
-
def register_create_uri
|
4
|
-
FakeWeb.register_uri( :post, "http://www.codefumes.com:80/api/v1/xml/projects?project[name]=&project[public_key]=",
|
5
|
-
:status => ["201", "Created"],
|
6
|
-
:string => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project>\n <access-secret nil=\"true\"></access-secret>\n <created-at type=\"datetime\">2009-04-29T23:18:03Z</created-at>\n <public-key>foofoolerue</public-key>\n <private-key>foobarbaz</private-key>\n <updated-at type=\"datetime\">2009-04-29T23:18:03Z</updated-at>\n <short_uri>http://www.codefumes.com/p/foofoolerue</short_uri>\n <community_uri>http://www.codefumes.com/community/projects/1</community_uri>\n <api-uri>http://www.codefumes.com/api/v1/xml/projects/1.xml</api-uri>\n</project>")
|
7
|
-
end
|
8
|
-
|
9
|
-
def register_update_uri(public_key = "public_key_value", project_name = "The Project Name(tm)")
|
10
|
-
response = {:status => ["200", "Ok"], :string => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project>\n <access-secret nil=\"true\"></access-secret>\n <created-at type=\"datetime\">2009-04-29T23:18:03Z</created-at>\n <public-key>existing_public_key</public-key>\n <private-key>private_key_value</private-key>\n <updated-at type=\"datetime\">2009-04-29T23:18:03Z</updated-at>\n <short_uri>http://www.codefumes.com/p/#{public_key}</short_uri>\n <community_uri>http://www.codefumes.com/community/projects/#{public_key}</community_uri>\n <api-uri>http://www.codefumes.com/api/v1/xml/projects/#{public_key}.xml</api-uri>\n <name>#{project_name}</name>\n</project>\n"}
|
11
|
-
FakeWeb.register_uri(:put, "http://www.codefumes.com/api/v1/xml/projects/existing_public_key?project[name]=#{project_name}",
|
12
|
-
response)
|
13
|
-
end
|
14
|
-
|
15
|
-
def register_show_uri(public_key = "public_key_value", project_name = "The Project Name(tm)", status_code = ["200", "Ok"])
|
16
|
-
FakeWeb.register_uri(:get, "http://www.codefumes.com/api/v1/xml/projects/#{public_key}",
|
17
|
-
:status => status_code,
|
18
|
-
:string => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project>\n <access-secret nil=\"true\"></access-secret>\n <created-at type=\"datetime\">2009-04-29T23:18:03Z</created-at>\n <public-key>#{public_key}</public-key>\n <private-key>private_key_value</private-key>\n <updated-at type=\"datetime\">2009-04-29T23:18:03Z</updated-at>\n <short_uri>http://www.codefumes.com/p/#{public_key}</short_uri>\n <community_uri>http://www.codefumes.com/community/projects/#{public_key}</community_uri>\n <api-uri>http://www.codefumes.com/api/v1/xml/projects/#{public_key}.xml</api-uri>\n <name>original_name</name>\n</project>\n")
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
|
23
3
|
describe "Project" do
|
4
|
+
include CodeFumesServiceHelpers::Project
|
5
|
+
|
24
6
|
before(:each) do
|
7
|
+
setup_fixture_base
|
25
8
|
end
|
26
|
-
|
9
|
+
|
27
10
|
after(:all) do
|
28
11
|
FakeWeb.allow_net_connect = false
|
29
12
|
FakeWeb.clean_registry
|
@@ -33,7 +16,7 @@ describe "Project" do
|
|
33
16
|
context "with valid parameters" do
|
34
17
|
context "when the public key has not been taken yet (or no key provided)" do
|
35
18
|
before(:each) do
|
36
|
-
|
19
|
+
register_no_param_create_uri
|
37
20
|
end
|
38
21
|
|
39
22
|
[ :public_key,
|
@@ -44,30 +27,31 @@ describe "Project" do
|
|
44
27
|
it "sets the '#{method_name.to_s}'" do
|
45
28
|
project = CodeFumes::Project.new
|
46
29
|
project.send(method_name).should be_nil
|
47
|
-
|
48
|
-
|
30
|
+
project.save
|
31
|
+
project.send(method_name).should_not be_nil
|
49
32
|
end
|
50
33
|
end
|
51
34
|
end
|
52
35
|
|
53
36
|
context "when the public key has already been taken" do
|
54
|
-
|
55
37
|
context "when response is success" do
|
56
38
|
before(:each) do
|
57
|
-
@
|
58
|
-
|
59
|
-
|
60
|
-
register_update_uri(@project.public_key, @updated_name)
|
39
|
+
@project.name = @updated_name
|
40
|
+
register_show_uri
|
41
|
+
register_update_uri
|
61
42
|
@project.stub!(:exists?).and_return(true)
|
62
43
|
@project.save.should be_true
|
63
44
|
end
|
64
|
-
|
45
|
+
|
65
46
|
it "sets basic auth with the public and private key" do
|
66
47
|
Project.should_receive(:put).with("/projects/#{@project.public_key}", :query => {:project => {:name => @updated_name}}, :basic_auth => {:username => @project.public_key, :password => @project.private_key}).and_return(mock("response", :code => 401))
|
67
48
|
@project.save
|
68
49
|
end
|
69
|
-
|
50
|
+
|
70
51
|
it "updates the value of 'name' for the project associated with the supplied public key" do
|
52
|
+
# This seems like a pointless assertion, since it's being set in the before block, but it
|
53
|
+
# wouldn't be true if request was not successful, as #name is updated w/ the content
|
54
|
+
# returned in the response
|
71
55
|
@project.name.should == @updated_name
|
72
56
|
end
|
73
57
|
|
@@ -82,43 +66,41 @@ describe "Project" do
|
|
82
66
|
end
|
83
67
|
end
|
84
68
|
end
|
69
|
+
|
85
70
|
context "respons is Unauthorized" do
|
86
71
|
before(:each) do
|
87
72
|
@updated_name = "different_name"
|
88
|
-
@project = CodeFumes::Project.new(:public_key =>
|
89
|
-
FakeWeb.register_uri(:put, "http
|
73
|
+
@project = CodeFumes::Project.new(:public_key => 'existing_public_key', :private_key => 'bad_key', :name => @updated_name)
|
74
|
+
FakeWeb.register_uri(:put, "http://#{@project.public_key}:#{@project.private_key}@codefumes.com/api/v1/xml/projects/existing_public_key?project[name]=#{@project.name}",
|
90
75
|
:status => ["401", "Unauthorized"])
|
91
76
|
@project.stub!(:exists?).and_return(true)
|
92
77
|
end
|
93
78
|
it "returns false" do
|
94
79
|
@project.save.should be_false
|
95
|
-
end
|
80
|
+
end
|
96
81
|
end
|
97
82
|
end
|
98
83
|
end
|
99
84
|
|
100
85
|
context "with invalid parameters" do
|
101
86
|
before(:each) do
|
102
|
-
|
103
|
-
|
87
|
+
register_show_uri(["404", "Not found"], "")
|
88
|
+
register_no_param_create_uri(["422", "Unprocessable Entity"], "")
|
104
89
|
end
|
105
90
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
project.send(method_name).should be_nil
|
111
|
-
end
|
91
|
+
it "does not set the 'private_key'" do
|
92
|
+
project = Project.new
|
93
|
+
project.save.should be_false
|
94
|
+
project.private_key.should be_nil
|
112
95
|
end
|
113
96
|
end
|
114
97
|
end
|
115
98
|
|
116
99
|
context "delete" do
|
117
100
|
before(:each) do
|
118
|
-
|
119
|
-
FakeWeb.register_uri( :delete, "http://www.codefumes.com/api/v1/xml/projects/#{@project.public_key}",
|
101
|
+
FakeWeb.register_uri( :delete, @authd_project_api_uri,
|
120
102
|
:status => ["200", "Successful"],
|
121
|
-
:
|
103
|
+
:body => "")
|
122
104
|
end
|
123
105
|
|
124
106
|
it "sets basic auth with the public and private key" do
|
@@ -133,33 +115,18 @@ describe "Project" do
|
|
133
115
|
end
|
134
116
|
|
135
117
|
context "with Unauthorized response" do
|
136
|
-
before(:each) do
|
137
|
-
@project = Project.new(:public_key => 'public_key_value')
|
138
|
-
FakeWeb.register_uri( :delete, "http://www.codefumes.com/api/v1/xml/projects/#{@project.public_key}",
|
139
|
-
:status => ["401", "Unauthorized"],
|
140
|
-
:string => "")
|
141
|
-
end
|
142
|
-
|
143
118
|
it "returns false when invalid Unauthorized response is received" do
|
119
|
+
register_delete_uri(["401", "Unauthorized"], "")
|
144
120
|
@project.delete.should be_false
|
145
121
|
end
|
146
122
|
end
|
147
123
|
end
|
148
124
|
|
149
125
|
describe "exists?" do
|
150
|
-
before(:each) do
|
151
|
-
@public_key = "some_public_key"
|
152
|
-
end
|
153
|
-
|
154
126
|
context "when the specified public_key has been reserved already" do
|
155
|
-
before(:each) do
|
156
|
-
FakeWeb.register_uri(:get, "http://www.codefumes.com/api/v1/xml/projects/#{@public_key}",
|
157
|
-
:status => ["200", "Ok"],
|
158
|
-
:string => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project>\n <access-secret nil=\"true\"></access-secret>\n <created-at type=\"datetime\">2009-04-29T23:18:03Z</created-at>\n <public-key>foofoolerue</public-key>\n <private-key>foobarbaz</private-key>\n <updated-at type=\"datetime\">2009-04-29T23:18:03Z</updated-at>\n <short_uri>http://www.codefumes.com/p/foofoolerue</short_uri>\n <community_uri>http://www.codefumes.com/community/projects/1</community_uri>\n <api-uri>http://www.codefumes.com/api/v1/xml/projects/1.xml</api-uri>\n <name>original_name</name>\n")
|
159
|
-
end
|
160
|
-
|
161
127
|
it "returns true" do
|
162
|
-
|
128
|
+
register_show_uri
|
129
|
+
Project.new(:public_key => @pub_key).exists?.should be_true
|
163
130
|
end
|
164
131
|
end
|
165
132
|
|
@@ -175,25 +142,19 @@ describe "Project" do
|
|
175
142
|
|
176
143
|
context "when the specified public_key is available" do
|
177
144
|
before(:each) do
|
178
|
-
|
179
|
-
:status => ["404", "Not Found"],
|
180
|
-
:string => "")
|
181
|
-
|
145
|
+
register_show_uri(["404", "Not Found"], "")
|
182
146
|
end
|
183
147
|
|
184
148
|
it "returns false" do
|
185
|
-
Project.new(:public_key => @
|
149
|
+
Project.new(:public_key => @pub_key).exists?.should be_false
|
186
150
|
end
|
187
151
|
end
|
188
152
|
end
|
189
153
|
|
190
154
|
describe "to_config" do
|
191
155
|
before(:each) do
|
156
|
+
register_show_uri(["404", "Not Found"], "")
|
192
157
|
register_create_uri
|
193
|
-
FakeWeb.register_uri( :post, "http://www.codefumes.com:80/api/v1/xml/projects?project[name]=&project[public_key]=",
|
194
|
-
:status => ["201", "Created"],
|
195
|
-
:string => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project>\n <access-secret nil=\"true\"></access-secret>\n <created-at type=\"datetime\">2009-04-29T23:18:03Z</created-at>\n <public-key>foofoolerue</public-key>\n <private-key>foobarbaz</private-key>\n <updated-at type=\"datetime\">2009-04-29T23:18:03Z</updated-at>\n <short_uri>http://www.codefumes.com/p/foofoolerue</short_uri>\n <community_uri>http://www.codefumes.com/community/projects/1</community_uri>\n <api-uri>http://www.codefumes.com/api/v1/xml/projects/1.xml</api-uri>\n</project>")
|
196
|
-
@project = Project.new
|
197
158
|
@project.save
|
198
159
|
end
|
199
160
|
|
@@ -209,7 +170,7 @@ describe "Project" do
|
|
209
170
|
end
|
210
171
|
end
|
211
172
|
end
|
212
|
-
|
173
|
+
|
213
174
|
it "doesn't include the private_key in the hash if it is nil" do
|
214
175
|
public_key = "key_to_happiness"
|
215
176
|
Project.new(:public_key => public_key).to_config[public_key.to_sym].should_not have_key(:private_key)
|
@@ -259,32 +220,27 @@ describe "Project" do
|
|
259
220
|
describe "calling the class method" do
|
260
221
|
describe "'find'" do
|
261
222
|
context "and specifying a public_key which is already associated to a project on the site" do
|
262
|
-
before(:each) do
|
263
|
-
@public_key = "an_existing_public_key"
|
264
|
-
register_show_uri(@public_key)
|
265
|
-
end
|
266
|
-
|
267
223
|
it "returns an initialized instance of the Project class" do
|
224
|
+
register_show_uri
|
268
225
|
expected_config = {
|
269
|
-
|
226
|
+
@pub_key.to_sym =>
|
270
227
|
{
|
271
228
|
:private_key=>"private_key_value",
|
272
|
-
:api_uri=>"http://
|
273
|
-
:short_uri=>"http://
|
229
|
+
:api_uri=>"http://codefumes.com/api/v1/xml/projects/#{@pub_key}.xml",
|
230
|
+
:short_uri=>"http://codefumes.com/p/#{@pub_key}"
|
274
231
|
}
|
275
232
|
}
|
276
|
-
Project.find(@
|
233
|
+
Project.find(@pub_key).to_config.should == expected_config
|
277
234
|
end
|
278
235
|
end
|
279
236
|
|
280
237
|
context "and specifying a public_key which is not associated to any project on the site yet" do
|
281
238
|
before(:each) do
|
282
|
-
|
283
|
-
register_show_uri(@public_key, "Some Name", ["404", "Not Found"])
|
239
|
+
register_show_uri(["404", "Not Found"], "")
|
284
240
|
end
|
285
241
|
|
286
242
|
it "returns nil" do
|
287
|
-
Project.find(@
|
243
|
+
Project.find(@pub_key).should == nil
|
288
244
|
end
|
289
245
|
end
|
290
246
|
end
|