relaton 1.8.pre3 → 1.8.pre4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9d954779afa85cdbe30b00b6780f4fe2ea261839da0f82855dca6e63fe8be77d
4
- data.tar.gz: e7549980e5771e74412291428b8010ad4d6a7720526b98169b97dac82539e909
3
+ metadata.gz: e0872533d5f93e35d777c6a84a4f38a5698b64cc00d9d103b77f7e10fc34738b
4
+ data.tar.gz: 3f1cc128d958996cd8ea6eb31bacc530bba464a8d8b5cb855cd4e204214ef7d1
5
5
  SHA512:
6
- metadata.gz: 466c2e7c24c972df07bf9548b0dac26ec0eb2c03d7c8716abba50cc7a95f83dd58c903b3b99a99fbddcb3afa1d68518c93082acee68034ec3d3230e10d4f0b25
7
- data.tar.gz: 3f4fb6fd8750375862ae109d8d50654372fa3d8e1b6b8eb966e827a026cd4c99f1790a68068c6785a93c6a2c459b6c1506a1768aef881025fa12914cffd0708b
6
+ metadata.gz: 1862b4eb76509da3ae2ac959d1ffd7bf6e785bc45033c5123236f5c3f9dc5cafc42940a7cba78222960a59ad542fb0786f2a0be8e5da926bbb4b3aa886278a5e
7
+ data.tar.gz: b21c4797a9003696de1e5d79f017d19c417a9db72e549eeaab7edaa935e26ce9f1b009fdea83bf8896100ed30c63d5b7df730fbeaacedfc91243468cbc54a39b
@@ -12,14 +12,13 @@ module Relaton
12
12
  end
13
13
 
14
14
  class Configuration
15
- attr_accessor :logs, :use_api, :api_host, :api_mode
15
+ attr_accessor :logs, :use_api, :api_host
16
16
 
17
17
  def initialize
18
18
  @logs = %i(info error) # allowed values: :info, :warning, :error, :debug
19
19
 
20
20
  # @TODO change to true when we start using api.relaton.org
21
21
  @use_api = true
22
- @api_mode = false
23
22
  @api_host = "https://api.relaton.org/api/v1"
24
23
  end
25
24
  end
data/lib/relaton/db.rb CHANGED
@@ -1,18 +1,11 @@
1
1
  module Relaton
2
- # class RelatonError < StandardError; end
3
-
4
2
  class Db
5
3
  # @param global_cache [String] directory of global DB
6
4
  # @param local_cache [String] directory of local DB
7
- def initialize(global_cache, local_cache) # rubocop:disable Metrics/MethodLength
5
+ def initialize(global_cache, local_cache)
8
6
  @registry = Relaton::Registry.instance
9
- if Relaton.configuration.api_mode
10
- gpath = global_cache
11
- lpath = local_cache
12
- else
13
- gpath = global_cache && File.expand_path(global_cache)
14
- lpath = local_cache && File.expand_path(local_cache)
15
- end
7
+ gpath = global_cache && File.expand_path(global_cache)
8
+ lpath = local_cache && File.expand_path(local_cache)
16
9
  @db = open_cache_biblio(gpath, type: :global)
17
10
  @local_db = open_cache_biblio(lpath, type: :local)
18
11
  @static_db = open_cache_biblio File.expand_path "../relaton/static_cache", __dir__
@@ -525,12 +518,10 @@ module Relaton
525
518
  end
526
519
 
527
520
  def global_bibliocache_name
528
- Relaton.configuration.api_mode ? "cache" : "#{Dir.home}/.relaton/cache"
521
+ "#{Dir.home}/.relaton/cache"
529
522
  end
530
523
 
531
524
  def local_bibliocache_name(cachename)
532
- return nil if Relaton.configuration.api_mode || cachename.nil?
533
-
534
525
  cachename = "relaton" if cachename.empty?
535
526
  "#{cachename}/cache"
536
527
  end
@@ -1,6 +1,5 @@
1
1
  require "fileutils"
2
2
  require "timeout"
3
- require "relaton/storage"
4
3
 
5
4
  module Relaton
6
5
  class DbCache
