wetransfer 0.9.0.beta1 → 0.9.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/we_transfer_client/version.rb +1 -1
- data/wetransfer.gemspec +1 -1
- metadata +1 -23
- data/spec/board_integration_spec.rb +0 -68
- data/spec/features/add_items_to_board_spec.rb +0 -55
- data/spec/features/create_board_spec.rb +0 -46
- data/spec/features/get_board_spec.rb +0 -34
- data/spec/features/transfer_spec.rb +0 -41
- data/spec/fixtures/Japan-01.jpg +0 -0
- data/spec/fixtures/Japan-02.jpg +0 -0
- data/spec/spec_helper.rb +0 -39
- data/spec/transfer_integration_spec.rb +0 -54
- data/spec/we_transfer_client/board_builder_spec.rb +0 -66
- data/spec/we_transfer_client/boards_spec.rb +0 -56
- data/spec/we_transfer_client/future_board_spec.rb +0 -98
- data/spec/we_transfer_client/future_file_spec.rb +0 -48
- data/spec/we_transfer_client/future_link_spec.rb +0 -44
- data/spec/we_transfer_client/future_transfer_spec.rb +0 -39
- data/spec/we_transfer_client/remote_board_spec.rb +0 -92
- data/spec/we_transfer_client/remote_file_spec.rb +0 -91
- data/spec/we_transfer_client/remote_link_spec.rb +0 -33
- data/spec/we_transfer_client/remote_transfer_spec.rb +0 -101
- data/spec/we_transfer_client/transfer_builder_spec.rb +0 -58
- data/spec/we_transfer_client/transfers_spec.rb +0 -45
- data/spec/we_transfer_client_spec.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2464046d0465579af0bad563dcb67a80aa4cabadc0cea93ad332a525011498ef
|
4
|
+
data.tar.gz: d40ef8d567e6d8da3c409947f83e486b6dbc34e2af081c1d75d3535a61bd2dbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d59a3df8c90de97d1145ac16e9f6ab233960619e52d39049c3b94ea07e9abefb82f57101fa1820e13ce672d7e4845cc92439e3dc3ffb200d4c9a700310473c8
|
7
|
+
data.tar.gz: dc11d22428b4daf9373de492788d99d9a1cb73417f4e55fa9191facd443a931a0fa96d9d13bca92dada611e14f5aeb1337b2a98b6f2af8de08a3643f2c0b2708
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ For your API key and additional info please visit our [developer portal](https:/
|
|
24
24
|
Add this line to your application's Gemfile:
|
25
25
|
|
26
26
|
```ruby
|
27
|
-
gem 'wetransfer', version: '0.9.0.
|
27
|
+
gem 'wetransfer', version: '0.9.0.beta2'
|
28
28
|
```
|
29
29
|
|
30
30
|
And then execute:
|
data/wetransfer.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
'public gem pushes.'
|
24
24
|
end
|
25
25
|
|
26
|
-
spec.files = `git ls-files -z`.split("\x0")
|
26
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f =~ /^spec/ }
|
27
27
|
spec.bindir = 'exe'
|
28
28
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
29
29
|
spec.require_paths = ['lib']
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wetransfer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.0.
|
4
|
+
version: 0.9.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Noah Berman
|
@@ -196,28 +196,6 @@ files:
|
|
196
196
|
- lib/we_transfer_client/transfer_builder.rb
|
197
197
|
- lib/we_transfer_client/transfers.rb
|
198
198
|
- lib/we_transfer_client/version.rb
|
199
|
-
- spec/board_integration_spec.rb
|
200
|
-
- spec/features/add_items_to_board_spec.rb
|
201
|
-
- spec/features/create_board_spec.rb
|
202
|
-
- spec/features/get_board_spec.rb
|
203
|
-
- spec/features/transfer_spec.rb
|
204
|
-
- spec/fixtures/Japan-01.jpg
|
205
|
-
- spec/fixtures/Japan-02.jpg
|
206
|
-
- spec/spec_helper.rb
|
207
|
-
- spec/transfer_integration_spec.rb
|
208
|
-
- spec/we_transfer_client/board_builder_spec.rb
|
209
|
-
- spec/we_transfer_client/boards_spec.rb
|
210
|
-
- spec/we_transfer_client/future_board_spec.rb
|
211
|
-
- spec/we_transfer_client/future_file_spec.rb
|
212
|
-
- spec/we_transfer_client/future_link_spec.rb
|
213
|
-
- spec/we_transfer_client/future_transfer_spec.rb
|
214
|
-
- spec/we_transfer_client/remote_board_spec.rb
|
215
|
-
- spec/we_transfer_client/remote_file_spec.rb
|
216
|
-
- spec/we_transfer_client/remote_link_spec.rb
|
217
|
-
- spec/we_transfer_client/remote_transfer_spec.rb
|
218
|
-
- spec/we_transfer_client/transfer_builder_spec.rb
|
219
|
-
- spec/we_transfer_client/transfers_spec.rb
|
220
|
-
- spec/we_transfer_client_spec.rb
|
221
199
|
- wetransfer.gemspec
|
222
200
|
homepage: https://developers.wetransfer.com
|
223
201
|
licenses:
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WeTransfer::Client do
|
4
|
-
let(:small_file_name) { 'Japan-02.jpg' }
|
5
|
-
let(:big_file) { File.open(fixtures_dir + 'Japan-01.jpg', 'rb') }
|
6
|
-
let(:client) do
|
7
|
-
WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'))
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'creates a board with files and web items as a block' do
|
11
|
-
# Create a board with three items, one small file, one multipart file, and one web url
|
12
|
-
board = client.create_board_and_upload_items(name: 'Test Board', description: 'Test description') do |b|
|
13
|
-
b.add_file(name: File.basename(__FILE__), io: File.open(__FILE__, 'rb'))
|
14
|
-
b.add_file(name: 'big file', io: big_file)
|
15
|
-
b.add_file_at(path: fixtures_dir + small_file_name)
|
16
|
-
b.add_web_url(url: 'http://www.wetransfer.com', title: 'WeTransfer Website')
|
17
|
-
end
|
18
|
-
|
19
|
-
# the board url is set
|
20
|
-
expect(board.url =~ %r|https://we.tl/b-|).to be_truthy
|
21
|
-
|
22
|
-
expect(board.items.map(&:class)).to eq([RemoteFile, RemoteFile, RemoteFile, RemoteLink])
|
23
|
-
expect(board.items[1].multipart.part_numbers).to be > 1
|
24
|
-
expect(board.items.count).to be(4)
|
25
|
-
|
26
|
-
# TODO: make these experimental steps public
|
27
|
-
# # Add two new items to the board, one small file and one web url
|
28
|
-
# client.add_items(board: board) do |b|
|
29
|
-
# b.add_file(name: File.basename(__FILE__), io: File.open(__FILE__, 'rb'))
|
30
|
-
# b.add_web_url(url: 'http://www.google.com', title: 'google')
|
31
|
-
# end
|
32
|
-
# expect(board.items.count).to be(6)
|
33
|
-
|
34
|
-
# # Check if the board includes 3 File items and 2 Link items
|
35
|
-
# expect(board.items.select { |i| i.type == 'file' }.count).to be(4)
|
36
|
-
# expect(board.items.select { |i| i.type == 'link' }.count).to be(2)
|
37
|
-
|
38
|
-
# # Upload the Files to the Board
|
39
|
-
# file_items = board.items.select { |i| i.type == 'file' }
|
40
|
-
# client.upload_file(object: board, file: file_items[0], io: File.open(__FILE__, 'rb'))
|
41
|
-
# client.upload_file(object: board, file: file_items[1], io: big_file)
|
42
|
-
# client.upload_file(object: board, file: file_items[2], io: File.open(fixtures_dir + small_file_name, 'rb'))
|
43
|
-
# client.upload_file(object: board, file: file_items[3], io: File.open(__FILE__, 'rb'))
|
44
|
-
|
45
|
-
# # Complete all the files of the board
|
46
|
-
# file_items.each do |item|
|
47
|
-
# client.complete_file!(object: board, file: item)
|
48
|
-
# end
|
49
|
-
|
50
|
-
# Do a get request to see if url is available
|
51
|
-
response = Faraday.get(board.url)
|
52
|
-
|
53
|
-
# that should redirect us...
|
54
|
-
expect(response.status).to eq(302)
|
55
|
-
# ... to a board in the wetransfer domain
|
56
|
-
expect(response['location']).to start_with('https://boards.wetransfer')
|
57
|
-
|
58
|
-
# Check for the Boards status to be downloadable
|
59
|
-
resulting_board = loop do
|
60
|
-
res = client.get_board(board: board)
|
61
|
-
break res if res.state != 'processing'
|
62
|
-
sleep 1
|
63
|
-
end
|
64
|
-
|
65
|
-
expect(resulting_board.state).to eq('downloadable')
|
66
|
-
expect(resulting_board.items.count).to be(4)
|
67
|
-
end
|
68
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WeTransfer::Client::Boards do
|
4
|
-
let(:client) { WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY')) }
|
5
|
-
let(:board) do
|
6
|
-
client.create_board(name: 'Test Board', description: 'Test Descritpion')
|
7
|
-
end
|
8
|
-
|
9
|
-
describe '#add_items' do
|
10
|
-
before do
|
11
|
-
skip "this interface is still experimental"
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'adds items to a board' do
|
15
|
-
client.add_items(board: board) do |b|
|
16
|
-
b.add_file(name: File.basename(__FILE__), io: File.open(__FILE__, 'rb'))
|
17
|
-
b.add_file_at(path: fixtures_dir + 'Japan-02.jpg')
|
18
|
-
b.add_web_url(url: 'http://www.google.com', title: 'google')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'fails when no block is given' do
|
23
|
-
expect {
|
24
|
-
client.add_items(board: board)
|
25
|
-
}.to raise_error ArgumentError, /No items/
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'fails when no board is passed as keyword argument' do
|
29
|
-
expect {
|
30
|
-
client.add_items do |b|
|
31
|
-
b.add_file_at(path: fixtures_dir + 'Japan-01.jpg')
|
32
|
-
end
|
33
|
-
}.to raise_error ArgumentError, /board/
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'fails when file is not found' do
|
37
|
-
expect {
|
38
|
-
client.add_items(board: board) do |b|
|
39
|
-
b.add_file(name: 'file_not_found.rb', io: File.open('/path/to/non-existent-file.rb', 'r'))
|
40
|
-
end
|
41
|
-
}.to raise_error Errno::ENOENT, /No such file/
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'fails when board is not a existing remote board' do
|
45
|
-
new_board = RemoteBoard.new(id: 123456, state: 'proccessing', url: 'https://www.we.tl/123456', name: 'fake board')
|
46
|
-
expect {
|
47
|
-
client.add_items(board: new_board) do |b|
|
48
|
-
b.add_file(name: File.basename(__FILE__), io: File.open(__FILE__, 'rb'))
|
49
|
-
b.add_file_at(path: fixtures_dir + 'Japan-01.jpg')
|
50
|
-
b.add_web_url(url: 'http://www.google.com', title: 'google')
|
51
|
-
end
|
52
|
-
}.to raise_error WeTransfer::Client::Error, /404 code/
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WeTransfer::Client::Boards do
|
4
|
-
let(:big_file) { File.open(fixtures_dir + 'Japan-01.jpg', 'r') }
|
5
|
-
let(:client) { WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY')) }
|
6
|
-
|
7
|
-
describe '#create_board' do
|
8
|
-
before {
|
9
|
-
skip "this interface is still experimental"
|
10
|
-
}
|
11
|
-
|
12
|
-
it 'creates a remote board' do
|
13
|
-
client.create_board(name: 'Test Board', description: 'Test Descritpion')
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'creates a board with items' do
|
17
|
-
client.create_board(name: 'Test Board', description: 'Test descrition') do |b|
|
18
|
-
b.add_file(name: File.basename(__FILE__), io: File.open(__FILE__, 'rb'))
|
19
|
-
b.add_file(name: 'big file', io: big_file)
|
20
|
-
b.add_web_url(url: 'http://www.wetransfer.com', title: 'WeTransfer Website')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'fails when name is missing' do
|
25
|
-
expect {
|
26
|
-
client.create_board(name: '', description: 'Test Descritpion')
|
27
|
-
}.to raise_error WeTransfer::Client::Error, /400 code/
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'fails when file path is wrong' do
|
31
|
-
expect {
|
32
|
-
client.create_board(name: 'Test Board', description: 'Test descrition') do |b|
|
33
|
-
b.add_file(name: 'file_not_found.rb', io: File.open('path/to/non-existing-file.rb', 'r'))
|
34
|
-
end
|
35
|
-
}.to raise_error Errno::ENOENT, /No such file/
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'fails when file name is missing' do
|
39
|
-
expect {
|
40
|
-
client.create_board(name: 'Test Board', description: 'Test descrition') do |b|
|
41
|
-
b.add_file(name: '', io: File.open(__FILE__, 'rb'))
|
42
|
-
end
|
43
|
-
}.to raise_error WeTransfer::Client::Error, /400 code/
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WeTransfer::Client::Boards do
|
4
|
-
let(:client) do
|
5
|
-
WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'))
|
6
|
-
end
|
7
|
-
|
8
|
-
let(:board) do
|
9
|
-
client.create_board(name: 'Test Board', description: 'Test Descritpion')
|
10
|
-
end
|
11
|
-
|
12
|
-
describe '#get_board' do
|
13
|
-
before do
|
14
|
-
skip "this interface is still experimental"
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'it gets a exisiting board' do
|
18
|
-
client.get_board(board: board)
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'fails when no board is given' do
|
22
|
-
expect {
|
23
|
-
client.get_board
|
24
|
-
}.to raise_error ArgumentError, /board/
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'fails when board doenst exists' do
|
28
|
-
new_board = RemoteBoard.new(id: 123456, state: 'proccessing', url: 'https://www.we.tl/123456', name: 'fake board')
|
29
|
-
expect {
|
30
|
-
client.get_board(board: new_board)
|
31
|
-
}.to raise_error WeTransfer::Client::Error, /404 code/
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WeTransfer::Client::Transfers do
|
4
|
-
let(:client) do
|
5
|
-
WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'), logger: test_logger)
|
6
|
-
end
|
7
|
-
|
8
|
-
let(:file_location) { fixtures_dir + 'Japan-02.jpg' }
|
9
|
-
|
10
|
-
let(:created_transfer) do
|
11
|
-
client.create_transfer(message: 'Test transfer') do |builder|
|
12
|
-
builder.add_file(name: File.basename(file_location), io: File.open(file_location, 'rb'))
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "#create_transfer" do
|
17
|
-
before do
|
18
|
-
skip "this interface is still experimental"
|
19
|
-
end
|
20
|
-
|
21
|
-
it "is needed to add a file" do
|
22
|
-
expect { client.create_transfer(message: "Transfer name") }
|
23
|
-
.to raise_error(ArgumentError, /^No files were added/)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "accepts a block to add files by their location" do
|
27
|
-
client.create_transfer(message: 'Test transfer') do |builder|
|
28
|
-
builder.add_file_at(path: file_location)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
it "accepts a block to add files by their io" do
|
33
|
-
client.create_transfer(message: 'Test transfer') do |builder|
|
34
|
-
builder.add_file(name: File.basename(file_location), io: File.open(file_location, 'rb'))
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "#complete_transfer"
|
40
|
-
describe "#get_transfer"
|
41
|
-
end
|
data/spec/fixtures/Japan-01.jpg
DELETED
Binary file
|
data/spec/fixtures/Japan-02.jpg
DELETED
Binary file
|
data/spec/spec_helper.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'simplecov'
|
2
|
-
require 'securerandom'
|
3
|
-
|
4
|
-
SimpleCov.start do
|
5
|
-
add_filter '/spec/'
|
6
|
-
end
|
7
|
-
|
8
|
-
require 'we_transfer_client'
|
9
|
-
require 'pry'
|
10
|
-
require 'rspec'
|
11
|
-
require 'bundler'
|
12
|
-
Bundler.setup
|
13
|
-
require 'tempfile'
|
14
|
-
require 'dotenv'
|
15
|
-
Dotenv.load
|
16
|
-
|
17
|
-
module SpecHelpers
|
18
|
-
def fixtures_dir
|
19
|
-
__dir__ + '/fixtures/'
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_logger
|
23
|
-
Logger.new($stderr).tap { |log| log.level = Logger::WARN }
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
RSpec.configure do |config|
|
28
|
-
config.include SpecHelpers
|
29
|
-
config.extend SpecHelpers
|
30
|
-
|
31
|
-
config.expect_with :rspec do |c|
|
32
|
-
c.syntax = :expect
|
33
|
-
end
|
34
|
-
|
35
|
-
config.filter_run :focus
|
36
|
-
config.run_all_when_everything_filtered = true
|
37
|
-
config.default_formatter = 'doc'
|
38
|
-
config.order = :random
|
39
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
describe WeTransfer::Client do
|
6
|
-
let(:client) { WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY')) }
|
7
|
-
let(:file_locations) { %w[Japan-01.jpg Japan-02.jpg] }
|
8
|
-
|
9
|
-
describe described_class::Transfers do
|
10
|
-
pending 'creates a transfer with multiple files' do
|
11
|
-
skip "this interface is still experimental"
|
12
|
-
transfer = client.create_transfer(message: 'Japan: 🏯 & 🎎') do |builder|
|
13
|
-
file_locations.each do |file_location|
|
14
|
-
builder.add_file(name: File.basename(file_location), io: File.open(fixtures_dir + file_location, 'rb'))
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
expect(transfer).to be_kind_of(RemoteTransfer)
|
19
|
-
|
20
|
-
# it has an url that is not available (yet)
|
21
|
-
expect(transfer.url).to be(nil)
|
22
|
-
# it has no files (yet)
|
23
|
-
expect(transfer.files.first.url).to be(nil)
|
24
|
-
# it is in an uploading state
|
25
|
-
expect(transfer.state).to eq('uploading')
|
26
|
-
|
27
|
-
# TODO: uncouple file_locations and transfer.files
|
28
|
-
file_locations.each_with_index do |location, index|
|
29
|
-
client.upload_file(
|
30
|
-
object: transfer,
|
31
|
-
file: transfer.files[index],
|
32
|
-
io: File.open(fixtures_dir + location, 'rb')
|
33
|
-
)
|
34
|
-
client.complete_file!(
|
35
|
-
object: transfer,
|
36
|
-
file: transfer.files[index]
|
37
|
-
)
|
38
|
-
end
|
39
|
-
|
40
|
-
result = client.complete_transfer(transfer: transfer)
|
41
|
-
|
42
|
-
# it has an url that is available
|
43
|
-
expect(result.url =~ %r|^https://we.tl/t-|).to be_truthy
|
44
|
-
|
45
|
-
# it is in a processing state
|
46
|
-
expect(result.state).to eq('processing')
|
47
|
-
|
48
|
-
response = Faraday.get(result.url)
|
49
|
-
# it hits the short-url with redirect
|
50
|
-
expect(response.status).to eq(302)
|
51
|
-
expect(response['location']).to start_with('https://wetransfer.com/')
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe BoardBuilder do
|
4
|
-
describe '#initialize' do
|
5
|
-
it 'initializes with an empty array' do
|
6
|
-
expect(subject.items.empty?).to be(true)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe '#add_file' do
|
11
|
-
it 'returns an error when name is missing' do
|
12
|
-
expect {
|
13
|
-
subject.add_file(io: File.open(__FILE__, 'rb'))
|
14
|
-
}.to raise_error ArgumentError, /name/
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'returns an error when io is missing' do
|
18
|
-
expect {
|
19
|
-
subject.add_file(name: 'file name')
|
20
|
-
}.to raise_error ArgumentError, /io/
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'returns a error when file doesnt exists' do
|
24
|
-
expect {
|
25
|
-
subject.add_file(name: 'file name', io: File.open('foo', 'rb'))
|
26
|
-
}.to raise_error Errno::ENOENT
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'adds a file when name and io is given' do
|
30
|
-
subject.add_file(name: 'file name', io: File.open(__FILE__, 'rb'))
|
31
|
-
expect(subject.items.first).to be_kind_of(FutureFile)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe '#add_file_at' do
|
36
|
-
before do
|
37
|
-
skip "this interface is still experimental"
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'adds a file from a path' do
|
41
|
-
subject.add_file_at(path: __FILE__)
|
42
|
-
expect(subject.items.first).to be_kind_of(FutureFile)
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'throws a Error when file doesnt exists' do
|
46
|
-
expect {
|
47
|
-
subject.add_file_at(path: '/this/path/leads/to/nothing.exe')
|
48
|
-
}.to raise_error Errno::ENOENT
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'should call #add_file' do
|
52
|
-
client = WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'))
|
53
|
-
client.create_board(name: 'Test board', description: 'A board description') do |b|
|
54
|
-
expect(b).to receive(:add_file).with(name: anything, io: kind_of(::IO))
|
55
|
-
b.add_file_at(path: __FILE__)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe '#add_web_url' do
|
61
|
-
it 'adds a item to board when url and title are given' do
|
62
|
-
subject.add_web_url(url: 'http://www.wetransfer.com', title: 'wetransfer')
|
63
|
-
expect(subject.items.first).to be_kind_of(FutureLink)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
require_relative '../../lib/we_transfer_client.rb'
|
4
|
-
|
5
|
-
describe WeTransfer::Client::Boards do
|
6
|
-
describe '#create_board_and_upload_items' do
|
7
|
-
it 'creates a board and uploads the files' do
|
8
|
-
client = WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'))
|
9
|
-
board = client.create_board_and_upload_items(name: 'test', description: 'test description') do |b|
|
10
|
-
b.add_file(name: File.basename(__FILE__), io: File.open(__FILE__, 'rb'))
|
11
|
-
b.add_web_url(url: 'http://www.wetransfer.com', title: 'WeTransfer Website')
|
12
|
-
end
|
13
|
-
expect(board).to be_kind_of(RemoteBoard)
|
14
|
-
expect(board.url).to start_with('https://we.tl/')
|
15
|
-
expect(board.state).to eq('downloadable')
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe "experimental features" do
|
20
|
-
before do
|
21
|
-
skip "this interface is still experimental"
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '#create_board' do
|
25
|
-
it 'creates a board' do
|
26
|
-
client = WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'))
|
27
|
-
board = client.create_board(name: 'test', description: 'test description')
|
28
|
-
expect(board).to be_kind_of(RemoteBoard)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe "#add_items" do
|
33
|
-
it 'adds items to an existing board' do
|
34
|
-
client = WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'))
|
35
|
-
board = client.create_board(name: 'test', description: 'test description')
|
36
|
-
updated_board = client.add_items(board: board) do |b|
|
37
|
-
b.add_file(name: File.basename(__FILE__), io: File.open(__FILE__, 'rb'))
|
38
|
-
b.add_web_url(url: 'http://www.wetransfer.com', title: 'WeTransfer Website')
|
39
|
-
end
|
40
|
-
expect(updated_board).to be_kind_of(RemoteBoard)
|
41
|
-
expect(updated_board.items.size).to eq(2)
|
42
|
-
expect(updated_board.items.map(&:class)).to eq([RemoteFile, RemoteLink])
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe "#get_board" do
|
47
|
-
it 'gets board' do
|
48
|
-
client = WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'))
|
49
|
-
board = client.create_board(name: 'test', description: 'test description')
|
50
|
-
board_request = client.get_board(board: board)
|
51
|
-
|
52
|
-
expect(board_request).to be_kind_of(RemoteBoard)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,98 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FutureBoard do
|
4
|
-
let(:params) { { name: 'yes', description: 'A description about the board', items: [] } }
|
5
|
-
|
6
|
-
describe '#initializer' do
|
7
|
-
it 'raises ArgumentError when no name is given' do
|
8
|
-
params.delete(:name)
|
9
|
-
expect {
|
10
|
-
described_class.new(params)
|
11
|
-
}.to raise_exception ArgumentError, /name/
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'accepts a blank description' do
|
15
|
-
params.delete(:description)
|
16
|
-
described_class.new(params)
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'accepts a empty array as item argument' do
|
20
|
-
expect(described_class.new(params).items).to be_kind_of(Array)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '#to_initial_request_params' do
|
25
|
-
it 'has a name' do
|
26
|
-
as_params = described_class.new(params).to_initial_request_params
|
27
|
-
expect(as_params[:name]).to be_kind_of(String)
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'has a description' do
|
31
|
-
as_params = described_class.new(params).to_initial_request_params
|
32
|
-
expect(as_params[:description]).to be(params[:description])
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#to_request_params' do
|
37
|
-
it 'has a name' do
|
38
|
-
as_params = described_class.new(params).to_request_params
|
39
|
-
expect(as_params[:name]).to be_kind_of(String)
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'has a description' do
|
43
|
-
as_params = described_class.new(params).to_request_params
|
44
|
-
expect(as_params[:description]).to be(params[:description])
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'has items' do
|
48
|
-
file = FutureFile.new(name: 'yes', io: File.open(__FILE__, 'rb'))
|
49
|
-
params[:items] << file
|
50
|
-
as_params = described_class.new(params).to_request_params
|
51
|
-
expect(as_params[:items].count).to be(1)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe '#files' do
|
56
|
-
it 'returns only file items' do
|
57
|
-
file = FutureFile.new(name: 'yes', io: File.open(__FILE__, 'rb'))
|
58
|
-
link = FutureLink.new(url: 'https://www.wetransfer.com', title: 'WeTransfer')
|
59
|
-
future_board = described_class.new(params)
|
60
|
-
3.times do
|
61
|
-
future_board.items << file
|
62
|
-
future_board.items << link
|
63
|
-
end
|
64
|
-
expect(future_board.items.size).to eq(6)
|
65
|
-
expect(future_board.files.size).to eq(3)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe '#links' do
|
70
|
-
it 'returns only link items' do
|
71
|
-
file = FutureFile.new(name: 'yes', io: File.open(__FILE__, 'rb'))
|
72
|
-
link = FutureLink.new(url: 'https://www.wetransfer.com', title: 'WeTransfer')
|
73
|
-
future_board = described_class.new(params)
|
74
|
-
3.times do
|
75
|
-
future_board.items << file
|
76
|
-
future_board.items << link
|
77
|
-
end
|
78
|
-
expect(future_board.items.size).to eq(6)
|
79
|
-
expect(future_board.links.size).to eq(3)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe 'getters' do
|
84
|
-
let(:subject) { described_class.new(params) }
|
85
|
-
|
86
|
-
it '#name' do
|
87
|
-
subject.name
|
88
|
-
end
|
89
|
-
|
90
|
-
it '#description' do
|
91
|
-
subject.description
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'items' do
|
95
|
-
subject.items
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FutureFile do
|
4
|
-
let(:params) { { name: 'yes', io: File.open(__FILE__, 'rb') } }
|
5
|
-
|
6
|
-
describe '#initilizer' do
|
7
|
-
it 'needs an :io keyword arg' do
|
8
|
-
params.delete(:io)
|
9
|
-
|
10
|
-
expect {
|
11
|
-
described_class.new(params)
|
12
|
-
}.to raise_error(ArgumentError, /io/)
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'needs a :name keyword arg' do
|
16
|
-
params.delete(:name)
|
17
|
-
|
18
|
-
expect {
|
19
|
-
described_class.new(params)
|
20
|
-
}.to raise_error(ArgumentError, /name/)
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'succeeds if given all arguments' do
|
24
|
-
described_class.new(params)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe '#to_request_params' do
|
29
|
-
it 'returns a hash with name and size' do
|
30
|
-
as_params = described_class.new(params).to_request_params
|
31
|
-
|
32
|
-
expect(as_params[:name]).to eq('yes')
|
33
|
-
expect(as_params[:size]).to be_kind_of(Integer)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe 'getters' do
|
38
|
-
let(:subject) { described_class.new(params) }
|
39
|
-
|
40
|
-
it '#name' do
|
41
|
-
subject.name
|
42
|
-
end
|
43
|
-
|
44
|
-
it '#io' do
|
45
|
-
subject.io
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FutureLink do
|
4
|
-
let(:params) { { url: 'http://www.wetransfer.com', title: 'WeTransfer' } }
|
5
|
-
|
6
|
-
describe '#initializer' do
|
7
|
-
it 'needs a :url keyword arg' do
|
8
|
-
params.delete(:url)
|
9
|
-
expect {
|
10
|
-
described_class.new(params)
|
11
|
-
}.to raise_error(ArgumentError, /url/)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'takes url when no title is given' do
|
15
|
-
params.delete(:title)
|
16
|
-
expect(described_class.new(params).title).to be(params.fetch(:url))
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'succeeds if given all arguments' do
|
20
|
-
described_class.new(params)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '#to_request_params' do
|
25
|
-
it 'creates params properly' do
|
26
|
-
as_params = described_class.new(params).to_request_params
|
27
|
-
|
28
|
-
expect(as_params[:url]).to eq('http://www.wetransfer.com')
|
29
|
-
expect(as_params[:title]).to be_kind_of(String)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe 'getters' do
|
34
|
-
let(:subject) { described_class.new(params) }
|
35
|
-
|
36
|
-
it '#url' do
|
37
|
-
subject.url
|
38
|
-
end
|
39
|
-
|
40
|
-
it '#title' do
|
41
|
-
subject.title
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe FutureTransfer do
|
4
|
-
let(:transfer) { described_class }
|
5
|
-
|
6
|
-
describe '#initialize' do
|
7
|
-
it 'creates an empty array when initialized' do
|
8
|
-
expect(transfer.new(message: 'transfer').files).to be_kind_of(Array)
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'throws a error when message is not given' do
|
12
|
-
expect {
|
13
|
-
transfer.new
|
14
|
-
}.to raise_error ArgumentError
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe 'getters' do
|
19
|
-
it 'message' do
|
20
|
-
transfer.new(message: 'test').message
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'files' do
|
24
|
-
transfer.new(message: 'test').files
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe 'to_request_params' do
|
29
|
-
it 'includes the message' do
|
30
|
-
new_transfer = transfer.new(message: 'test')
|
31
|
-
expect(new_transfer.to_request_params[:message]).to be(new_transfer.message)
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'includes the files as an array' do
|
35
|
-
new_transfer = transfer.new(message: 'test')
|
36
|
-
expect(new_transfer.to_request_params[:files]).to eq([])
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe RemoteBoard do
|
5
|
-
subject { described_class.new(params) }
|
6
|
-
|
7
|
-
let(:params) {
|
8
|
-
{
|
9
|
-
id: SecureRandom.uuid,
|
10
|
-
state: 'downloadable',
|
11
|
-
url: 'http://wt.tl/123abcd',
|
12
|
-
name: 'RemoteBoard',
|
13
|
-
description: 'Test Description',
|
14
|
-
items: [
|
15
|
-
{
|
16
|
-
id: 's7l1urvgqs1b6u9v720180911093825',
|
17
|
-
name: 'board_integration_spec.rb',
|
18
|
-
size: 3036,
|
19
|
-
multipart: {
|
20
|
-
part_numbers: 1,
|
21
|
-
chunk_size: 3036
|
22
|
-
},
|
23
|
-
type: 'file',
|
24
|
-
},
|
25
|
-
{
|
26
|
-
id: 'storr6ua2l1fsl8lt20180911093826',
|
27
|
-
url: 'http://www.wetransfer.com',
|
28
|
-
meta: {title: 'WeTransfer Website'},
|
29
|
-
type: 'link',
|
30
|
-
}
|
31
|
-
]
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
describe '#initializer' do
|
36
|
-
it 'is valid with all params' do
|
37
|
-
subject
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'is valid without description' do
|
41
|
-
params.delete(:description)
|
42
|
-
subject
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'is valid without items' do
|
46
|
-
params.delete(:items)
|
47
|
-
subject
|
48
|
-
end
|
49
|
-
|
50
|
-
%i[id name state url].each do |param|
|
51
|
-
it "is invalid without #{param}" do
|
52
|
-
params.delete(param)
|
53
|
-
expect {
|
54
|
-
subject
|
55
|
-
}.to raise_error ArgumentError, %r[#{param}]
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe 'items' do
|
60
|
-
it 'are instantiated' do
|
61
|
-
expect(subject.items.map(&:class)).to eq([RemoteFile, RemoteLink])
|
62
|
-
end
|
63
|
-
|
64
|
-
it 'raises ItemTypeError if the item has a wrong type' do
|
65
|
-
params[:items] = [{ type: 'foo' }]
|
66
|
-
expect { subject }.to raise_error(RemoteBoard::ItemTypeError)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
describe '#files' do
|
72
|
-
it 'returns only file item' do
|
73
|
-
expect(subject.items.size).to eq(2)
|
74
|
-
expect(subject.files.size).to eq(1)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
describe '#links' do
|
79
|
-
it 'returns only link item' do
|
80
|
-
expect(subject.items.size).to eq(2)
|
81
|
-
expect(subject.links.size).to eq(1)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe 'getters' do
|
86
|
-
%i[id items url state].each do |getter|
|
87
|
-
it "responds to ##{getter}" do
|
88
|
-
subject.send getter
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
@@ -1,91 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe RemoteFile do
|
4
|
-
let(:params) {
|
5
|
-
{
|
6
|
-
id: SecureRandom.uuid,
|
7
|
-
name: 'Board name',
|
8
|
-
size: Random.rand(9999999),
|
9
|
-
url: nil,
|
10
|
-
multipart: {
|
11
|
-
part_numbers: Random.rand(10),
|
12
|
-
id: SecureRandom.uuid,
|
13
|
-
chunk_size: RemoteBoard::CHUNK_SIZE,
|
14
|
-
},
|
15
|
-
type: 'file',
|
16
|
-
}}
|
17
|
-
|
18
|
-
describe '#initializer' do
|
19
|
-
it 'initialized when no url is given' do
|
20
|
-
params.delete(:url)
|
21
|
-
described_class.new(params)
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'initialized when no item is given' do
|
25
|
-
params.delete(:items)
|
26
|
-
described_class.new(params)
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'fails when id is missing' do
|
30
|
-
params.delete(:id)
|
31
|
-
expect {
|
32
|
-
described_class.new(params)
|
33
|
-
}.to raise_error ArgumentError, /id/
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'fails when state is missing' do
|
37
|
-
params.delete(:size)
|
38
|
-
expect {
|
39
|
-
described_class.new(params)
|
40
|
-
}.to raise_error ArgumentError, /size/
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'fails when url is missing' do
|
44
|
-
params.delete(:multipart)
|
45
|
-
expect {
|
46
|
-
described_class.new(params)
|
47
|
-
}.to raise_error ArgumentError, /multipart/
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'fails when name is missing' do
|
51
|
-
params.delete(:name)
|
52
|
-
expect {
|
53
|
-
described_class.new(params)
|
54
|
-
}.to raise_error ArgumentError, /name/
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'must have a struct in multipart' do
|
58
|
-
remote_file = described_class.new(params)
|
59
|
-
expect(remote_file.multipart).to be_kind_of(Struct)
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'multipart has partnumber, id and chunk_size keys' do
|
63
|
-
remote_file = described_class.new(params)
|
64
|
-
expect(remote_file.multipart.members).to eq(params[:multipart].keys)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
describe 'Getters' do
|
69
|
-
let(:subject) { described_class.new(params) }
|
70
|
-
|
71
|
-
it '#multipart' do
|
72
|
-
subject.multipart
|
73
|
-
end
|
74
|
-
|
75
|
-
it '#name' do
|
76
|
-
subject.name
|
77
|
-
end
|
78
|
-
|
79
|
-
it '#type' do
|
80
|
-
subject.type
|
81
|
-
end
|
82
|
-
|
83
|
-
it '#id' do
|
84
|
-
subject.id
|
85
|
-
end
|
86
|
-
|
87
|
-
it '#url' do
|
88
|
-
subject.url
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe RemoteLink do
|
4
|
-
let(:params) {
|
5
|
-
{
|
6
|
-
id: SecureRandom.uuid,
|
7
|
-
url: 'http://www.wetransfer.com',
|
8
|
-
meta: {title: 'wetransfer.com'},
|
9
|
-
type: 'link',
|
10
|
-
}
|
11
|
-
}
|
12
|
-
|
13
|
-
describe '#initialize' do
|
14
|
-
attributes = %i[id url type meta]
|
15
|
-
|
16
|
-
attributes.each do |atttribute|
|
17
|
-
it "raises an ArgumentError when #{atttribute} is missing" do
|
18
|
-
params.delete(atttribute)
|
19
|
-
expect {
|
20
|
-
described_class.new(params)
|
21
|
-
}.to raise_error ArgumentError, %r{#{atttribute}}
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe 'getters' do
|
27
|
-
subject { described_class.new(params) }
|
28
|
-
|
29
|
-
it 'responds to #type' do
|
30
|
-
expect(subject.type).to eq 'link'
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,101 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe RemoteTransfer do
|
4
|
-
let(:params) {
|
5
|
-
{
|
6
|
-
id: '2ae97886522f375c1c6696799a56f0d820180912075119',
|
7
|
-
state: 'uploading',
|
8
|
-
message: 'Test transfer',
|
9
|
-
url: nil,
|
10
|
-
files:
|
11
|
-
[
|
12
|
-
{
|
13
|
-
id: '5e3823ea8ad54f259c85b776eaf7086e20180912075119',
|
14
|
-
name: 'transfer_integration_spec.rb',
|
15
|
-
size: 7361,
|
16
|
-
multipart: {part_numbers: 1, chunk_size: 7361},
|
17
|
-
type: 'file',
|
18
|
-
},
|
19
|
-
{
|
20
|
-
id: '43b5a6323102eced46f071f2db9ec2eb20180912075119',
|
21
|
-
name: 'two_chunks',
|
22
|
-
size: 6291460,
|
23
|
-
multipart: {part_numbers: 2, chunk_size: 5242880},
|
24
|
-
type: 'file',
|
25
|
-
}
|
26
|
-
]
|
27
|
-
}
|
28
|
-
}
|
29
|
-
|
30
|
-
describe '#initialize' do
|
31
|
-
it 'fails when id is missing' do
|
32
|
-
params.delete(:id)
|
33
|
-
expect {
|
34
|
-
described_class.new(params)
|
35
|
-
}.to raise_error ArgumentError, /id/
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'fails when state is missing' do
|
39
|
-
params.delete(:state)
|
40
|
-
expect {
|
41
|
-
described_class.new(params)
|
42
|
-
}.to raise_error ArgumentError, /state/
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'fails when message is missing' do
|
46
|
-
params.delete(:message)
|
47
|
-
expect {
|
48
|
-
described_class.new(params)
|
49
|
-
}.to raise_error ArgumentError, /message/
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'fails when files is a string' do
|
53
|
-
params.delete(:files)
|
54
|
-
params[:files] = 'Not an array'
|
55
|
-
expect {
|
56
|
-
described_class.new(params)
|
57
|
-
}.to raise_error NoMethodError
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'fails when files is a string' do
|
61
|
-
params.delete(:files)
|
62
|
-
params[:files] = 'Not an array'
|
63
|
-
expect {
|
64
|
-
described_class.new(params)
|
65
|
-
}.to raise_error NoMethodError
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe '#files_to_class' do
|
70
|
-
it 'creates classes of remote files' do
|
71
|
-
transfer = described_class.new(params)
|
72
|
-
expect(transfer.files.map(&:class)).to eq([RemoteFile, RemoteFile])
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe '#prepare_file_upload' do
|
77
|
-
pending 'it retreives the upload url' do
|
78
|
-
fail
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe '#Getters' do
|
83
|
-
subject { described_class.new(params) }
|
84
|
-
|
85
|
-
it '#files' do
|
86
|
-
subject.files
|
87
|
-
end
|
88
|
-
|
89
|
-
it '#url' do
|
90
|
-
subject.url
|
91
|
-
end
|
92
|
-
|
93
|
-
it '#state' do
|
94
|
-
subject.state
|
95
|
-
end
|
96
|
-
|
97
|
-
it '#id' do
|
98
|
-
subject.id
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe TransferBuilder do
|
4
|
-
let(:transfer) { described_class.new }
|
5
|
-
|
6
|
-
describe '#initialze' do
|
7
|
-
it 'initializes with an empty files array' do
|
8
|
-
expect(transfer.files.empty?).to be(true)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
describe '#add_file' do
|
13
|
-
it 'returns an error when name is missing' do
|
14
|
-
expect {
|
15
|
-
transfer.add_file(io: File.open(__FILE__, 'rb'))
|
16
|
-
}.to raise_error ArgumentError, /name/
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'returns an error when io is missing' do
|
20
|
-
expect {
|
21
|
-
transfer.add_file(name: 'file name')
|
22
|
-
}.to raise_error ArgumentError, /io/
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'returns a error when file doesnt exists' do
|
26
|
-
expect {
|
27
|
-
transfer.add_file(name: 'file name', io: File.open('foo', 'rb'))
|
28
|
-
}.to raise_error Errno::ENOENT
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'adds a file when name and io is given' do
|
32
|
-
transfer.add_file(name: 'file name', io: File.open(__FILE__, 'rb'))
|
33
|
-
expect(transfer.files.first).to be_kind_of(FutureFile)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe '#add_file_at' do
|
38
|
-
it 'adds a file from a path' do
|
39
|
-
transfer.add_file_at(path: __FILE__)
|
40
|
-
expect(transfer.files.first).to be_kind_of(FutureFile)
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'throws a Error when file doesnt exists' do
|
44
|
-
expect {
|
45
|
-
transfer.add_file_at(path: '/this/path/leads/to/nothing.exe')
|
46
|
-
}.to raise_error Errno::ENOENT
|
47
|
-
end
|
48
|
-
|
49
|
-
pending 'should call #add_file' do
|
50
|
-
skip "Lets not trigger status:400 errors"
|
51
|
-
client = WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'), logger: test_logger)
|
52
|
-
client.create_transfer(message: 'A transfer message') do |builder|
|
53
|
-
expect(builder).to receive(:add_file).with(name: kind_of(String), io: kind_of(::File))
|
54
|
-
builder.add_file_at(path: __FILE__)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WeTransfer::Client::Transfers do
|
4
|
-
describe '#create_transfer_and_upload_files' do
|
5
|
-
it 'creates a transfer and uploads the files' do
|
6
|
-
client = WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'))
|
7
|
-
transfer = client.create_transfer_and_upload_files(message: 'test description') do |b|
|
8
|
-
b.add_file(name: File.basename(__FILE__), io: File.open(__FILE__, 'rb'))
|
9
|
-
b.add_file_at(path: fixtures_dir + 'Japan-01.jpg')
|
10
|
-
end
|
11
|
-
|
12
|
-
expect(transfer).to be_kind_of(RemoteTransfer)
|
13
|
-
expect(transfer.url).to start_with('https://we.tl/')
|
14
|
-
|
15
|
-
transfer = loop do
|
16
|
-
res = client.get_transfer(transfer_id: transfer.id)
|
17
|
-
break res if res.state != 'processing'
|
18
|
-
sleep 1
|
19
|
-
end
|
20
|
-
|
21
|
-
expect(transfer.state).to eq('downloadable')
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'fails when no files are added' do
|
25
|
-
client = WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY'))
|
26
|
-
expect {
|
27
|
-
client.create_transfer_and_upload_files(message: 'test description')
|
28
|
-
}.to raise_error ArgumentError, /No files/
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'fails with duplicate file names' do
|
32
|
-
client = WeTransfer::Client.new(api_key: ENV.fetch('WT_API_KEY', logger: test_logger))
|
33
|
-
expect {
|
34
|
-
client.create_transfer_and_upload_files(message: 'All the (same) Things') do |builder|
|
35
|
-
builder.add_file(name: 'README.txt', io: StringIO.new("A thing"))
|
36
|
-
builder.add_file(name: 'README.txt', io: StringIO.new("another thing"))
|
37
|
-
end
|
38
|
-
}.to raise_error ArgumentError, /Duplicate file entry/
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
pending '#create_transfers'
|
43
|
-
pending "#complete_transfer"
|
44
|
-
pending "#get_transfer"
|
45
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe WeTransfer::Client do
|
4
|
-
subject { described_class.new(params) }
|
5
|
-
let(:params) { { api_key: ENV.fetch('WT_API_KEY') } }
|
6
|
-
|
7
|
-
it 'exposes VERSION' do
|
8
|
-
expect(WeTransfer::VERSION).to be_kind_of(String)
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "#ensure_ok_status!" do
|
12
|
-
before(:all) { Response = Struct.new(:status) }
|
13
|
-
|
14
|
-
context "on success" do
|
15
|
-
it "returns true if the status code is in the 2xx range" do
|
16
|
-
(200..299).each do |status_code|
|
17
|
-
response = Response.new(status_code)
|
18
|
-
expect(subject.ensure_ok_status!(response)).to be_truthy
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "unsuccessful" do
|
24
|
-
it "raises with a message including the status code the server returned" do
|
25
|
-
response = Response.new("404")
|
26
|
-
expect { subject.ensure_ok_status!(response) }
|
27
|
-
.to raise_error(WeTransfer::Client::Error, %r/Response had a 404 code/)
|
28
|
-
|
29
|
-
response = Response.new("Mehh")
|
30
|
-
expect { subject.ensure_ok_status!(response) }
|
31
|
-
.to raise_error(WeTransfer::Client::Error, %r/Response had a Mehh code/)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "if there is a server error, it raises with information that we can retry" do
|
35
|
-
(500..504).each do |status_code|
|
36
|
-
response = Response.new(status_code)
|
37
|
-
expect { subject.ensure_ok_status!(response) }
|
38
|
-
.to raise_error(WeTransfer::Client::Error, /we could retry/)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
it "on client error, it raises with information that the server cannot understand this" do
|
43
|
-
(400..499).each do |status_code|
|
44
|
-
response = Response.new(status_code)
|
45
|
-
expect { subject.ensure_ok_status!(response) }
|
46
|
-
.to raise_error(WeTransfer::Client::Error, /server will not accept this request even if retried/)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
it "if the status code is unknown, it raises a generic error" do
|
51
|
-
response = Response.new("I aint a status code")
|
52
|
-
expect { subject.ensure_ok_status!(response) }
|
53
|
-
.to raise_error(WeTransfer::Client::Error, /no idea what to do/)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|