jira-ruby 0.0.4 → 0.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.
- data/README.rdoc +51 -7
- data/http-basic-example.rb +106 -0
- data/lib/jira.rb +3 -0
- data/lib/jira/client.rb +41 -74
- data/lib/jira/http_client.rb +41 -0
- data/lib/jira/oauth_client.rb +84 -0
- data/lib/jira/request_client.rb +18 -0
- data/lib/jira/version.rb +1 -1
- data/spec/integration/attachment_spec.rb +14 -17
- data/spec/integration/comment_spec.rb +40 -41
- data/spec/integration/component_spec.rb +32 -33
- data/spec/integration/issue_spec.rb +60 -57
- data/spec/integration/issuetype_spec.rb +16 -17
- data/spec/integration/priority_spec.rb +17 -17
- data/spec/integration/project_spec.rb +36 -36
- data/spec/integration/status_spec.rb +17 -17
- data/spec/integration/user_spec.rb +15 -15
- data/spec/integration/version_spec.rb +32 -32
- data/spec/integration/worklog_spec.rb +41 -41
- data/spec/jira/client_spec.rb +125 -95
- data/spec/jira/http_client_spec.rb +79 -0
- data/spec/jira/oauth_client_spec.rb +111 -0
- data/spec/jira/request_client_spec.rb +14 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/clients_helper.rb +16 -0
- data/spec/support/shared_examples/integration.rb +11 -11
- metadata +30 -18
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe JIRA::HttpClient do
|
4
|
+
|
5
|
+
let(:basic_client) do
|
6
|
+
options = JIRA::Client::DEFAULT_OPTIONS.merge(JIRA::HttpClient::DEFAULT_OPTIONS)
|
7
|
+
JIRA::HttpClient.new(options)
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:response) do
|
11
|
+
response = mock("response")
|
12
|
+
response.stub(:kind_of?).with(Net::HTTPSuccess).and_return(true)
|
13
|
+
response
|
14
|
+
end
|
15
|
+
|
16
|
+
it "creates an instance of Net:HTTP for a basic auth client" do
|
17
|
+
basic_client.basic_auth_http_conn.class.should == Net::HTTP
|
18
|
+
end
|
19
|
+
|
20
|
+
it "responds to the http methods" do
|
21
|
+
body = ''
|
22
|
+
headers = mock()
|
23
|
+
basic_auth_http_conn = mock()
|
24
|
+
request = mock()
|
25
|
+
basic_client.stub(:basic_auth_http_conn => basic_auth_http_conn)
|
26
|
+
request.should_receive(:basic_auth)
|
27
|
+
.with(basic_client.options[:username], basic_client.options[:password])
|
28
|
+
.exactly(5).times.and_return(request)
|
29
|
+
basic_auth_http_conn.should_receive(:request).exactly(5).times.with(request).and_return(response)
|
30
|
+
[:delete, :get, :head].each do |method|
|
31
|
+
Net::HTTP.const_get(method.capitalize).should_receive(:new).with('/path', headers).and_return(request)
|
32
|
+
basic_client.make_request(method, '/path', nil, headers).should == response
|
33
|
+
end
|
34
|
+
[:post, :put].each do |method|
|
35
|
+
Net::HTTP.const_get(method.capitalize).should_receive(:new).with('/path', headers).and_return(request)
|
36
|
+
request.should_receive(:body=).with(body).and_return(request)
|
37
|
+
basic_client.make_request(method, '/path', body, headers).should == response
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it "performs a basic http client request" do
|
42
|
+
body = nil
|
43
|
+
headers = mock()
|
44
|
+
basic_auth_http_conn = mock()
|
45
|
+
http_request = mock()
|
46
|
+
Net::HTTP::Get.should_receive(:new).with('/foo', headers).and_return(http_request)
|
47
|
+
|
48
|
+
basic_auth_http_conn.should_receive(:request).with(http_request).and_return(response)
|
49
|
+
http_request.should_receive(:basic_auth).with(basic_client.options[:username], basic_client.options[:password]).and_return(http_request)
|
50
|
+
basic_client.stub(:basic_auth_http_conn => basic_auth_http_conn)
|
51
|
+
basic_client.make_request(:get, '/foo', body, headers)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "returns a URI" do
|
55
|
+
uri = URI.parse(basic_client.options[:site])
|
56
|
+
basic_client.uri.should == uri
|
57
|
+
end
|
58
|
+
|
59
|
+
it "sets up a http connection with options" do
|
60
|
+
http_conn = mock()
|
61
|
+
uri = mock()
|
62
|
+
host = mock()
|
63
|
+
port = mock()
|
64
|
+
uri.should_receive(:host).and_return(host)
|
65
|
+
uri.should_receive(:port).and_return(port)
|
66
|
+
Net::HTTP.should_receive(:new).with(host, port).and_return(http_conn)
|
67
|
+
http_conn.should_receive(:use_ssl=).with(basic_client.options[:use_ssl]).and_return(http_conn)
|
68
|
+
http_conn.should_receive(:verify_mode=).with(basic_client.options[:ssl_verify_mode]).and_return(http_conn)
|
69
|
+
basic_client.http_conn(uri).should == http_conn
|
70
|
+
end
|
71
|
+
|
72
|
+
it "returns a http connection" do
|
73
|
+
http_conn = mock()
|
74
|
+
uri = mock()
|
75
|
+
basic_client.should_receive(:uri).and_return(uri)
|
76
|
+
basic_client.should_receive(:http_conn).and_return(http_conn)
|
77
|
+
basic_client.basic_auth_http_conn.should == http_conn
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe JIRA::OauthClient do
|
4
|
+
|
5
|
+
let(:oauth_client) do
|
6
|
+
options = { :consumer_key => 'foo', :consumer_secret => 'bar' }
|
7
|
+
options = JIRA::Client::DEFAULT_OPTIONS.merge(options)
|
8
|
+
JIRA::OauthClient.new(options)
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:response) do
|
12
|
+
response = mock("response")
|
13
|
+
response.stub(:kind_of?).with(Net::HTTPSuccess).and_return(true)
|
14
|
+
response
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "authenticating with oauth" do
|
18
|
+
it "prepends the context path to all authorization and rest paths" do
|
19
|
+
options = [:request_token_path, :authorize_path, :access_token_path]
|
20
|
+
defaults = JIRA::Client::DEFAULT_OPTIONS.merge(JIRA::OauthClient::DEFAULT_OPTIONS)
|
21
|
+
options.each do |key|
|
22
|
+
oauth_client.options[key].should == defaults[:context_path] + defaults[key]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "creates a Oauth::Consumer on initialize" do
|
27
|
+
oauth_client.consumer.class.should == OAuth::Consumer
|
28
|
+
oauth_client.consumer.key.should == oauth_client.key
|
29
|
+
oauth_client.consumer.secret.should == oauth_client.secret
|
30
|
+
end
|
31
|
+
|
32
|
+
it "returns an OAuth request_token" do
|
33
|
+
# Cannot just check for method delegation as http connection will be attempted
|
34
|
+
request_token = OAuth::RequestToken.new(oauth_client.consumer)
|
35
|
+
oauth_client.consumer.stub(:get_request_token => request_token)
|
36
|
+
oauth_client.get_request_token.should == request_token
|
37
|
+
end
|
38
|
+
|
39
|
+
it "allows setting the request token" do
|
40
|
+
token = mock()
|
41
|
+
OAuth::RequestToken.should_receive(:new).with(oauth_client.consumer, 'foo', 'bar').and_return(token)
|
42
|
+
|
43
|
+
request_token = oauth_client.set_request_token('foo', 'bar')
|
44
|
+
|
45
|
+
request_token.should == token
|
46
|
+
oauth_client.request_token.should == token
|
47
|
+
end
|
48
|
+
|
49
|
+
it "allows setting the consumer key" do
|
50
|
+
oauth_client.key.should == 'foo'
|
51
|
+
end
|
52
|
+
|
53
|
+
it "allows setting the consumer secret" do
|
54
|
+
oauth_client.secret.should == 'bar'
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "the access token" do
|
58
|
+
|
59
|
+
it "initializes" do
|
60
|
+
request_token = OAuth::RequestToken.new(oauth_client.consumer)
|
61
|
+
oauth_client.consumer.stub(:get_request_token => request_token)
|
62
|
+
mock_access_token = mock()
|
63
|
+
request_token.should_receive(:get_access_token).with(:oauth_verifier => 'abc123').and_return(mock_access_token)
|
64
|
+
oauth_client.init_access_token(:oauth_verifier => 'abc123')
|
65
|
+
oauth_client.access_token.should == mock_access_token
|
66
|
+
end
|
67
|
+
|
68
|
+
it "raises an exception when accessing without initialisation" do
|
69
|
+
expect {
|
70
|
+
oauth_client.access_token
|
71
|
+
}.to raise_exception(JIRA::OauthClient::UninitializedAccessTokenError,
|
72
|
+
"init_access_token must be called before using the client")
|
73
|
+
end
|
74
|
+
|
75
|
+
it "allows setting the access token" do
|
76
|
+
token = mock()
|
77
|
+
OAuth::AccessToken.should_receive(:new).with(oauth_client.consumer, 'foo', 'bar').and_return(token)
|
78
|
+
|
79
|
+
access_token = oauth_client.set_access_token('foo', 'bar')
|
80
|
+
|
81
|
+
access_token.should == token
|
82
|
+
oauth_client.access_token.should == token
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe "http" do
|
87
|
+
it "responds to the http methods" do
|
88
|
+
headers = mock()
|
89
|
+
mock_access_token = mock()
|
90
|
+
oauth_client.stub(:access_token => mock_access_token)
|
91
|
+
[:delete, :get, :head].each do |method|
|
92
|
+
mock_access_token.should_receive(method).with('/path', headers).and_return(response)
|
93
|
+
oauth_client.make_request(method, '/path', '', headers)
|
94
|
+
end
|
95
|
+
[:post, :put].each do |method|
|
96
|
+
mock_access_token.should_receive(method).with('/path', '', headers).and_return(response)
|
97
|
+
oauth_client.make_request(method, '/path', '', headers)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
it "performs a request" do
|
102
|
+
body = nil
|
103
|
+
headers = mock()
|
104
|
+
access_token = mock()
|
105
|
+
access_token.should_receive(:send).with(:get, '/foo', headers).and_return(response)
|
106
|
+
oauth_client.stub(:access_token => access_token)
|
107
|
+
oauth_client.request(:get, '/foo', body, headers)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe JIRA::RequestClient do
|
4
|
+
|
5
|
+
it "raises an exception for non success responses" do
|
6
|
+
response = mock()
|
7
|
+
response.stub(:kind_of?).with(Net::HTTPSuccess).and_return(false)
|
8
|
+
rc = JIRA::RequestClient.new
|
9
|
+
rc.should_receive(:make_request).with(:get, '/foo', '', {}).and_return(response)
|
10
|
+
expect {
|
11
|
+
rc.request(:get, '/foo', '', {})
|
12
|
+
}.to raise_exception(JIRA::HTTPError)
|
13
|
+
end
|
14
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
module ClientsHelper
|
2
|
+
def with_each_client
|
3
|
+
clients = {}
|
4
|
+
|
5
|
+
oauth_client = JIRA::Client.new({ :consumer_key => 'foo', :consumer_secret => 'bar' })
|
6
|
+
oauth_client.set_access_token('abc', '123')
|
7
|
+
clients["http://localhost:2990"] = oauth_client
|
8
|
+
|
9
|
+
basic_client = JIRA::Client.new({ :username => 'foo', :password => 'bar', :auth_type => :basic, :use_ssl => false })
|
10
|
+
clients["http://foo:bar@localhost:2990"] = basic_client
|
11
|
+
|
12
|
+
clients.each do |site_url, client|
|
13
|
+
yield site_url, client
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -55,7 +55,7 @@ shared_examples "a resource" do
|
|
55
55
|
else
|
56
56
|
subject = client.send(class_basename).build(described_class.key_attribute.to_s => '99999')
|
57
57
|
end
|
58
|
-
stub_request(:put,
|
58
|
+
stub_request(:put, site_url + subject.url).
|
59
59
|
to_return(:status => 405, :body => "<html><body>Some HTML</body></html>")
|
60
60
|
subject.save('foo' => 'bar').should be_false
|
61
61
|
lambda do
|
@@ -68,7 +68,7 @@ end
|
|
68
68
|
shared_examples "a resource with a collection GET endpoint" do
|
69
69
|
|
70
70
|
it "should get the collection" do
|
71
|
-
stub_request(:get,
|
71
|
+
stub_request(:get, site_url + described_class.collection_path(client)).
|
72
72
|
to_return(:status => 200, :body => get_mock_from_path(:get))
|
73
73
|
collection = build_receiver.all
|
74
74
|
collection.length.should == expected_collection_length
|
@@ -84,7 +84,7 @@ shared_examples "a resource with a singular GET endpoint" do
|
|
84
84
|
it "GETs a single resource" do
|
85
85
|
# E.g., for JIRA::Resource::Project, we need to call
|
86
86
|
# client.Project.find()
|
87
|
-
stub_request(:get,
|
87
|
+
stub_request(:get, site_url + described_class.singular_path(client, key, prefix)).
|
88
88
|
to_return(:status => 200, :body => get_mock_from_path(:get, :key => key))
|
89
89
|
subject = client.send(class_basename).find(key, options)
|
90
90
|
|
@@ -94,7 +94,7 @@ shared_examples "a resource with a singular GET endpoint" do
|
|
94
94
|
it "builds and fetches a single resource" do
|
95
95
|
# E.g., for JIRA::Resource::Project, we need to call
|
96
96
|
# client.Project.build('key' => 'ABC123')
|
97
|
-
stub_request(:get,
|
97
|
+
stub_request(:get, site_url + described_class.singular_path(client, key, prefix)).
|
98
98
|
to_return(:status => 200, :body => get_mock_from_path(:get, :key => key))
|
99
99
|
|
100
100
|
subject = build_receiver.build(described_class.key_attribute.to_s => key)
|
@@ -104,7 +104,7 @@ shared_examples "a resource with a singular GET endpoint" do
|
|
104
104
|
end
|
105
105
|
|
106
106
|
it "handles a 404" do
|
107
|
-
stub_request(:get,
|
107
|
+
stub_request(:get, site_url + described_class.singular_path(client, '99999', prefix)).
|
108
108
|
to_return(:status => 404, :body => '{"errorMessages":["'+class_basename+' Does Not Exist"],"errors": {}}')
|
109
109
|
lambda do
|
110
110
|
client.send(class_basename).find('99999', options)
|
@@ -116,7 +116,7 @@ shared_examples "a resource with a DELETE endpoint" do
|
|
116
116
|
it "deletes a resource" do
|
117
117
|
# E.g., for JIRA::Resource::Project, we need to call
|
118
118
|
# client.Project.delete()
|
119
|
-
stub_request(:delete,
|
119
|
+
stub_request(:delete, site_url + described_class.singular_path(client, key, prefix)).
|
120
120
|
to_return(:status => 204, :body => nil)
|
121
121
|
|
122
122
|
subject = build_receiver.build(described_class.key_attribute.to_s => key)
|
@@ -127,7 +127,7 @@ end
|
|
127
127
|
shared_examples "a resource with a POST endpoint" do
|
128
128
|
|
129
129
|
it "saves a new resource" do
|
130
|
-
stub_request(:post,
|
130
|
+
stub_request(:post, site_url + described_class.collection_path(client, prefix)).
|
131
131
|
to_return(:status => 201, :body => get_mock_from_path(:post))
|
132
132
|
subject = build_receiver.build
|
133
133
|
subject.save(attributes_for_post).should be_true
|
@@ -141,9 +141,9 @@ end
|
|
141
141
|
shared_examples "a resource with a PUT endpoint" do
|
142
142
|
|
143
143
|
it "saves an existing component" do
|
144
|
-
stub_request(:get,
|
144
|
+
stub_request(:get, site_url + described_class.singular_path(client, key, prefix)).
|
145
145
|
to_return(:status => 200, :body => get_mock_from_path(:get, :key =>key))
|
146
|
-
stub_request(:put,
|
146
|
+
stub_request(:put, site_url + described_class.singular_path(client, key, prefix)).
|
147
147
|
to_return(:status => 200, :body => get_mock_from_path(:put, :key => key, :value_if_not_found => nil))
|
148
148
|
subject = build_receiver.build(described_class.key_attribute.to_s => key)
|
149
149
|
subject.fetch
|
@@ -158,9 +158,9 @@ end
|
|
158
158
|
shared_examples 'a resource with a PUT endpoint that rejects invalid fields' do
|
159
159
|
|
160
160
|
it "fails to save with an invalid field" do
|
161
|
-
stub_request(:get,
|
161
|
+
stub_request(:get, site_url + described_class.singular_path(client, key)).
|
162
162
|
to_return(:status => 200, :body => get_mock_from_path(:get, :key => key))
|
163
|
-
stub_request(:put,
|
163
|
+
stub_request(:put, site_url + described_class.singular_path(client, key)).
|
164
164
|
to_return(:status => 400, :body => get_mock_from_path(:put, :key => key, :suffix => "invalid"))
|
165
165
|
subject = client.send(class_basename).build(described_class.key_attribute.to_s => key)
|
166
166
|
subject.fetch
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jira-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-20 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: oauth
|
16
|
-
requirement: &
|
16
|
+
requirement: &70203258317280 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70203258317280
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: oauth
|
27
|
-
requirement: &
|
27
|
+
requirement: &70203258316860 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70203258316860
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: railties
|
38
|
-
requirement: &
|
38
|
+
requirement: &70203258316440 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70203258316440
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: railties
|
49
|
-
requirement: &
|
49
|
+
requirement: &70203258316020 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70203258316020
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: activesupport
|
60
|
-
requirement: &
|
60
|
+
requirement: &70203258315600 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70203258315600
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activesupport
|
71
|
-
requirement: &
|
71
|
+
requirement: &70203258315180 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70203258315180
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: webmock
|
82
|
-
requirement: &
|
82
|
+
requirement: &70203258314760 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70203258314760
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rspec
|
93
|
-
requirement: &
|
93
|
+
requirement: &70203258314340 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70203258314340
|
102
102
|
description: API for JIRA 5
|
103
103
|
email:
|
104
104
|
executables: []
|
@@ -110,14 +110,18 @@ files:
|
|
110
110
|
- README.rdoc
|
111
111
|
- Rakefile
|
112
112
|
- example.rb
|
113
|
+
- http-basic-example.rb
|
113
114
|
- jira-ruby.gemspec
|
114
115
|
- lib/jira.rb
|
115
116
|
- lib/jira/base.rb
|
116
117
|
- lib/jira/base_factory.rb
|
117
118
|
- lib/jira/client.rb
|
118
119
|
- lib/jira/has_many_proxy.rb
|
120
|
+
- lib/jira/http_client.rb
|
119
121
|
- lib/jira/http_error.rb
|
122
|
+
- lib/jira/oauth_client.rb
|
120
123
|
- lib/jira/railtie.rb
|
124
|
+
- lib/jira/request_client.rb
|
121
125
|
- lib/jira/resource/attachment.rb
|
122
126
|
- lib/jira/resource/comment.rb
|
123
127
|
- lib/jira/resource/component.rb
|
@@ -147,7 +151,10 @@ files:
|
|
147
151
|
- spec/jira/base_spec.rb
|
148
152
|
- spec/jira/client_spec.rb
|
149
153
|
- spec/jira/has_many_proxy_spec.rb
|
154
|
+
- spec/jira/http_client_spec.rb
|
150
155
|
- spec/jira/http_error_spec.rb
|
156
|
+
- spec/jira/oauth_client_spec.rb
|
157
|
+
- spec/jira/request_client_spec.rb
|
151
158
|
- spec/jira/resource/attachment_spec.rb
|
152
159
|
- spec/jira/resource/issue_spec.rb
|
153
160
|
- spec/jira/resource/project_factory_spec.rb
|
@@ -186,6 +193,7 @@ files:
|
|
186
193
|
- spec/mock_responses/version/10000.json
|
187
194
|
- spec/mock_responses/version/10000.put.json
|
188
195
|
- spec/spec_helper.rb
|
196
|
+
- spec/support/clients_helper.rb
|
189
197
|
- spec/support/matchers/have_attributes.rb
|
190
198
|
- spec/support/matchers/have_many.rb
|
191
199
|
- spec/support/matchers/have_one.rb
|
@@ -230,7 +238,10 @@ test_files:
|
|
230
238
|
- spec/jira/base_spec.rb
|
231
239
|
- spec/jira/client_spec.rb
|
232
240
|
- spec/jira/has_many_proxy_spec.rb
|
241
|
+
- spec/jira/http_client_spec.rb
|
233
242
|
- spec/jira/http_error_spec.rb
|
243
|
+
- spec/jira/oauth_client_spec.rb
|
244
|
+
- spec/jira/request_client_spec.rb
|
234
245
|
- spec/jira/resource/attachment_spec.rb
|
235
246
|
- spec/jira/resource/issue_spec.rb
|
236
247
|
- spec/jira/resource/project_factory_spec.rb
|
@@ -269,6 +280,7 @@ test_files:
|
|
269
280
|
- spec/mock_responses/version/10000.json
|
270
281
|
- spec/mock_responses/version/10000.put.json
|
271
282
|
- spec/spec_helper.rb
|
283
|
+
- spec/support/clients_helper.rb
|
272
284
|
- spec/support/matchers/have_attributes.rb
|
273
285
|
- spec/support/matchers/have_many.rb
|
274
286
|
- spec/support/matchers/have_one.rb
|