@@ -11,15 +10,14 @@ module Relaton
11
10
  def initialize(dir, ext = "xml")
12
11
  @dir = dir
13
12
  @ext = ext
14
- @storage = Storage.instance
15
- FileUtils::mkdir_p @dir unless Relaton.configuration.api_mode
13
+ FileUtils::mkdir_p dir
16
14
  end
17
15
 
18
16
  # Move caches to anothe dir
19
17
  # @param new_dir [String, nil]
20
18
  # @return [String, nil]
21
19
  def mv(new_dir)
22
- return unless new_dir && @ext == "xml" && !Relaton.configuration.api_mode
20
+ return unless new_dir && @ext == "xml"
23
21
 
24
22
  if File.exist? new_dir
25
23
  warn "[relaton] WARNING: target directory exists \"#{new_dir}\""
@@ -32,9 +30,7 @@ module Relaton
32
30
 
33
31
  # Clear database
34
32
  def clear
35
- return if Relaton.configuration.api_mode
36
-
37
- FileUtils.rm_rf Dir.glob "#{dir}/*" if @ext == "xml" # if it's static DB
33
+ FileUtils.rm_rf Dir.glob "#{dir}/*" if @ext == "xml" # if it isn't a static DB
38
34
  end
39
35
 
40
36
  # Save item
@@ -47,8 +43,9 @@ module Relaton
47
43
  end
