jira-ruby 1.0.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bb639c7a6da1d81ae6bb693c5891ee23ce1b1e9c
4
- data.tar.gz: 331cd7e819faa9cc056045413d968793a238baa9
3
+ metadata.gz: d616cf8d52b0dff3a17a4381b03160eef8e15755
4
+ data.tar.gz: 7823abec7764565a45a94d061d6f19d1e164b227
5
5
  SHA512:
6
- metadata.gz: e8e856bf2af0be3d9b40b300167117c263c6ffda85fb70001c7fd3c2c59b05eab6561ac2f684786175dcf707d6b5ab9a606b92a17a3278cde73f119fb047d4ff
7
- data.tar.gz: cc19f33cb2c9455045ff0f1d8368a639963dee01c3c313a39e6e49b026d354dd8f0ef2586773b8153b78c51868466bafbd452aac77ba2641c4f697fd22e6d9d0
6
+ metadata.gz: 1c35b0d388f24a4e17afb24f4d7a96e21374f4548a672d007c262e3856f8f442d1d56f48fd3eee96eb1b84580022b014cff7f280143a6dd442ea58b9e3e102b5
7
+ data.tar.gz: 72dce2f225e83b9adc8f1e9fe3951ab464439ec90e0cd899df9f353515089c4b6600318e477006504528cbacf755d0ca556065d324ab266fc62d70c1f3242f8a
@@ -20,10 +20,10 @@ Gem::Specification.new do |s|
20
20
 
21
21
  # Rubtime Dependencies
22
22
  s.add_runtime_dependency 'oauth', '~> 0.5', '>= 0.5.0'
23
- s.add_runtime_dependency 'activesupport', '~> 4.2', '>= 4.2.0'
23
+ s.add_runtime_dependency 'activesupport'
24
24
 
25
25
  # Development Dependencies
26
- s.add_development_dependency 'railties', '~> 4.2', '>= 4.2.0'
26
+ s.add_development_dependency 'railties'
27
27
  s.add_development_dependency 'webmock', '~> 1.18', '>= 1.18.0'
28
28
  s.add_development_dependency 'rspec', '~> 3.0', '>= 3.0.0'
29
29
  s.add_development_dependency 'rake', '~> 10.3', '>= 10.3.2'
@@ -66,8 +66,13 @@ module JIRA
66
66
  @consumer = @request_client.consumer
67
67
  when :basic
68
68
  @request_client = HttpClient.new(@options)
69
+ when :cookie
70
+ raise ArgumentError, 'Options: :use_cookies must be true for :cookie authorization type' if @options.key?(:use_cookies) && !@options[:use_cookies]
71
+ @options[:use_cookies] = true
72
+ @request_client = HttpClient.new(@options)
73
+ @request_client.make_cookie_auth_request
69
74
  else
70
- raise ArgumentError, 'Options: ":auth_type" must be ":oauth" or ":basic"'
75
+ raise ArgumentError, 'Options: ":auth_type" must be ":oauth", ":cookie" or ":basic"'
71
76
  end
72
77
 
73
78
  @http_debug = @options[:http_debug]
@@ -17,6 +17,11 @@ module JIRA
17
17
  @cookies = {}
18
18
  end
19
19
 
20
+ def make_cookie_auth_request
21
+ body = { :username => @options[:username], :password => @options[:password] }.to_json
22
+ make_request(:post, '/rest/auth/1/session', body, {'Content-Type' => 'application/json'})
23
+ end
24
+
20
25
  def make_request(http_method, path, body='', headers={})
21
26
  request = Net::HTTP.const_get(http_method.to_s.capitalize).new(path, headers)
22
27
  request.body = body unless body.nil?
@@ -1,4 +1,4 @@
1
- require 'jira'
1
+ require 'jira-ruby'
2
2
  require 'rails'
3
3
 
4
4
  module JIRA
