embulk-input-jira 0.2.2 → 0.2.3

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: 908532d5b539ee1ca384c6eb1e95e3a9b4457d59
4
- data.tar.gz: 85ff33b3ffec8721a19ea7c7c9664629d80529c6
3
+ metadata.gz: 5b94f8c8f0d052b86637546f5c195418d82b488a
4
+ data.tar.gz: 0bc976612e0c0ad6a607b2c31e811cb01fc7a9f4
5
5
  SHA512:
6
- metadata.gz: 2d5f22354f2809e1f759cf1e4a4bcdedbcc807722d43a906232d8eed2e861ba57b92b1bde59d97ddab56ca677c1aa6ddbb15532103e6a95fcde06e43bcb0a5a6
7
- data.tar.gz: 040700492e0710e4e25ed0b6c54557df1b29c34513ba5f41fed08680be8a1362a81416a134c04887203cb30b4f855201759e71f72610a2062221b3b2af2ea1ac
6
+ metadata.gz: 488a061561dd21d3929ce1cf8780a45f624f3b17101c0fd2f59d3f25a13097f7b3ebb5f5fc3576c9c0951bfbc3cf8faaf23731dee889480a919b7fc7a1c04ebb
7
+ data.tar.gz: 8a4a4ec2503b3f5d61e593339aafe575877b25f7b6aee7e546c2de51328c24b477afea400d44beee7f3e808018209d4030a1c765a4704f6da364703e64e9c351
@@ -1,3 +1,7 @@
1
+ ## 0.2.3 - 2017-11-14
2
+
3
+ * [fixed] Add a logic to check credentials before searching issues [#49](https://github.com/treasure-data/embulk-input-jira/pull/49)
4
+
1
5
  ## 0.2.2 - 2017-08-29
2
6
 
3
7
  * [fixed] Added retry block to fix jiralicious authentication session [#48](https://github.com/treasure-data/embulk-input-jira/pull/48)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "embulk-input-jira"
3
- spec.version = "0.2.2"
3
+ spec.version = "0.2.3"
4
4
  spec.authors = ["uu59", "yoshihara"]
5
5
  spec.summary = "Jira input plugin for Embulk"
6
6
  spec.description = "Loads records from Jira."
@@ -62,6 +62,9 @@ module Embulk
62
62
  retry_initial_wait_sec = config.param(:retry_initial_wait_sec, :integer, default: 1)
63
63
  retryer = retryer(retry_limit, retry_initial_wait_sec)
64
64
 
65
+ # Get credential before going to search issue
66
+ jira.check_user_credential(username)
67
+
65
68
  # TODO: we use 0..10 issues to guess config?
66
69
  records = retryer.with_retry do
67
70
  jira.search_issues(jql, max_results: GUESS_RECORDS_COUNT).map do |issue|
@@ -93,6 +96,8 @@ module Embulk
93
96
 
94
97
  def run
95
98
  return preview if preview?
99
+
100
+ @jira.check_user_credential(task[:username])
96
101
  options = {}
97
102
  total_count = @jira.total_count(@jql)
98
103
  last_page = (total_count.to_f / PER_PAGE).ceil
@@ -136,6 +141,8 @@ module Embulk
136
141
  private
137
142
 
138
143
  def preview
144
+ @jira.check_user_credential(task[:username])
145
+
139
146
  logger.debug "For preview mode, JIRA input plugin fetches records at most #{PREVIEW_RECORDS_COUNT}"
140
147
  @jira.search_issues(@jql, max_results: PREVIEW_RECORDS_COUNT).each do |issue|
141
148
  values = @attributes.map do |(attribute_name, type)|
@@ -40,6 +40,19 @@ module Embulk
40
40
  search(jql, max_results: 1).num_results
41
41
  end
42
42
 
43
+ def check_user_credential(username)
44
+ Jiralicious::Issue.find(username)
45
+ rescue Jiralicious::JqlError, Jiralicious::AuthenticationError, Jiralicious::NotLoggedIn, Jiralicious::InvalidLogin => e
46
+ raise Embulk::ConfigError.new(e.message)
47
+ rescue ::SocketError => e
48
+ # wrong `uri` option given
49
+ raise Embulk::ConfigError.new(e.message)
50
+ rescue MultiJson::ParseError => e
51
+ html = e.message
52
+ title = html[%r|<title>(.*?)</title>|, 1] #=> e.g. "Unauthorized (401)"
53
+ raise ConfigError.new("Can not authorize with your credential.") if title == 'Unauthorized (401)'
54
+ end
55
+
43
56
  private
44
57
 
45
58
  def timeout_and_retry(wait, retry_times = DEFAULT_SEARCH_RETRY_TIMES, &block)
@@ -61,13 +74,12 @@ module Embulk
61
74
  title = html[%r|<title>(.*?)</title>|, 1] #=> e.g. "Unauthorized (401)"
62
75
  if title
63
76
  # (a)
64
- Embulk.logger.warn "JIRA returns HTML: #{html}"
65
77
  case title
66
78
  when "Atlassian Cloud Notifications - Page Unavailable"
67
79
  # a.k.a. HTTP 503
68
80
  raise title
69
81
  when "Unauthorized (401)"
70
- Embulk.logger.warn "JIRA returns error: #{title}"
82
+ Embulk.logger.warn "JIRA returns error: #{title}. Will go to retry"
71
83
  count += 1
72
84
  retry
73
85
  end
@@ -131,6 +131,7 @@ describe Embulk::Input::Jira do
131
131
  end
132
132
 
133
133
  before do
134
+ allow(jira_api).to receive(:check_user_credential).with(username).and_return(username)
134
135
  allow(jira_api).to receive(:search_issues).with(jql, max_results: described_class::GUESS_RECORDS_COUNT).and_return(jira_issues)
135
136
 
136
137
  allow(config).to receive(:param).with(:username, :string).and_return(username)
@@ -211,12 +212,14 @@ describe Embulk::Input::Jira do
211
212
  end
212
213
 
213
214
  let(:commit_report) { {} }
215
+ let(:username) { "jira-user" }
214
216
 
215
217
  before do
216
218
  allow(jira_api).to receive(:preview?).and_return(false)
217
219
 
218
220
  # TODO: create stubs without each `it` expected
219
221
  allow(Embulk::Input::JiraApi::Client).to receive(:setup).and_return(jira_api)
222
+ allow(jira_api).to receive(:check_user_credential).and_return(username)
220
223
 
221
224
  0.step(total_count, max_result) do |start_at|
222
225
  issues = jira_issues[start_at..(start_at + max_result - 1)]
@@ -256,6 +259,7 @@ describe Embulk::Input::Jira do
256
259
  let(:page_builder) { double("page_builder") }
257
260
  let(:jira_api) { Embulk::Input::JiraApi::Client.new }
258
261
  let(:jira_issues) { [Embulk::Input::JiraApi::Issue.new(attributes)] }
262
+ let(:username) { "jira-user" }
259
263
  let(:attributes) do
260
264
  {
261
265
  "id" => "100",
@@ -281,6 +285,7 @@ describe Embulk::Input::Jira do
281
285
  allow(Embulk::Input::JiraApi::Client).to receive(:setup).and_return(jira_api)
282
286
  allow(plugin).to receive(:logger).and_return(::Logger.new(File::NULL))
283
287
  allow(plugin).to receive(:preview?).and_return(true)
288
+ allow(jira_api).to receive(:check_user_credential).and_return(username)
284
289
  allow(jira_api).to receive(:search_issues).and_return(jira_issues)
285
290
  allow(page_builder).to receive(:add)
286
291
  allow(page_builder).to receive(:finish)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-jira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - uu59
@@ -9,162 +9,162 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-08-29 00:00:00.000000000 Z
12
+ date: 2017-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ name: jiralicious
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
20
  version: 0.5.0
20
- name: jiralicious
21
- prerelease: false
22
- type: :runtime
23
21
  version_requirements: !ruby/object:Gem::Requirement
24
22
  requirements:
25
23
  - - "~>"
26
24
  - !ruby/object:Gem::Version
27
25
  version: 0.5.0
26
+ prerelease: false
27
+ type: :runtime
28
28
  - !ruby/object:Gem::Dependency
29
+ name: parallel
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - "~>"
32
33
  - !ruby/object:Gem::Version
33
34
  version: 1.6.0
34
- name: parallel
35
- prerelease: false
36
- type: :runtime
37
35
  version_requirements: !ruby/object:Gem::Requirement
38
36
  requirements:
39
37
  - - "~>"
40
38
  - !ruby/object:Gem::Version
41
39
  version: 1.6.0
40
+ prerelease: false
41
+ type: :runtime
42
42
  - !ruby/object:Gem::Dependency
43
+ name: perfect_retry
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
46
  - - "~>"
46
47
  - !ruby/object:Gem::Version
47
48
  version: '0.3'
48
- name: perfect_retry
49
- prerelease: false
50
- type: :runtime
51
49
  version_requirements: !ruby/object:Gem::Requirement
52
50
  requirements:
53
51
  - - "~>"
54
52
  - !ruby/object:Gem::Version
55
53
  version: '0.3'
54
+ prerelease: false
55
+ type: :runtime
56
56
  - !ruby/object:Gem::Dependency
57
+ name: bundler
57
58
  requirement: !ruby/object:Gem::Requirement
58
59
  requirements:
59
60
  - - "~>"
60
61
  - !ruby/object:Gem::Version
61
62
  version: '1.0'
62
- name: bundler
63
- prerelease: false
64
- type: :development
65
63
  version_requirements: !ruby/object:Gem::Requirement
66
64
  requirements:
67
65
  - - "~>"
68
66
  - !ruby/object:Gem::Version
69
67
  version: '1.0'
68
+ prerelease: false
69
+ type: :development
70
70
  - !ruby/object:Gem::Dependency
71
+ name: rake
71
72
  requirement: !ruby/object:Gem::Requirement
72
73
  requirements:
73
74
  - - "<"
74
75
  - !ruby/object:Gem::Version
75
76
  version: '11.0'
76
- name: rake
77
- prerelease: false
78
- type: :development
79
77
  version_requirements: !ruby/object:Gem::Requirement
80
78
  requirements:
81
79
  - - "<"
82
80
  - !ruby/object:Gem::Version
83
81
  version: '11.0'
82
+ prerelease: false
83
+ type: :development
84
84
  - !ruby/object:Gem::Dependency
85
+ name: rspec
85
86
  requirement: !ruby/object:Gem::Requirement
86
87
  requirements:
87
88
  - - "~>"
88
89
  - !ruby/object:Gem::Version
89
90
  version: 3.2.0
90
- name: rspec
91
- prerelease: false
92
- type: :development
93
91
  version_requirements: !ruby/object:Gem::Requirement
94
92
  requirements:
95
93
  - - "~>"
96
94
  - !ruby/object:Gem::Version
97
95
  version: 3.2.0
96
+ prerelease: false
97
+ type: :development
98
98
  - !ruby/object:Gem::Dependency
99
+ name: embulk
99
100
  requirement: !ruby/object:Gem::Requirement
100
101
  requirements:
101
102
  - - "~>"
102
103
  - !ruby/object:Gem::Version
103
104
  version: 0.8.7
104
- name: embulk
105
- prerelease: false
106
- type: :development
107
105
  version_requirements: !ruby/object:Gem::Requirement
108
106
  requirements:
109
107
  - - "~>"
110
108
  - !ruby/object:Gem::Version
111
109
  version: 0.8.7
110
+ prerelease: false
111
+ type: :development
112
112
  - !ruby/object:Gem::Dependency
113
+ name: simplecov
113
114
  requirement: !ruby/object:Gem::Requirement
114
115
  requirements:
115
116
  - - ">="
116
117
  - !ruby/object:Gem::Version
117
118
  version: '0'
118
- name: simplecov
119
- prerelease: false
120
- type: :development
121
119
  version_requirements: !ruby/object:Gem::Requirement
122
120
  requirements:
123
121
  - - ">="
124
122
  - !ruby/object:Gem::Version
125
123
  version: '0'
124
+ prerelease: false
125
+ type: :development
126
126
  - !ruby/object:Gem::Dependency
127
+ name: pry
127
128
  requirement: !ruby/object:Gem::Requirement
128
129
  requirements:
129
130
  - - ">="
130
131
  - !ruby/object:Gem::Version
131
132
  version: '0'
132
- name: pry
133
- prerelease: false
134
- type: :development
135
133
  version_requirements: !ruby/object:Gem::Requirement
136
134
  requirements:
137
135
  - - ">="
138
136
  - !ruby/object:Gem::Version
139
137
  version: '0'
138
+ prerelease: false
139
+ type: :development
140
140
  - !ruby/object:Gem::Dependency
141
+ name: codeclimate-test-reporter
141
142
  requirement: !ruby/object:Gem::Requirement
142
143
  requirements:
143
144
  - - ">="
144
145
  - !ruby/object:Gem::Version
145
146
  version: '0'
146
- name: codeclimate-test-reporter
147
- prerelease: false
148
- type: :development
149
147
  version_requirements: !ruby/object:Gem::Requirement
150
148
  requirements:
151
149
  - - ">="
152
150
  - !ruby/object:Gem::Version
153
151
  version: '0'
152
+ prerelease: false
153
+ type: :development
154
154
  - !ruby/object:Gem::Dependency
155
+ name: everyleaf-embulk_helper
155
156
  requirement: !ruby/object:Gem::Requirement
156
157
  requirements:
157
158
  - - ">="
158
159
  - !ruby/object:Gem::Version
159
160
  version: '0'
160
- name: everyleaf-embulk_helper
161
- prerelease: false
162
- type: :development
163
161
  version_requirements: !ruby/object:Gem::Requirement
164
162
  requirements:
165
163
  - - ">="
166
164
  - !ruby/object:Gem::Version
167
165
  version: '0'
166
+ prerelease: false
167
+ type: :development
168
168
  description: Loads records from Jira.
169
169
  email:
170
170
  - k@uu59.org