48
44
  /^(?<pref>[^(]+)(?=\()/ =~ key.downcase
49
45
  prefix_dir = "#{@dir}/#{pref}"
50
- file = "#{filename(key)}.#{ext(value)}"
51
- @storage.save prefix_dir, file, value
46
+ FileUtils::mkdir_p prefix_dir unless Dir.exist? prefix_dir
47
+ set_version prefix_dir
48
+ file_safe_write "#{filename(key)}.#{ext(value)}", value
52
49
  end
53
50
 
54
51
  # Read item
@@ -88,20 +85,29 @@ module Relaton
88
85
  # Returns all items
89
86
  # @return [Array<String>]
90
87
  def all(&block)
91
- @storage.all(@dir, &block)
88
+ Dir.glob("#{@dir}/**/*.{xml,yml,yaml}").sort.map do |f|
89
+ content = File.read(f, encoding: "utf-8")
90
+ block ? yield(f, content) : content
91
+ end
92
92
  end
93
93
 
94
94
  # Delete item
95
95
  # @param key [String]
96
96
  def delete(key)
97
- @storage.delete filename(key)
97
+ file = filename key
98
+ f = search_ext file
99
+ File.delete f if f
98
100
  end
99
101
 
100
102
  # Check if version of the DB match to the gem grammar hash.
101
103
  # @param fdir [String] dir pathe to flover cache
102
104
  # @return [Boolean]
103
105
  def check_version?(fdir)
104
- @storage.check_version? fdir
106
+ version_file = "#{fdir}/version"
107
+ return false unless File.exist? version_file
108
+
109
+ v = File.read version_file, encoding: "utf-8"
110
+ v.strip == self.class.grammar_hash(fdir)
105
111
  end
106
112
 
107
113
  # if cached reference is undated, expire it after 60 days
@@ -120,7 +126,17 @@ module Relaton
120
126
  # @param key [String]
121
127
  # @return [String, NilClass]
122
128
  def get(key)
123
- @storage.get filename(key), static: @ext == "yml"
129
+ file = filename key
130
+ return unless (f = search_ext(file))
131
+
132
+ File.read(f, encoding: "utf-8")
133
+ end
134
+
135
+ # @param fdir [String] dir pathe to flover cache
136
+ # @return [String]
137
+ def self.grammar_hash(fdir)
138
+ type = fdir.split("/").last
139
+ Relaton::Registry.instance.by_type(type)&.grammar_hash
124
140
  end
125
141
 
126
142
  private
@@ -135,6 +151,31 @@ module Relaton
135
151
  end
136
152
  end
137
153
 
154
+ #
155
+ # Checks if there is file with xml or txt extension and return filename with
156
+ # the extension.
157
+ #
158
+ # @param file [String]
159
+ # @return [String, NilClass]
160
+ def search_ext(file)
161
+ if File.exist?("#{file}.#{@ext}")
162
+ "#{file}.#{@ext}"
163
+ elsif File.exist? "#{file}.notfound"
164
+ "#{file}.notfound"
165
+ elsif File.exist? "#{file}.redirect"
166
+ "#{file}.redirect"
167
+ end
168
+ end
169
+
170
+ # Set version of the DB to the gem grammar hash.
171
+ # @param fdir [String] dir pathe to flover cache
172
+ def set_version(fdir)
173
+ file_version = "#{fdir}/version"
174
+ unless File.exist? file_version
175
+ file_safe_write file_version, self.class.grammar_hash(fdir)
176
+ end
177
+ end
178
+
138
179
  # Return item's file name
139
180
  # @param key [String]
140
181
  # @return [String]
@@ -158,11 +199,13 @@ module Relaton
158
199
  code
159
200
  end
160
201
 
161
- # Return item's subdir
162
- # @param key [String]
163
- # @return [String]
164
- # def prefix(key)
165
- # key.downcase.match(/^[^(]+(?=\()/).to_s
166
- # end
202
+ # @param file [String]
203
+ # @content [String]
204
+ def file_safe_write(file, content)
205
+ File.open file, File::RDWR | File::CREAT, encoding: "UTF-8" do |f|
206
+ Timeout.timeout(10) { f.flock File::LOCK_EX }
207
+ f.write content
208
+ end
209
+ end
167
210
  end
168
211
  end
@@ -1,3 +1,3 @@
1
1
  module Relaton
2
- VERSION = "1.8.pre3".freeze
2
+ VERSION = "1.8.pre4".freeze
3
3
  end
data/relaton.gemspec CHANGED
@@ -30,7 +30,6 @@ Gem::Specification.new do |spec|
30
30
  spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
31
31
 
32
32
  # spec.add_dependency "algoliasearch"
33
- spec.add_dependency "aws-sdk-s3", "~> 1.96.0"
34
33
  spec.add_dependency "relaton-bipm", "~> 1.8.0"
35
34
  spec.add_dependency "relaton-bsi", "~> 1.8.0"
36
35
  spec.add_dependency "relaton-calconnect", "~> 1.8.0"
@@ -1,22 +1,22 @@
1
1
  RSpec.describe Relaton::Db do
2
2
  before(:each) { FileUtils.rm_rf %w[testcache testcache2] }
3
3
 
4
- context "initialization in API mode" do
5
- before(:each) { Relaton.configure { |c| c.api_mode = true } }
6
- after(:each) { Relaton.configure { |c| c.api_mode = false } }
7
-
8
- it do
9
- db = Relaton::Db.new "cache", nil
10
- cache = db.instance_variable_get :@db
11
- expect(cache.dir).to eq "cache"
12
- end
13
-
14
- it "with default cache directory" do
15
- db = Relaton::Db.init_bib_caches global_cache: true
16
- cache = db.instance_variable_get :@db
17
- expect(cache.dir).to eq "cache"
18
- end
19
- end
4
+ # context "initialization in API mode" do
5
+ # before(:each) { Relaton.configure { |c| c.api_mode = true } }
6
+ # after(:each) { Relaton.configure { |c| c.api_mode = false } }
7
+
8
+ # it do
9
+ # db = Relaton::Db.new "cache", nil
10
+ # cache = db.instance_variable_get :@db
11
+ # expect(cache.dir).to eq "cache"
12
+ # end
13
+
14
+ # it "with default cache directory" do
15
+ # db = Relaton::Db.init_bib_caches global_cache: true
16
+ # cache = db.instance_variable_get :@db
17
+ # expect(cache.dir).to eq "cache"
18
+ # end
19
+ # end
20
20
 
21
21
  context "modifing database" do
22
22
  let(:db) { Relaton::Db.new "testcache", "testcache2" }
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.pre3
4
+ version: 1.8.pre4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-11 00:00:00.000000000 Z
11
+ date: 2021-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: aws-sdk-s3
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 1.96.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 1.96.0
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: relaton-bipm
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -512,7 +498,6 @@ files:
512
498
  - lib/relaton/static_cache/iso/iso_iec_dir_2_iso.yml
513
499
  - lib/relaton/static_cache/iso/iso_iec_dir_iec_sup.yml
514
500
  - lib/relaton/static_cache/iso/iso_iec_dir_jtc_1_sup.yml
515
- - lib/relaton/storage.rb
516
501
  - lib/relaton/util.rb
517
502
  - lib/relaton/version.rb
518
503
  - lib/relaton/workers_pool.rb
@@ -522,7 +507,6 @@ files:
522
507
  - spec/relaton/db_spec.rb
523
508
  - spec/relaton/processor_spec.rb
524
509
  - spec/relaton/regirtry_spec.rb
525
- - spec/relaton/storage_spec.rb
526
510
  - spec/relaton_spec.rb
527
511
  - spec/spec_helper.rb
528
512
  - spec/support/gb_t_20223_2006.xml
@@ -1,186 +0,0 @@
1
- require "aws-sdk-s3"
2
-
3
- module Relaton
4
- #
5
- # Man
6
- #
7
- class Storage
8
- include Singleton
9
-
10
- def initialize
11
- if Relaton.configuration.api_mode
12
- @s3 = Aws::S3::Client.new
13
- end
14
- end
15
-
16
- #
17
- # Save file to storage
18
- #
19
- # @param dir [String]
20
- # @param key [String]
21
- # @param value [String]
22
- #
23
- def save(dir, key, value)
24
- set_version dir
25
- if Relaton.configuration.api_mode then s3_write key, value
26
- else file_safe_write key, value
27
- end
28
- end
29
-
30
- #
31
- # Returns all items
32
- #
33
- # @param dir [String]
34
- #
35
- # @return [Array<String>]
36
- #
37
- def all(dir, &block)
38
- return all_s3 dir, &block if Relaton.configuration.api_mode
39
-
40
- Dir.glob("#{dir}/**/*.{xml,yml,yaml}").sort.map do |f|
41
- content = File.read(f, encoding: "utf-8")
42
- block ? yield(f, content) : content
43
- end
44
- end
45
-
46
- # Delete item
47
- # @param key [String] path to file without extension
48
- def delete(key)
49
- f = search_ext(key)
50
- if Relaton.configuration.api_mode && f
51
- @s3.delete_object bucket: ENV["AWS_BUCKET"], key: f
52
- elsif f then File.delete f
53
- end
54
- end
55
-
56
- # Check if version of the DB match to the gem grammar hash.
57
- # @param fdir [String] dir pathe to flavor cache
58
- # @return [Boolean]
59
- def check_version?(fdir)
60
- file_version = "#{fdir}/version"
61
- if Relaton.configuration.api_mode
62
- check_version_s3? file_version, fdir
63
- else
64
- return false unless File.exist? fdir
65
-
66
- v = File.read file_version, encoding: "utf-8"
67
- v.strip == grammar_hash(fdir)
68
- end
69
- end
70
-
71
- # Reads file by a key
72
- #
73
- # @param key [String]
74
- # @return [String, NilClass]
75
- def get(key, static: false)
76
- return unless (f = search_ext(key, static: static))
77
-
78
- if Relaton.configuration.api_mode && !static
79
- s3_read f
80
- else
81
- File.read(f, encoding: "utf-8")
82
- end
83
- end
84
-
85
- private
86
-
87
- # Check if version of the DB match to the gem grammar hash.
88
- # @param file_version [String] dir pathe to flover cache
89
- # @param dir [String] fdir pathe to flavor cache
90
- # @return [Boolean]
91
- def check_version_s3?(file_version, fdir)
92
- s3_read(file_version) == grammar_hash(fdir)
93
- rescue Aws::S3::Errors::NoSuchKey
94
- false
95
- end
96
-
97
- #
98
- # Read file form AWS S#
99
- #
100
- # @param [String] key file name
101
- #
102
- # @return [String] content
103
- #
104
- def s3_read(key)
105
- obj = @s3.get_object bucket: ENV["AWS_BUCKET"], key: key
106
- obj.body.read
107
- end
108
-
109
- #
110
- # Write file to AWS S3
111
- #
112
- # @param [String] key
113
- # @param [String] value
114
- #
115
- def s3_write(key, value)
116
- @s3.put_object(bucket: ENV["AWS_BUCKET"], key: key, body: value,
117
- content_type: "text/plain; charset=utf-8")
118
- end
119
-
120
- #
121
- # Returns all items
122
- #
123
- # @param dir [String]
124
- #
125
- # @return [Array<String>]
126
- #
127
- def all_s3(dir)
128
- list = @s3.list_objects_v2 bucket: ENV["AWS_BUCKET"], prefix: dir
129
- list.contents.select { |i| i.key.match?(/\.xml$/) }.sort_by(&:key).map do |item|
130
- content = s3_read item.key
131
- block_given? ? yield(item.key, content) : content
132
- end
133
- end
134
-
135
- #
136
- # Checks if there is file with xml or txt extension and return filename with
137
- # the extension.
138
- #
139
- # @param file [String]
140
- # @return [String, NilClass]
141
- def search_ext(file, static: false)
142
- if Relaton.configuration.api_mode && !static
143
- fs = @s3.list_objects_v2 bucket: ENV["AWS_BUCKET"], prefix: "#{file}."
144
- fs.contents.first&.key
145
- else
146
- Dir["#{file}.*"].first
147
- end
148
- end
149
-
150
- # Set version of the DB to the gem grammar hash.
151
- # @param fdir [String] dir pathe to flover cache
152
- def set_version(fdir)
153
- file_version = "#{fdir}/version"
154
- return set_version_s3 file_version, fdir if Relaton.configuration.api_mode
155
-
156
- FileUtils::mkdir_p fdir unless Dir.exist?(fdir)
157
- unless File.exist? file_version
158
- file_safe_write file_version, grammar_hash(fdir)
159
- end
160
- end
161
-
162
- # Set version of the DB to the gem grammar hash.
163
- # @param fdir [String] dir pathe to flover cache
164
- def set_version_s3(fver, dir)
165
- @s3.head_object bucket: ENV["AWS_BUCKET"], key: fver
166
- rescue Aws::S3::Errors::NotFound
167
- s3_write fver, grammar_hash(dir)
168
- end
169
-
170
- # @param file [String]
171
- # @content [String]
172
- def file_safe_write(file, content)
173
- File.open file, File::RDWR | File::CREAT, encoding: "UTF-8" do |f|
174
- Timeout.timeout(10) { f.flock File::LOCK_EX }
175
- f.write content
176
- end
177
- end
178
-
179
- # @param fdir [String] dir pathe to flover cache
180
- # @return [String]
181
- def grammar_hash(fdir)
182
- type = fdir.split("/").last
183
- Relaton::Registry.instance.by_type(type)&.grammar_hash
184
- end
185
- end
186
- end
@@ -1,130 +0,0 @@
1
- RSpec.describe Relaton::Storage do
2
- context "API mode" do
3
- before(:each) do
4
- Relaton.configure do |config|
5
- config.api_mode = true
6
- end
7
- Singleton.__init__ Relaton::Storage
8
- end
9
-
10
- after(:each) do
11
- Relaton.configure do |config|
12
- config.api_mode = false
13
- end
14
- Singleton.__init__ Relaton::Storage
15
- end
16
-
17
- let(:storage) { Relaton::Storage.instance }
18
- let(:bucket) { "test-bucket" }
19
-
20
- it "save document to S3" do
21
- dir = "cahche/iso"
22
- # file = "doc.xml"
23
- body = "<doc>Test doc</doc>"
24
- key = File.join dir, "doc.xml"
25
- client = double "AwsClient"
26
- expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
27
- expect(client).to receive(:head_object).with(bucket: bucket, key: "cahche/iso/version")
28
- expect(client).to receive(:put_object).with(
29
- bucket: bucket, key: key, body: body,
30
- content_type: "text/plain; charset=utf-8"
31
- )
32
- expect(Aws::S3::Client).to receive(:new).and_return client
33
- storage.save dir, key, body
34
- end
35
-
36
- it "read document from S3" do
37
- dir = "cahche/iso"
38
- # file = "doc.xml"
39
- body = "<doc>Test doc</doc>"
40
- key = File.join dir, "doc"
41
- client = double "AwsClient"
42
- item = double "Item", key: "#{key}.xml"
43
- list = double "List", contents: [item]
44
- obj_body = double "Body", read: body
45
- obj = double "Object", body: obj_body
46
- expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
47
- expect(client).to receive(:list_objects_v2).with(bucket: bucket, prefix: "#{key}.").and_return list
48
- expect(client).to receive(:get_object).with(bucket: bucket, key: "#{key}.xml").and_return obj
49
- expect(Aws::S3::Client).to receive(:new).and_return client
50
- expect(storage.get(key)).to eq body
51
- end
52
-
53
- it "delete document from S3" do
54
- key = "cache/iso/doc"
55
- client = double "AwsClient"
56
- item = double "Item", key: "#{key}.xml"
57
- list = double "List", contents: [item]
58
- expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
59
- expect(client).to receive(:list_objects_v2).with(bucket: bucket, prefix: "#{key}.").and_return list
60
- expect(client).to receive(:delete_object).with(bucket: bucket, key: "#{key}.xml")
61
- expect(Aws::S3::Client).to receive(:new).and_return client
62
- storage.delete key
63
- end
64
-
65
- it "return all the documents from S3" do
66
- dir = "cahche/iso"
67
- # file = "doc.xml"
68
- body = "<doc>Test doc</doc>"
69
- key = File.join dir, "doc.xml"
70
- client = double "AwsClient"
71
- expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
72
- item = double "Item", key: key
73
- list = double "List", contents: [item]
74
- obj_body = double "Body", read: body
75
- obj = double "Object", body: obj_body
76
- expect(client).to receive(:list_objects_v2).with(bucket: bucket, prefix: dir).and_return list
77
- expect(client).to receive(:get_object).with(bucket: bucket, key: key).and_return obj
78
- expect(Aws::S3::Client).to receive(:new).and_return client
79
- contents = storage.all dir
80
- expect(contents).to eq [body]
81
- end
82
-
83
- it "set version" do
84
- dir = "cahche/iso"
85
- key = File.join dir, "version"
86
- hash = Relaton::Registry.instance.by_type("iso").grammar_hash
87
- client = double "AwsClient"
88
- expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket).twice
89
- # expect(ENV).to receive(:[]).and_call_original
90
- error = Aws::S3::Errors::NotFound.new Seahorse::Client::RequestContext.new, ""
91
- expect(client).to receive(:head_object).with(bucket: bucket, key: key)
92
- .and_raise error
93
- expect(client).to receive(:put_object).with(
94
- bucket: bucket, key: key, body: hash,
95
- content_type: "text/plain; charset=utf-8"
96
- )
97
- expect(Aws::S3::Client).to receive(:new).and_return client
98
- storage.send :set_version, dir
99
- end
100
-
101
- context "check version" do
102
- it "valid" do
103
- dir = "cahche/iso"
104
- key = File.join dir, "version"
105
- hash = Relaton::Registry.instance.by_type("iso").grammar_hash
106
- client = double "AwsClient"
107
- obj_body = double "Body", read: hash
108
- obj = double "Object", body: obj_body
109
- expect(client).to receive(:get_object).with(bucket: bucket, key: key).and_return obj
110
- expect(Aws::S3::Client).to receive(:new).and_return client
111
- expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket)
112
- expect(storage.check_version?(dir)).to be true
113
- end
114
-
115
- it "version file doesn't exist" do
116
- dir = "cahche/iso"
117
- key = File.join dir, "version"
118
- # hash = "invalid"
119
- client = double "AwsClient"
120
- # obj_body = double "Body", read: hash
121
- # obj = double "Object", body: obj_body
122
- error = Aws::S3::Errors::NoSuchKey.new Seahorse::Client::RequestContext.new, ""
123
- expect(client).to receive(:get_object).with(bucket: bucket, key: key).and_raise error
124
- expect(Aws::S3::Client).to receive(:new).and_return client
125
- expect(ENV).to receive(:[]).with("AWS_BUCKET").and_return(bucket)
126
- expect(storage.check_version?(dir)).to be false
127
- end
128
- end
129
- end
130
- end