@@ -62,6 +62,9 @@ module JIRA
62
62
 
63
63
  response = client.get(url)
64
64
  json = parse_json(response.body)
65
+ if options[:max_results] and options[:max_results] == 0
66
+ return json['total']
67
+ end
65
68
  json['issues'].map do |issue|
66
69
  client.Issue.build(issue)
67
70
  end
@@ -1,3 +1,3 @@
1
1
  module JIRA
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -1,6 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe JIRA::Client do
4
+ before(:each) do
5
+ stub_request(:post, "https://foo:bar@localhost:2990/rest/auth/1/session").
6
+ to_return(:status => 200, :body => "", :headers => {})
7
+ end
4
8
 
5
9
  let(:oauth_client) do
6
10
  JIRA::Client.new({ :consumer_key => 'foo', :consumer_secret => 'bar' })
@@ -10,7 +14,11 @@ describe JIRA::Client do
10
14
  JIRA::Client.new({ :username => 'foo', :password => 'bar', :auth_type => :basic })
11
15
  end
12
16
 
13
- let(:clients) { [oauth_client, basic_client] }
17
+ let(:cookie_client) do
18
+ JIRA::Client.new({ :username => 'foo', :password => 'bar', :auth_type => :cookie })
19
+ end
20
+
21
+ let(:clients) { [oauth_client, basic_client, cookie_client] }
14
22
 
15
23
  let(:response) do
16
24
  response = double("response")
@@ -54,11 +62,13 @@ describe JIRA::Client do
54
62
  specify "that are of the correct class" do
55
63
  expect(oauth_client.request_client.class).to eq(JIRA::OauthClient)
56
64
  expect(basic_client.request_client.class).to eq(JIRA::HttpClient)
65
+ expect(cookie_client.request_client.class).to eq(JIRA::HttpClient)
57
66
  end
58
67
 
59
68
  specify "which have a corresponding auth type option" do
60
69
  expect(oauth_client.options[:auth_type]).to eq(:oauth)
61
70
  expect(basic_client.options[:auth_type]).to eq(:basic)
71
+ expect(cookie_client.options[:auth_type]).to eq(:cookie)
62
72
  end
63
73
 
64
74
  describe "like oauth" do
@@ -93,8 +103,12 @@ describe JIRA::Client do
93
103
  it "sets the username and password" do
94
104
  expect(basic_client.options[:username]).to eq('foo')
95
105
  expect(basic_client.options[:password]).to eq('bar')
106
+
107
+ expect(cookie_client.options[:username]).to eq('foo')
108
+ expect(cookie_client.options[:password]).to eq('bar')
96
109
  end
97
110
  end
111
+
98
112
  end
99
113
 
100
114
  describe "has http methods" do
@@ -106,23 +120,28 @@ describe JIRA::Client do
106
120
  # stubbed response for generic client request method
107
121
  expect(oauth_client).to receive(:request).exactly(5).times.and_return(response)
108
122
  expect(basic_client).to receive(:request).exactly(5).times.and_return(response)
123
+ expect(cookie_client).to receive(:request).exactly(5).times.and_return(response)
109
124
 
110
125
  # response for merging headers for http methods with no body
111
126
  expect(oauth_client).to receive(:merge_default_headers).exactly(3).times.with({})
112
127
  expect(basic_client).to receive(:merge_default_headers).exactly(3).times.with({})
128
+ expect(cookie_client).to receive(:merge_default_headers).exactly(3).times.with({})
113
129
 
114
130
  # response for merging headers for http methods with body
115
131
  expect(oauth_client).to receive(:merge_default_headers).exactly(2).times.with(content_type_header)
116
132
  expect(basic_client).to receive(:merge_default_headers).exactly(2).times.with(content_type_header)
133
+ expect(cookie_client).to receive(:merge_default_headers).exactly(2).times.with(content_type_header)
117
134
 
118
135
  [:delete, :get, :head].each do |method|
