This repository has been archived by the owner on Feb 12, 2023. It is now read-only.
/
thumbnail_spec.rb
118 lines (94 loc) · 4.62 KB
/
thumbnail_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
require_relative 'spec_helper'
describe HTTPThumbnailerClient, 'single thumbnail API' do
before :all do
log = support_dir + 'server.log'
start_server(
"httpthumbnailer -f -d -x XID -l #{log}",
'/tmp/httpthumbnailer.pid',
log,
'http://localhost:3100/'
)
end
after :all do
stop_server('/tmp/httpthumbnailer.pid')
end
it 'should return single thumbnail matching specification' do
thumbnail = HTTPThumbnailerClient.new('http://localhost:3100').thumbnail((support_dir + 'test.jpg').read, 'crop', 6, 3, 'jpeg')
thumbnail.should be_kind_of HTTPThumbnailerClient::Thumbnail
thumbnail.mime_type.should == 'image/jpeg'
thumbnail.width.should == 6
thumbnail.height.should == 3
i = identify(thumbnail.data)
i.format.should == 'JPEG'
i.width.should == 6
i.height.should == 3
end
describe 'meta data' do
it 'should provide input image mime type' do
thumbnail = HTTPThumbnailerClient.new('http://localhost:3100').thumbnail((support_dir + 'test.jpg').read, 'crop', 6, 3, 'jpeg')
thumbnail.input_mime_type.should == 'image/jpeg'
end
it 'should provide input image size' do
thumbnail = HTTPThumbnailerClient.new('http://localhost:3100').thumbnail((support_dir + 'test.jpg').read, 'crop', 6, 3, 'jpeg')
thumbnail.input_width.should == 509
thumbnail.input_height.should == 719
end
end
describe 'passing options' do
it 'should allow passing additional options to thumbnailing method' do
thumbnail = HTTPThumbnailerClient.new('http://localhost:3100').thumbnail((support_dir + 'test.jpg').read, 'pad', 128, 128, 'png', background_color: 'green')
pixel_color(thumbnail.data, 4, 4).should == 'green'
end
end
describe 'defining edits' do
it 'should allow defining edits to be applied on the thumbnail' do
thumbnail = HTTPThumbnailerClient.new('http://localhost:3100').thumbnail((support_dir + 'test.jpg').read, 'fit', 128, 128, 'png') do
edit 'rotate', '30', background_color: 'blue'
end
pixel_color(thumbnail.data, 4, 4).should == 'blue'
end
end
describe 'general error handling' do
it 'should raise HTTPThumbnailerClient::InvalidThumbnailSpecificationError error on bad request error' do
lambda {
HTTPThumbnailerClient.new('http://localhost:3100').thumbnail((support_dir + 'test.jpg').read, 'crop', 0, 0, 'jpeg')
}.should raise_error HTTPThumbnailerClient::InvalidThumbnailSpecificationError
lambda {
HTTPThumbnailerClient.new('http://localhost:3100').thumbnail((support_dir + 'test.jpg').read, 'blah', 4, 4, 'jpeg')
}.should raise_error HTTPThumbnailerClient::InvalidThumbnailSpecificationError
end
it 'should raise HTTPThumbnailerClient::ServerResourceNotFoundError error on not found error' do
lambda {
HTTPThumbnailerClient.new('http://localhost:3100/blah').thumbnail((support_dir + 'test.jpg').read, 'crop', 6, 3, 'jpeg')
}.should raise_error HTTPThumbnailerClient::ServerResourceNotFoundError
end
it 'should raise HTTPThumbnailerClient::UnsupportedMediaTypeError error on unsupported media type error' do
lambda {
HTTPThumbnailerClient.new('http://localhost:3100').thumbnail((support_dir + 'test.txt').read, 'crop', 6, 3, 'jpeg')
}.should raise_error HTTPThumbnailerClient::UnsupportedMediaTypeError
end
it 'should raise HTTPThumbnailerClient::ImageTooLargeError error on request entity too large error' do
lambda {
HTTPThumbnailerClient.new('http://localhost:3100').thumbnail((support_dir + 'test-large.jpg').read, 'crop', 7000, 7000, 'png')
}.should raise_error HTTPThumbnailerClient::ImageTooLargeError
end
end
describe 'passing custom HTTP request headers' do
it 'should add headers provided with :headers option' do
xid = rand(0..1000)
thumbnail = HTTPThumbnailerClient.new('http://localhost:3100', headers: {'XID' => xid}).thumbnail((support_dir + 'test.jpg').read, 'crop', 6, 3, 'jpeg')
thumbnail.should be_kind_of HTTPThumbnailerClient::Thumbnail
(support_dir + 'server.log').read.should include "\"xid\":\"#{xid}\""
end
it '#with_headers should add headers to given request' do
xid = rand(0..1000)
thumbnail = HTTPThumbnailerClient.new('http://localhost:3100').with_headers('XID' => xid).thumbnail((support_dir + 'test.jpg').read, 'crop', 6, 3, 'jpeg')
thumbnail.should be_kind_of HTTPThumbnailerClient::Thumbnail
(support_dir + 'server.log').read.should include "\"xid\":\"#{xid}\""
xid = rand(1000..2000)
thumbnail = HTTPThumbnailerClient.new('http://localhost:3100').with_headers('XID' => xid).thumbnail((support_dir + 'test.jpg').read, 'crop', 6, 3, 'jpeg')
thumbnail.should be_kind_of HTTPThumbnailerClient::Thumbnail
(support_dir + 'server.log').read.should include "\"xid\":\"#{xid}\""
end
end
end