maremma 2.4.4 → 2.5

Sign up to get free protection for your applications and to get access to all the features.
data/spec/maremma_spec.rb CHANGED
@@ -11,21 +11,21 @@ describe Maremma do
11
11
  it "get json" do
12
12
  stub = stub_request(:get, url).to_return(:body => data.to_json, :status => 200, :headers => { "Content-Type" => "application/json" })
13
13
  response = subject.get(url)
14
- expect(response).to eq("data" => data)
14
+ expect(response).to eq("data" => data, "headers"=>{"Content-Type"=>"application/json"})
15
15
  expect(stub).to have_been_requested
16
16
  end
17
17
 
18
18
  it "get xml" do
19
19
  stub = stub_request(:get, url).to_return(:body => data.to_xml, :status => 200, :headers => { "Content-Type" => "application/xml" })
20
20
  response = subject.get(url, accept: 'xml')
21
- expect(response).to eq("data" => data)
21
+ expect(response).to eq("data"=>data, "headers"=>{"Content-Type"=>"application/xml"})
22
22
  expect(stub).to have_been_requested
23
23
  end
24
24
 
25
25
  it "get html" do
26
26
  stub = stub_request(:get, url).to_return(:body => data.to_s, :status => 200, :headers => { "Content-Type" => "text/html" })
27
27
  response = subject.get(url, accept: 'html')
28
- expect(response).to eq("data" => data.to_s)
28
+ expect(response).to eq("data" => data.to_s, "headers"=>{"Content-Type"=>"text/html"})
29
29
  expect(stub).to have_been_requested
30
30
  end
31
31
 
@@ -48,18 +48,9 @@ describe Maremma do
48
48
  expect(url).to eq("https://search.datacite.org/api?q=*%3A*&fl=doi%2Ctitle%2Cdescription%2Cpublisher%2CpublicationYear%2CresourceType%2CresourceTypeGeneral%2CrightsURI%2Cdatacentre_symbol%2Cxml%2Cminted%2Cupdated&fq=has_metadata%3Atrue&fq=is_active%3Atrue&facet=true&facet.field=resourceType_facet&facet.field=publicationYear&facet.field=datacentre_facet&facet.limit=10&f.resourceType_facet.facet.limit=15&wt=json")
49
49
  response = subject.get(url)
50
50
  facet_fields = response.fetch("data", {}).fetch("facet_counts", {}).fetch("facet_fields", {})
51
- expect(facet_fields["datacentre_facet"]).to eq(["CDL.DPLANET - Data-Planet", 862673, "BL.CCDC - The Cambridge Crystallographic Data Centre", 617281, "ETHZ.SEALS - E-Periodica", 511747, "ESTDOI.BIO - TÜ Loodusmuuseum", 487448, "CDL.DIGSCI - Digital Science", 431015, "TIB.R-GATE - ResearchGate", 391313, "GESIS.DIE - Deutsches Institut für Erwachsenenbildung", 373193, "ETHZ.EPICS-BA - E-Pics Bildarchiv", 355076, "TIB.PANGAEA - PANGAEA - Publishing Network for Geoscientific and Environmental Data", 346849, "BL.IMPERIAL - Imperial College London", 190482])
52
- expect(facet_fields["resourceType_facet"]).to eq(["Dataset", 2598715, "Text", 1390919, "Other", 873873, "Image", 704151, "Collection", 351593, "Software", 15895, "Audiovisual", 7098, "Event", 6711, "PhysicalObject", 6680, "Film", 920, "Model", 556, "InteractiveResource", 372, "Sound", 243, "Workflow", 221, "Service", 21])
53
- expect(facet_fields["publicationYear"]).to eq(["2015", 2040850, "2014", 936486, "2016", 522234, "2011", 339370, "2013", 335358, "2012", 214191, "2005", 163347, "2007", 159146, "2006", 146147, "2010", 144512])
54
- end
55
- end
56
-
57
- context "head" do
58
- it "head html" do
59
- stub = stub_request(:head, url).to_return(:status => 200, :headers => { "Content-Type" => "text/html" })
60
- response = subject.head(url, accept: 'html')
61
- expect(response).to eq("Content-Type"=>"text/html")
62
- expect(stub).to have_been_requested
51
+ expect(facet_fields["datacentre_facet"].each_slice(2).first).to eq(["CDL.DPLANET - Data-Planet", 866179])
52
+ expect(facet_fields["resourceType_facet"].each_slice(2).first).to eq(["Dataset", 2868231])
53
+ expect(facet_fields["publicationYear"].each_slice(2).first).to eq(["2015", 2048329])
63
54
  end
64
55
  end
65
56
 
@@ -67,21 +58,21 @@ describe Maremma do
67
58
  it "get json" do