119
136
  oauth_client.send(method, '/path', {})
120
137
  basic_client.send(method, '/path', {})
138
+ cookie_client.send(method, '/path', {})
121
139
  end
122
140
 
123
141
  [:post, :put].each do |method|
124
142
  oauth_client.send(method, '/path', '', content_type_header)
125
143
  basic_client.send(method, '/path', '', content_type_header)
144
+ cookie_client.send(method, '/path', '', content_type_header)
126
145
  end
127
146
  end
128
147
 
@@ -130,15 +149,19 @@ describe JIRA::Client do
130
149
  [:delete, :get, :head].each do |method|
131
150
  expect(oauth_client).to receive(:request).with(method, '/path', nil, headers).and_return(response)
132
151
  expect(basic_client).to receive(:request).with(method, '/path', nil, headers).and_return(response)
152
+ expect(cookie_client).to receive(:request).with(method, '/path', nil, headers).and_return(response)
133
153
  oauth_client.send(method, '/path', {})
134
154
  basic_client.send(method, '/path', {})
155
+ cookie_client.send(method, '/path', {})
135
156
  end
136
157
 
137
158
  [:post, :put].each do |method|
138
159
  expect(oauth_client).to receive(:request).with(method, '/path', '', merged_headers)
139
160
  expect(basic_client).to receive(:request).with(method, '/path', '', merged_headers)
161
+ expect(cookie_client).to receive(:request).with(method, '/path', '', merged_headers)
140
162
  oauth_client.send(method, '/path', '', {})
141
163
  basic_client.send(method, '/path', '', {})
164
+ cookie_client.send(method, '/path', '', {})
142
165
  end
143
166
  end
144
167
 
@@ -160,10 +183,16 @@ describe JIRA::Client do
160
183
  [:delete, :get, :head].each do |method|
161
184
  expect(basic_client.request_client).to receive(:make_request).with(method, '/path', nil, headers).and_return(response)
162
185
  basic_client.send(method, '/path', headers)
186
+
187
+ expect(cookie_client.request_client).to receive(:make_request).with(method, '/path', nil, headers).and_return(response)
188
+ cookie_client.send(method, '/path', headers)
163
189
  end
164
190
  [:post, :put].each do |method|
165
191
  expect(basic_client.request_client).to receive(:make_request).with(method, '/path', '', merged_headers).and_return(response)
166
192
  basic_client.send(method, '/path', '', headers)
193
+
194
+ expect(cookie_client.request_client).to receive(:make_request).with(method, '/path', '', merged_headers).and_return(response)
195
+ cookie_client.send(method, '/path', '', headers)
167
196
  end
168
197
  end
169
198
  end
@@ -173,16 +202,22 @@ describe JIRA::Client do
173
202
  it "gets all projects" do
174
203
  expect(JIRA::Resource::Project).to receive(:all).with(oauth_client).and_return([])
175
204
  expect(JIRA::Resource::Project).to receive(:all).with(basic_client).and_return([])
205
+ expect(JIRA::Resource::Project).to receive(:all).with(cookie_client).and_return([])
206
+
176
207
  expect(oauth_client.Project.all).to eq([])
177
208
  expect(basic_client.Project.all).to eq([])
209
+ expect(cookie_client.Project.all).to eq([])
178
210
  end
179
211
 
180
212
  it "finds a single project" do
181
213
  find_result = double()
182
214
  expect(JIRA::Resource::Project).to receive(:find).with(oauth_client, '123').and_return(find_result)
183
215
  expect(JIRA::Resource::Project).to receive(:find).with(basic_client, '123').and_return(find_result)
216
+ expect(JIRA::Resource::Project).to receive(:find).with(cookie_client, '123').and_return(find_result)
217
+
184
218
  expect(oauth_client.Project.find('123')).to eq(find_result)
185
219
  expect(basic_client.Project.find('123')).to eq(find_result)
