jiralicious 0.1.0 → 0.2.0

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.
Files changed (50) hide show
  1. data/.gitignore +2 -1
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +5 -0
  5. data/README.md +32 -4
  6. data/jiralicious.gemspec +7 -5
  7. data/lib/jiralicious.rb +10 -3
  8. data/lib/jiralicious/base.rb +114 -0
  9. data/lib/jiralicious/configuration.rb +13 -2
  10. data/lib/jiralicious/cookie_session.rb +5 -5
  11. data/lib/jiralicious/custom_field_option.rb +27 -0
  12. data/lib/jiralicious/field.rb +39 -0
  13. data/lib/jiralicious/issue.rb +111 -26
  14. data/lib/jiralicious/issue/comment.rb +62 -0
  15. data/lib/jiralicious/issue/fields.rb +93 -0
  16. data/lib/jiralicious/issue/transitions.rb +92 -0
  17. data/lib/jiralicious/issue/watchers.rb +47 -0
  18. data/lib/jiralicious/parsers/field_parser.rb +2 -2
  19. data/lib/jiralicious/project.rb +44 -0
  20. data/lib/jiralicious/search.rb +4 -1
  21. data/lib/jiralicious/search_result.rb +4 -0
  22. data/lib/jiralicious/version.rb +1 -1
  23. data/spec/basic_session_spec.rb +4 -4
  24. data/spec/comment_spec.rb +64 -0
  25. data/spec/configuration_spec.rb +9 -0
  26. data/spec/fixtures/comment.json +30 -0
  27. data/spec/fixtures/comment_single.json +29 -0
  28. data/spec/fixtures/issue.json +89 -93
  29. data/spec/fixtures/issue_2.json +30 -0
  30. data/spec/fixtures/issue_create.json +5 -0
  31. data/spec/fixtures/issue_createmeta.json +34 -0
  32. data/spec/fixtures/issue_editmeta.json +22 -0
  33. data/spec/fixtures/issue_update.json +164 -0
  34. data/spec/fixtures/jira.yml +7 -0
  35. data/spec/fixtures/project.json +87 -0
  36. data/spec/fixtures/project_issue_list.json +20 -0
  37. data/spec/fixtures/projects.json +22 -0
  38. data/spec/fixtures/search.json +9 -9
  39. data/spec/fixtures/test.json +24 -0
  40. data/spec/fixtures/transitions.json +61 -61
  41. data/spec/fixtures/watchers.json +17 -0
  42. data/spec/issue_spec.rb +255 -21
  43. data/spec/project_spec.rb +55 -0
  44. data/spec/search_result_spec.rb +20 -8
  45. data/spec/search_spec.rb +6 -6
  46. data/spec/support/http.rb +55 -2
  47. data/spec/watchers_spec.rb +43 -0
  48. metadata +154 -100
  49. data/.rvmrc +0 -1
  50. data/spec/cookie_session_spec.rb +0 -268
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm use 1.9.2@jiralicious --create
@@ -1,268 +0,0 @@
1
- # encoding: utf-8
2
- require "spec_helper"
3
-
4
- describe Jiralicious::CookieSession, "when logging in" do
5
- context "successfully" do
6
- before :each do
7
- register_login
8
- @session = Jiralicious::CookieSession.new
9
- @session.login
10
- end
11
-
12
- it "is alive" do
13
- @session.should be_alive
14
- end
15
-
16
- it "populates the session and login info" do
17
- @session.session.should == {
18
- "name" => "JSESSIONID",
19
- "value" => "12345678901234567890"
20
- }
21
- @session.login_info.should == {
22
- "failedLoginCount" => 10,
23
- "loginCount" => 127,
24
- "lastFailedLoginTime" => "2011-07-25T06:31:07.556-0500",
25
- "previousLoginTime" => "2011-07-25T06:31:07.556-0500"
26
- }
27
- end
28
- end
29
-
30
- context "with an invalid login" do
31
- before :each do
32
- FakeWeb.register_uri(:post,
33
- Jiralicious.uri + '/rest/auth/latest/session',
34
- :status => ["401", "Not Authorized"])
35
- @session = Jiralicious::CookieSession.new
36
- end
37
-
38
- it "raises the correct exception" do
39
- lambda { @session.login }.
40
- should raise_error(Jiralicious::InvalidLogin)
41
- end
42
-
43
- it "is not alive" do
44
- begin; @session.login; rescue Jiralicious::InvalidLogin; end
45
- @session.should_not be_alive
46
- end
47
-
48
- it "clears the session and login info" do
49
- @session.login_info = "GARBAGE"
50
- @session.session = "GARBAGE"
51
- begin; @session.login; rescue Jiralicious::InvalidLogin; end
52
- @session.login_info.should be_nil
53
- @session.session.should be_nil
54
- end
55
- end
56
-
57
- context "when CAPTCHA is required" do
58
- before :each do
59
- FakeWeb.register_uri(:post,
60
- Jiralicious.uri + '/rest/auth/latest/session',
61
- :status => ["403", "Captcha Required"])
62
- @session = Jiralicious::CookieSession.new
63
- end
64
-
65
- it "raises an exception" do
66
- lambda { @session.login }.
67
- should raise_error(Jiralicious::CaptchaRequired)
68
- end
69
-
70
- it "clears the session and login info" do
71
- @session.login_info = "GARBAGE"
72
- @session.session = "GARBAGE"
73
- begin; @session.login; rescue Jiralicious::CaptchaRequired; end
74
- @session.login_info.should be_nil
75
- @session.session.should be_nil
76
- end
77
- end
78
-
79
- context "with any other HTTP error" do
80
- before :each do
81
- FakeWeb.register_uri(:post,
82
- Jiralicious.uri + '/rest/auth/latest/session',
83
- :body => "Internal Server Error",
84
- :status => ["500", "Internal Server Error"])
85
- @session = Jiralicious::CookieSession.new
86
- end
87
-
88
- it "raises an exception" do
89
- lambda { @session.login }.
90
- should raise_error(Jiralicious::JiraError)
91
- end
92
-
93
- it "clears the session and login info" do
94
- @session.login_info = "GARBAGE"
95
- @session.session = "GARBAGE"
96
- begin; @session.login; rescue Jiralicious::JiraError; end
97
- @session.login_info.should be_nil
98
- @session.session.should be_nil
99
- end
100
-
101
- it "gives the Net::HTTP reason for failure" do
102
- begin
103
- @session.login
104
- rescue Jiralicious::JiraError => e
105
- e.message.should == "Internal Server Error"
106
- end
107
- end
108
- end
109
- end
110
-
111
- describe Jiralicious::CookieSession, "when logging out" do
112
- before :each do
113
- register_login
114
- @session = Jiralicious::CookieSession.new
115
- @session.login
116
- @session.should be_alive
117
- FakeWeb.register_uri(:delete,
118
- Jiralicious.uri + '/rest/auth/latest/session',
119
- :status => "204")
120
- @session.logout
121
- end
122
-
123
- it "is not alive" do
124
- @session.should_not be_alive
125
- end
126
-
127
- it "clears the session and login info" do
128
- @session.session.should be_nil
129
- @session.login_info.should be_nil
130
- end
131
-
132
- context "when not logged in" do
133
- before :each do
134
- @session = Jiralicious::CookieSession.new
135
- FakeWeb.register_uri(:delete,
136
- Jiralicious.uri + '/rest/auth/latest/session',
137
- :status => ["401", "Not Authorized"])
138
- end
139
-
140
- it "should raise the correct error" do
141
- lambda { @session.logout }.should raise_error(Jiralicious::NotLoggedIn)
142
- end
143
- end
144
-
145
- context "with any other HTTP error" do
146
- before :each do
147
- @session = Jiralicious::CookieSession.new
148
- FakeWeb.register_uri(:delete,
149
- Jiralicious.uri + '/rest/auth/latest/session',
150
- :status => ["500", "Internal Server Error"])
151
- end
152
-
153
- it "raises an exception" do
154
- lambda { @session.logout }.
155
- should raise_error(Jiralicious::JiraError)
156
- end
157
-
158
- it "gives the Net::HTTP reason for failure" do
159
- begin
160
- @session.logout
161
- rescue Jiralicious::JiraError => e
162
- e.message.should == "Internal Server Error"
163
- end
164
- end
165
- end
166
- end
167
-
168
- describe Jiralicious::CookieSession, "performing a request" do
169
- include ConfigurationHelper
170
- include LoginHelper
171
-
172
- before :each do
173
- FakeWeb.register_uri(:get,
174
- Jiralicious.uri + '/fake/uri',
175
- :status => "200")
176
- end
177
-
178
- context "when login is required" do
179
- before :each do
180
- @session = Jiralicious::CookieSession.new
181
- @session.stub!(:require_login?).and_return(true)
182
- end
183
-
184
- it "attempts to log in beforehand" do
185
- @session.should_receive(:login)
186
- @session.request(:get, '/fake/uri')
187
- end
188
- end
189
-
190
- context "when login is not required" do
191
- before :each do
192
- @session = Jiralicious::CookieSession.new
193
- @session.stub!(:require_login?).and_return(false)
194
- end
195
-
196
- it "doesn't try to log in before making the request" do
197
- @session.should_receive(:login).never
198
- @session.request(:get, '/fake/uri')
199
- end
200
- end
201
- end
202
-
203
- describe "performing a request with a successful response" do
204
- before :each do
205
- FakeWeb.register_uri(:get,
206
- Jiralicious.uri + '/ok',
207
- :status => "200")
208
- FakeWeb.register_uri(:post,
209
- Jiralicious.uri + '/created',
210
- :status => "201")
211
- FakeWeb.register_uri(:delete,
212
- Jiralicious.uri + '/nocontent',
213
- :status => "204")
214
-
215
- register_login
216
- end
217
-
218
- let(:session) { Jiralicious::CookieSession.new }
219
-
220
- it "returns the response on ok" do
221
- session.request(:get, '/ok').class.should == HTTParty::Response
222
- end
223
-
224
- it "returns the response on created" do
225
- session.request(:post, '/created').class.should == HTTParty::Response
226
- end
227
-
228
- it "returns the response on no content" do
229
- session.request(:delete, '/nocontent').class.should == HTTParty::Response
230
- end
231
- end
232
-
233
- describe "performing a request with an unsuccessful response" do
234
- before :each do
235
- FakeWeb.register_uri(:get,
236
- Jiralicious.uri + '/cookie_expired',
237
- [
238
- {:status => "401", :body => "Cookie Expired"},
239
- {:status => "200"}
240
- ])
241
- FakeWeb.register_uri(:get,
242
- Jiralicious.uri + '/captcha_needed',
243
- :status => "401",
244
- "X-Seraph-LoginReason" => "AUTHENTICATION_DENIED")
245
- register_login
246
- end
247
-
248
- let(:session) { Jiralicious::CookieSession.new }
249
-
250
- it "raises an exception when cookie invalid" do
251
- FakeWeb.register_uri(:get,
252
- Jiralicious.uri + '/cookie_expired',
253
- [
254
- {:status => "401", :body => "Cookie Expired"},
255
- {:status => "401", :body => "Cookie Expired"}
256
- ])
257
-
258
- lambda {
259
- session.request(:get, '/cookie_expired')
260
- }.should raise_error(Jiralicious::CookieExpired)
261
- end
262
-
263
- it "raises an exception when the captcha is required" do
264
- lambda {
265
- session.request(:get, '/captcha_needed')
266
- }.should raise_error(Jiralicious::CaptchaRequired)
267
- end
268
- end