68
59
  stub = stub_request(:get, url).to_return(:body => nil, :status => 200, :headers => { "Content-Type" => "application/json" })
69
60
  response = subject.get(url)
70
- expect(response).to eq("data" => nil)
61
+ expect(response).to eq("data"=>nil, "headers"=>{"Content-Type"=>"application/json"})
71
62
  expect(stub).to have_been_requested
72
63
  end
73
64
 
74
65
  it "get xml" do
75
66
  stub = stub_request(:get, url).to_return(:body => nil, :status => 200, :headers => { "Content-Type" => "application/xml" })
76
67
  response = subject.get(url, accept: 'xml')
77
- expect(response).to eq("data" => nil)
68
+ expect(response).to eq("data"=>nil, "headers"=>{"Content-Type"=>"application/xml"})
78
69
  expect(stub).to have_been_requested
79
70
  end
80
71
 
81
72
  it "get html" do
82
73
  stub = stub_request(:get, url).to_return(:body => nil, :status => 200, :headers => { "Content-Type" => "text/html" })
83
74
  response = subject.get(url, accept: 'html')
84
- expect(response).to eq("data" => nil)
75
+ expect(response).to eq("data" => nil, "headers"=>{"Content-Type"=>"text/html"})
85
76
  expect(stub).to have_been_requested
86
77
  end
87
78
 
@@ -149,6 +140,24 @@ describe Maremma do
149
140
  end
150
141
  end
151
142
 
143
+ context "head" do
144
+ it "head" do
145
+ stub = stub_request(:head, url).to_return(:status => 200, :headers => { "Content-Type" => "application/json" })
146
+ response = subject.head(url)
147
+ expect(response).to eq("headers"=>{"Content-Type"=>"application/json"})
148
+ expect(stub).to have_been_requested
149
+ end
150
+ end
151
+
152
+ context "delete" do
153
+ it "delete" do
154
+ stub = stub_request(:delete, url).to_return(:status => 204, :headers => { "Content-Type" => "text/html" })
155
+ response = subject.delete(url)
156
+ expect(response).to eq("data"=>nil, "headers"=>{"Content-Type"=>"text/html"})
157
+ expect(stub).to have_been_requested
158
+ end
159
+ end
160
+
152
161
  context "connection failed" do
153
162
  it "get json" do
154
163
  stub = stub_request(:get, url).to_raise(Faraday::ConnectionFailed.new("Connection refused - connect(2)"))
@@ -244,7 +253,7 @@ describe Maremma do
244
253
  stub_request(:get, url).to_return(status: 301, headers: { location: redirect_url })
245
254
  stub_request(:get, redirect_url).to_return(status: 200, body: "Test")
246
255
  response = subject.get(url)
247
- expect(response).to eq("data"=>"Test")
256
+ expect(response).to eq("data"=>"Test", "headers"=>{})
248
257
  end
249
258
 
250
259
  it "redirect four times" do
@@ -254,7 +263,7 @@ describe Maremma do
254
263
  stub_request(:get, redirect_url+ "/y").to_return(status: 301, headers: { location: redirect_url + "/z" })
255
264
  stub_request(:get, redirect_url + "/z").to_return(status: 200, body: "Test")
256
265
  response = subject.get(url)
257
- expect(response).to eq("data"=>"Test")
266
+ expect(response).to eq("data"=>"Test", "headers"=>{})
258
267
  end
259
268
 
260
269
  it "redirect limit 1" do
@@ -264,27 +273,30 @@ describe Maremma do
264
273
  response = subject.get(url, limit: 1)
265
274
  expect(response).to eq("errors"=>[{"status"=>400, "title"=>"too many redirects; last one to: http://www.example.org/redirect/x"}])
266
275
  end
267
-
268
- it "redirect limit 0 head" do
269
- stub_request(:head, url).to_return(status: 301, headers: { location: redirect_url })
270
- response = subject.head(url, limit: 0)
271
- expect(response["Location"]).to eq("http://www.example.org/redirect")
272
- end
273
276
  end
274
277
 
275
278
  context "content negotiation" do
276
279
  it "redirects to URL", vcr: true do
277
- url = "http://doi.org/10.5281/ZENODO.21430"
280
+ url = "https://doi.org/10.5281/ZENODO.21430"
278
281
  response = subject.get(url)
279
282
  doc = Nokogiri::HTML(response.fetch("data", ""))
280
283
  title = doc.at_css("head title").text
281
- expect(title).to eq("DataCite-ORCID: 1.0 - Zenodo")
284
+ expect(title).to eq("DataCite-ORCID: 1.0 | Zenodo")
282
285
  end
283
286
 
284
287
  it "returns content as bibtex", vcr: true do
285
288
  url = "https://doi.org/10.5281/ZENODO.21430"
286
289
  response = subject.get(url, accept: "application/x-bibtex")