220
+ expect(cookie_client.Project.find('123')).to eq(find_result)
186
221
  end
187
222
  end
188
223
  end
@@ -13,7 +13,7 @@ describe JIRA::Resource::Field do
13
13
  allow(client.Field).to receive(:all).and_return([
14
14
  JIRA::Resource::Field.new(client, :attrs => {'id' =>"customfield_10666", "name" => "Priority", "custom" => true, "orderable" => true, "navigable" => true, "searchable" => true, "clauseNames" => ["cf[10666]","Priority"], "schema" =>{"type" => "string", "custom" => "com.atlassian.jira.plugin.system.customfieldtypes:select","customId" => 10666}}),
15
15
  JIRA::Resource::Field.new(client, :attrs => {'id' =>"issuekey", "name" => "Key", "custom" => false, "orderable" => false, "navigable" => true, "searchable" => false, "clauseNames" => ["id","issue","issuekey","key"]}),
16
- JIRA::Resource::Field.new(client, :attrs => {"id" =>"priority", "name" => "Priority", "custom" => false, "orderable" => true, "navigable" => true, "searchable" => true, "clauseNames" => ["priority"], "schema" =>{"type" => "priority", "system" => "priority"}}),
16
+ JIRA::Resource::Field.new(client, :attrs => {'id' =>"priority", "name" => "Priority", "custom" => false, "orderable" => true, "navigable" => true, "searchable" => true, "clauseNames" => ["priority"], "schema" =>{"type" => "priority", "system" => "priority"}}),
17
17
  JIRA::Resource::Field.new(client, :attrs => {'id' =>"summary", "name" => "Summary", "custom" => false, "orderable" => true, "navigable" => true, "searchable" => true, "clauseNames" => ["summary"], "schema" =>{"type" => "string", "system" => "summary"}}),
18
18
  JIRA::Resource::Field.new(client, :attrs => {'id' =>"issuetype", "name" => "Issue Type", "custom" => false, "orderable" => true, "navigable" => true, "searchable" => true, "clauseNames" => ["issuetype","type"], "schema" =>{"type" => "issuetype", "system" => "issuetype"}}),
19
19
  JIRA::Resource::Field.new(client, :attrs => {'id' =>"customfield_10111", "name" => "SingleWord", "custom" => true, "orderable" => true, "navigable" => true, "searchable" => true, "clauseNames" => ["cf[10111]","SingleWord"], "schema" =>{"type" => "string", "custom" => "com.atlassian.jira.plugin.system.customfieldtypes:select","customId" => 10111}}),
@@ -70,10 +70,6 @@ describe JIRA::Resource::Field do
70
70
  expect(subject.customfield_10111).to eq('data_in_custom_field')
71
71
  end
72
72
 
73
- it "cannot find a mapped field before mapping and raises error" do
74
- expect{subject.SingleWork}.to raise_error(NoMethodError)
75
- end
76
-
77
73
  it "is not confused by common attribute keys and raises error" do
78
74
  expect{subject.name}.to raise_error(NoMethodError)
79
75
  expect{subject.custom}.to raise_error(NoMethodError)
@@ -83,12 +79,6 @@ describe JIRA::Resource::Field do
83
79
 
84
80
  context "after fields are mapped" do
85
81
 
86
- before do
87
- silence_stream(STDERR) do
88
- expect(client.Field.map_fields.class).to eq(Hash)
89
- end
90
- end
91
-
92
82
  include_context "mapped or not"
93
83
 
94
84
  it "warns of duplicate fields" do
@@ -96,37 +86,6 @@ describe JIRA::Resource::Field do
96
86
  expect{client.Field.map_fields}.to output(/renaming as SingleWord_10444/).to_stderr
97
87
  end
98
88
 
99
- it "can find a mapped field after mapping and returns results" do
100
- expect{subject.SingleWord}.to_not raise_error
101
- expect(subject.SingleWord).to eq subject.customfield_10111
102
- end
103
-
104
- it "handles duplicate names in a safe fashion" do
105
- expect{subject.Multi_Word}.to_not raise_error
106
- expect(subject.Multi_Word).to eq subject.customfield_10222
107
- end
108
-
109
- it "handles special characters in a safe fashion" do
110
- expect{subject.Why_N_t}.to_not raise_error
111
- expect(subject.Why_N_t).to eq subject.customfield_10333
112
- end
113
-
114
- it "handles duplicates in custom names" do
115
- expect{subject.SingleWord_10444}.to_not raise_error
116
- expect(subject.SingleWord_10444).to eq subject.customfield_10444
117
- end
118
-
119
- it "keeps custom names from overwriting system names" do
120
- #expect(client.Field.map_fields.class).to eq(Hash)
121
- expect{subject.Priority_10666}.to_not raise_error
122
- expect(subject.Priority_10666).to eq subject.customfield_10666
123
- end
124
-
125
- it "can find a standard field by an expanded name" do
126
- #expect(client.Field.map_fields.class).to eq(Hash)
127
- expect(subject.priority).to eq(1)
128
- expect(subject.Priority).to eq(1)
129
- end
130
89
  end
131
90
  end
132
91
  end
@@ -105,6 +105,18 @@ describe JIRA::Resource::Issue do
105
105
  expect(JIRA::Resource::Issue.jql(client,'foo bar', start_at: 1, max_results: 3)).to eq([''])
106
106
  end
107
107
 
108
+ it "should search an issue with a jql query string and maxResults equals zero and should return the count of tickets" do
109
+ response = double()
110
+ issue = double()
111
+
112
+ allow(response).to receive(:body).and_return('{"total": 1, "issues": []}')
113
+ expect(client).to receive(:get)
114
+ .with('/jira/rest/api/2/search?jql=foo+bar&maxResults=0')
115
+ .and_return(response)
116
+
117
+ expect(JIRA::Resource::Issue.jql(client,'foo bar', max_results: 0)).to eq(1)
118
+ end
119
+
108
120
  it "should search an issue with a jql query string and string expand" do
109
121
  response = double()
110
122
  issue = double()
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jira-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SUMO Heavy Industries
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-30 00:00:00.000000000 Z
11
+ date: 2016-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oauth
@@ -34,42 +34,30 @@ dependencies:
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '4.2'
40
37
  - - ">="
41
38
  - !ruby/object:Gem::Version
42
- version: 4.2.0
39
+ version: '0'
43
40
  type: :runtime
44
41
  prerelease: false
45
42
  version_requirements: !ruby/object:Gem::Requirement
46
43
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '4.2'
50
44
  - - ">="
51
45
  - !ruby/object:Gem::Version
52
- version: 4.2.0
46
+ version: '0'
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: railties
55
49
  requirement: !ruby/object:Gem::Requirement
56
50
  requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '4.2'
60
51
  - - ">="
61
52
  - !ruby/object:Gem::Version
62
- version: 4.2.0
53
+ version: '0'
63
54
  type: :development
64
55
  prerelease: false
65
56
  version_requirements: !ruby/object:Gem::Requirement
66
57
  requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '4.2'
70
58
  - - ">="
71
59
  - !ruby/object:Gem::Version
72
- version: 4.2.0
60
+ version: '0'
73
61
  - !ruby/object:Gem::Dependency
74
62
  name: webmock
75
63
  requirement: !ruby/object:Gem::Requirement
@@ -353,7 +341,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
353
341
  version: '0'
354
342
  requirements: []
355
343
  rubyforge_project: jira-ruby
356
- rubygems_version: 2.5.1
344
+ rubygems_version: 2.6.4
357
345
  signing_key:
358
346
  specification_version: 4
359
347
  summary: Ruby Gem for use with the Atlassian JIRA REST API