287
- expect(response.fetch("data", nil)).to eq("@data{198243d2-ed8a-4126-867e-5fff1e80dcfc,\n doi = {10.5281/ZENODO.21430},\n url = {http://dx.doi.org/10.5281/ZENODO.21430},\n author = {Martin Fenner; Karl Jonathan Ward; Gudmundur A. Thorisson; Robert Peters; },\n publisher = {Zenodo},\n title = {DataCite-ORCID: 1.0},\n year = {2015}\n}")
290
+ expect(response.fetch("data", nil)).to eq("@misc{https://doi.org/10.5281/ZENODO.21430,\n doi = {10.5281/ZENODO.21430},\n url = {https://doi.org/10.5281/ZENODO.21430},\n author = {Martin Fenner and Karl Jonathan Ward and Gudmundur A. Thorisson and Robert Peters},\n publisher = {Zenodo},\n title = {DataCite-ORCID: 1.0},\n year = {2015}\n}")
291
+ end
292
+ end
293
+
294
+ context "link headers" do
295
+ it "parses link headers", vcr: true do
296
+ url = "https://search.datacite.org/works/10.5281/ZENODO.21430"
297
+ response = subject.get(url)
298
+ headers = response.fetch("headers", {}).fetch("Link", "").split(", ")
299
+ expect(headers.first).to eq("<https://doi.org/10.5281/ZENODO.21430> ; rel=\"identifier\"")
288
300
  end
289
301
  end
290
302
 
@@ -308,94 +320,89 @@ describe Maremma do
308
320
  context 'parse_success_response' do
309
321
  it 'from_json' do
310
322
  string = '{ "word": "abc" }'
311
- expect(subject.parse_success_response(string)).to eq("data"=>{"word"=>"abc"})
323
+ expect(subject.parse_success_response(string)).to eq("word"=>"abc")
312
324
  end
313
325
 
314
326
  it 'from_json with data' do
315
327
  string = '{ "data": { "word": "abc" }}'
316
- expect(subject.parse_success_response(string)).to eq("data"=>{"word"=>"abc"})
328
+ expect(subject.parse_success_response(string)).to eq("word"=>"abc")
317
329
  end
318
330
 
319
331
  it 'from_xml' do
320
332
  string = "<word>abc</word>"
321
- expect(subject.parse_success_response(string)).to eq("data"=>{"word"=>"abc"})
333
+ expect(subject.parse_success_response(string)).to eq("word"=>"abc")
322
334
  end
323
335
 
324
336
  it 'from_string' do
325
337
  string = "abc"
326
- expect(subject.parse_success_response(string)).to eq("data"=>"abc")
338
+ expect(subject.parse_success_response(string)).to eq("abc")
327
339
  end
328
340
 
329
341
  it 'from_string with utf-8' do
330
342
  string = "fön "
331
- expect(subject.parse_success_response(string)).to eq("data"=>"fön")
343
+ expect(subject.parse_success_response(string)).to eq("fön")
332
344
  end
333
345
  end
334
346
 
335
347
  context 'accept headers' do
336
348
  it 'default' do
337
349
  headers = subject.set_request_headers(url)
338
- expect(headers).to eq("Accept"=>"text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5",
339
- "User-Agent"=>"Maremma - https://github.com/datacite/maremma")
350
+ expect(headers["Accept"]).to eq("text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5")
340
351
  end
341
352
 
342
353
  it 'json' do
343
354
  headers = subject.set_request_headers(url, accept: 'json')
344
- expect(headers).to eq("Accept"=>"application/json",
345
- "User-Agent"=>"Maremma - https://github.com/datacite/maremma")
355
+ expect(headers["Accept"]).to eq("application/json")
346
356
  end
347
357
 
348
358
  it 'xml' do
349
359
  headers = subject.set_request_headers(url, accept: 'xml')
350
- expect(headers).to eq("Accept"=>"application/xml",
351
- "User-Agent"=>"Maremma - https://github.com/datacite/maremma")
360
+ expect(headers["Accept"]).to eq("application/xml")
352
361
  end
353
362
 
354
363
  it 'html' do
355
364
  headers = subject.set_request_headers(url, accept: 'html')
356
- expect(headers).to eq("Accept" => "text/html; charset=UTF-8",
357
- "User-Agent" => "Maremma - https://github.com/datacite/maremma")
365
+ expect(headers["Accept"]).to eq("text/html; charset=UTF-8")
358
366
  end
359
367
 
360
368
  it 'other' do
361
369
  headers = subject.set_request_headers(url, accept: 'application/x-bibtex')
362
- expect(headers).to eq("Accept" => "application/x-bibtex",
363
- "User-Agent" => "Maremma - https://github.com/datacite/maremma")
370
+ expect(headers["Accept"]).to eq("application/x-bibtex")
364
371
  end
365
372
  end
366
373
 
367
374
  context 'authentication' do
368
375
  it 'no auth' do
369
376
  options = {}
370
- expect(subject.set_request_headers(url, options)).to eq("User-Agent"=>"Maremma - https://github.com/datacite/maremma", "Accept"=>accept_header)
377
+ expect(subject.set_request_headers(url, options)["Authorization"]).to be nil
371
378
  end
372
379
 
373
380
  it 'bearer' do
374
381
  options = { bearer: 'mF_9.B5f-4.1JqM' }
375
- expect(subject.set_request_headers(url, options)).to eq("User-Agent"=>"Maremma - https://github.com/datacite/maremma", "Accept"=>accept_header, "Authorization"=>"Bearer mF_9.B5f-4.1JqM")
382
+ expect(subject.set_request_headers(url, options)["Authorization"]).to eq("Bearer mF_9.B5f-4.1JqM")
376
383
  end
377
384
 
378
385
  it 'token' do
379
386
  options = { token: '12345' }
380
- expect(subject.set_request_headers(url, options)).to eq("User-Agent"=>"Maremma - https://github.com/datacite/maremma", "Accept"=>accept_header, "Authorization"=>"Token token=12345")
387
+ expect(subject.set_request_headers(url, options)["Authorization"]).to eq("Token token=12345")
381
388
  end
382
389
 
383
390
  it 'basic' do
384
391
  options = { username: 'foo', password: '12345' }
385
392
  basic = Base64.encode64("foo:12345")
386
- expect(subject.set_request_headers(url, options)).to eq("User-Agent"=>"Maremma - https://github.com/datacite/maremma", "Accept"=>accept_header, "Authorization"=>"Basic #{basic}")
393
+ expect(subject.set_request_headers(url, options)["Authorization"]).to eq("Basic #{basic}")
387
394
  end
388
395
  end
389
396
 
390
397
  context 'host' do
391
398
  it 'empty' do
392
399
  options = {}
393
- expect(subject.set_request_headers(url, options)).to eq("User-Agent"=>"Maremma - https://github.com/datacite/maremma", "Accept"=>accept_header)
400
+ expect(subject.set_request_headers(url, options)["Host"]).to be nil
394
401
  end
395
402
 
396
403
  it 'true' do
397
404
  options = { host: true}
398
- expect(subject.set_request_headers(url, options)).to eq("User-Agent"=>"Maremma - https://github.com/datacite/maremma", "Host"=>"example.org", "Accept"=>accept_header)
405
+ expect(subject.set_request_headers(url, options)["Host"]).to eq("example.org")
399
406
  end
400
407
  end
401
408
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maremma
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.4
4
+ version: '2.5'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-22 00:00:00.000000000 Z
11
+ date: 2016-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -72,20 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.6'
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 1.6.8
75
+ version: 1.6.7
79
76
  type: :runtime
80
77
  prerelease: false
81
78
  version_requirements: !ruby/object:Gem::Requirement
82
79
  requirements:
83
80
  - - "~>"
84
81
  - !ruby/object:Gem::Version
85
- version: '1.6'
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: 1.6.8
82
+ version: 1.6.7
89
83
  - !ruby/object:Gem::Dependency
90
84
  name: builder
91
85
  requirement: !ruby/object:Gem::Requirement
@@ -124,16 +118,16 @@ dependencies:
124
118
  name: oj
125
119
  requirement: !ruby/object:Gem::Requirement
126
120
  requirements:
127
- - - ">="
121
+ - - "~>"
128
122
  - !ruby/object:Gem::Version
129
- version: 2.18.3
123
+ version: 2.13.1
130
124
  type: :runtime
131
125
  prerelease: false
132
126
  version_requirements: !ruby/object:Gem::Requirement
133
127
  requirements:
134
- - - ">="
128
+ - - "~>"
135
129
  - !ruby/object:Gem::Version
136
- version: 2.18.3
130
+ version: 2.13.1
137
131
  - !ruby/object:Gem::Dependency
138
132
  name: activesupport
139
133
  requirement: !ruby/object:Gem::Requirement
@@ -294,6 +288,7 @@ files:
294
288
  - spec/fixtures/vcr_cassettes/Maremma/content_negotiation/redirects_to_URL.yml
295
289
  - spec/fixtures/vcr_cassettes/Maremma/content_negotiation/returns_content_as_bibtex.yml
296
290
  - spec/fixtures/vcr_cassettes/Maremma/get/get_json_with_params.yml
291
+ - spec/fixtures/vcr_cassettes/Maremma/link_headers/parses_link_headers.yml
297
292
  - spec/maremma_spec.rb
298
293
  - spec/spec_helper.rb
299
294
  homepage: https://github.com/datacite/maremma