imgix 2.1.0 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/test/test_helper.rb DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- Bundler.require :test
6
-
7
- require 'minitest/autorun'
8
- require 'imgix'
9
- require 'webmock/minitest'
10
- include WebMock::API
11
-
12
- class Imgix::Test < MiniTest::Test
13
- end
@@ -1,89 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class DomainsTest < Imgix::Test
6
- def test_deterministically_choosing_a_path
7
- assert_output(nil, "Warning: Domain sharding has been deprecated and will be removed in the next major version.\n"){
8
- client = Imgix::Client.new(hosts: [
9
- "demos-1.imgix.net",
10
- "demos-2.imgix.net",
11
- "demos-3.imgix.net",
12
- ],
13
- secure_url_token: '10adc394',
14
- include_library_param: false)
15
-
16
- path = client.path('/bridge.png')
17
- assert_equal 'https://demos-1.imgix.net/bridge.png?s=0233fd6de51f20f11cff6b452b7a9a05', path.to_url
18
-
19
- path = client.path('/flower.png')
20
- assert_equal 'https://demos-2.imgix.net/flower.png?s=02105961388864f85c04121ea7b50e08', path.to_url
21
- }
22
- end
23
-
24
- def test_cycling_choosing_domain_in_order
25
- assert_output(nil, "Warning: Domain sharding has been deprecated and will be removed in the next major version.\n"){
26
- client = Imgix::Client.new(hosts: [
27
- "demos-1.imgix.net",
28
- "demos-2.imgix.net",
29
- "demos-3.imgix.net",
30
- ],
31
- secure_url_token: '10adc394',
32
- shard_strategy: :cycle,
33
- include_library_param: false)
34
-
35
- path = client.path('/bridge.png')
36
- assert_equal 'https://demos-1.imgix.net/bridge.png?s=0233fd6de51f20f11cff6b452b7a9a05', path.to_url
37
-
38
- path = client.path('/bridge.png')
39
- assert_equal 'https://demos-2.imgix.net/bridge.png?s=0233fd6de51f20f11cff6b452b7a9a05', path.to_url
40
-
41
- path = client.path('/bridge.png')
42
- assert_equal 'https://demos-3.imgix.net/bridge.png?s=0233fd6de51f20f11cff6b452b7a9a05', path.to_url
43
-
44
- path = client.path('/bridge.png')
45
- assert_equal 'https://demos-1.imgix.net/bridge.png?s=0233fd6de51f20f11cff6b452b7a9a05', path.to_url
46
- }
47
- end
48
-
49
- def test_with_full_paths
50
- assert_output(nil, "Warning: Domain sharding has been deprecated and will be removed in the next major version.\n"){
51
- client = Imgix::Client.new(hosts: [
52
- "demos-1.imgix.net",
53
- "demos-2.imgix.net",
54
- "demos-3.imgix.net",
55
- ],
56
- secure_url_token: '10adc394',
57
- shard_strategy: :cycle,
58
- include_library_param: false)
59
-
60
- path = 'https://google.com/cats.gif'
61
- assert_equal "https://demos-1.imgix.net/#{CGI.escape(path)}?s=e686099fbba86fc2b8141d3c1ff60605", client.path(path).to_url
62
- }
63
- end
64
-
65
- def test_invalid_domain_append_slash
66
- assert_raises(ArgumentError) {Imgix::Client.new(hosts: "assets.imgix.net/")}
67
- end
68
-
69
- def test_invalid_domain_prepend_scheme
70
- assert_raises(ArgumentError) {Imgix::Client.new(hosts: "https://assets.imgix.net")}
71
- end
72
-
73
- def test_invalid_domain_append_dash
74
- assert_raises(ArgumentError) {Imgix::Client.new(hosts: "assets.imgix.net-")}
75
- end
76
-
77
- def test_domain_sharding_deprecation_host
78
-
79
- assert_output(nil, "Warning: Domain sharding has been deprecated and will be removed in the next major version.\n"){
80
- Imgix::Client.new(host: ["assets1.imgix.net", "assets2.imgix.net"])
81
- }
82
- end
83
-
84
- def test_domain_sharding_deprecation_hosts
85
- assert_output(nil, "Warning: Domain sharding has been deprecated and will be removed in the next major version.\n"){
86
- Imgix::Client.new(hosts: ["assets1.imgix.net", "assets2.imgix.net"])
87
- }
88
- end
89
- end
@@ -1,132 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class PathTest < Imgix::Test
6
- def test_creating_a_path
7
- path = client.path('/images/demo.png')
8
- assert_equal 'https://demo.imgix.net/images/demo.png?s=2c7c157eaf23b06a0deb2f60b81938c4', path.to_url
9
-
10
- path = client.path('images/demo.png')
11
- assert_equal 'https://demo.imgix.net/images/demo.png?s=2c7c157eaf23b06a0deb2f60b81938c4', path.to_url
12
- end
13
-
14
- def test_signing_path_with_param
15
- url = 'https://demo.imgix.net/images/demo.png?w=200&s=da421114ca238d1f4a927b889f67c34e'
16
- path = client.path('/images/demo.png')
17
- path.width = 200
18
-
19
- assert_equal url, path.to_url
20
-
21
- path = client.path('/images/demo.png')
22
- assert_equal url, path.to_url(w: 200)
23
-
24
- path = client.path('/images/demo.png')
25
- assert_equal url, path.width(200).to_url
26
- end
27
-
28
- def test_resetting_defaults
29
- url = 'https://demo.imgix.net/images/demo.png?w=200&s=da421114ca238d1f4a927b889f67c34e'
30
- path = client.path('/images/demo.png')
31
- path.height = 300
32
-
33
- assert_equal url, path.defaults.to_url(w: 200)
34
- end
35
-
36
- def test_path_with_multiple_params
37
- url = 'https://demo.imgix.net/images/demo.png?h=200&w=200&s=d570a1ecd765470f7b34a69b56718a7a'
38
- path = client.path('/images/demo.png')
39
-
40
- assert_equal url, path.to_url(h: 200, w: 200)
41
-
42
- path = client.path('/images/demo.png')
43
- assert_equal url, path.height(200).width(200).to_url
44
- end
45
-
46
- def test_path_with_multi_value_param_safely_encoded
47
- url = 'https://demo.imgix.net/images/demo.png?markalign=middle%2Ccenter&s=f0d0e28a739f022638f4ba6dddf9b694'
48
- path = client.path('/images/demo.png')
49
-
50
- assert_equal url, path.markalign('middle', 'center').to_url
51
- end
52
-
53
- def test_param_keys_are_escaped
54
- ix_url = unsigned_client.path('demo.png').to_url({
55
- :'hello world' => 'interesting'
56
- })
57
-
58
- assert_equal "https://demo.imgix.net/demo.png?hello%20world=interesting", ix_url
59
- end
60
-
61
- def test_param_values_are_escaped
62
- ix_url = unsigned_client.path('demo.png').to_url({
63
- hello_world: '/foo"> <script>alert("hacked")</script><'
64
- })
65
-
66
- assert_equal "https://demo.imgix.net/demo.png?hello_world=%2Ffoo%22%3E%20%3Cscript%3Ealert%28%22hacked%22%29%3C%2Fscript%3E%3C", ix_url
67
- end
68
-
69
- def test_base64_param_variants_are_base64_encoded
70
- ix_url = unsigned_client.path('~text').to_url({
71
- txt64: 'I cannøt belîév∑ it wors! 😱'
72
- })
73
-
74
- assert_equal "https://demo.imgix.net/~text?txt64=SSBjYW5uw7h0IGJlbMOuw6l24oiRIGl0IHdvcu-jv3MhIPCfmLE", ix_url
75
- end
76
-
77
- def test_host_is_required
78
- assert_raises(ArgumentError) {Imgix::Client.new}
79
- end
80
-
81
- def test_token_is_optional
82
- client = Imgix::Client.new(host: 'demo.imgix.net', include_library_param: false)
83
- url = 'https://demo.imgix.net/images/demo.png'
84
- path = client.path('/images/demo.png')
85
-
86
- assert_equal url, path.to_url
87
- end
88
-
89
- def test_https_is_optional
90
- client = Imgix::Client.new(host: 'demo.imgix.net', include_library_param: false, use_https: false)
91
- url = 'http://demo.imgix.net/images/demo.png'
92
- path = client.path('/images/demo.png')
93
-
94
- assert_equal url, path.to_url
95
- end
96
-
97
- def test_full_url
98
- path = 'https://google.com/cats.gif'
99
-
100
- assert_equal "https://demo.imgix.net/#{CGI.escape(path)}?s=e686099fbba86fc2b8141d3c1ff60605", client.path(path).to_url
101
- end
102
-
103
- def test_full_url_with_a_space
104
- path = 'https://my-demo-site.com/files/133467012/avatar icon.png'
105
- assert_equal "https://demo.imgix.net/#{CGI.escape(path)}?s=35ca40e2e7b6bd208be2c4f7073f658e", client.path(path).to_url
106
- end
107
-
108
- def test_include_library_param
109
- client = Imgix::Client.new(host: 'demo.imgix.net') # enabled by default
110
- url = client.path('/images/demo.png').to_url
111
-
112
- assert_equal "ixlib=rb-#{Imgix::VERSION}", URI(url).query
113
- end
114
-
115
- def test_configure_library_param
116
- library = "sinatra"
117
- version = Imgix::VERSION
118
- client = Imgix::Client.new(host: 'demo.imgix.net', library_param: library, library_version: version) # enabled by default
119
- url = client.path('/images/demo.png').to_url
120
-
121
- assert_equal "ixlib=#{library}-#{version}", URI(url).query
122
- end
123
-
124
- private
125
- def client
126
- @client ||= Imgix::Client.new(host: 'demo.imgix.net', secure_url_token: '10adc394', include_library_param: false)
127
- end
128
-
129
- def unsigned_client
130
- @unsigned_client ||= Imgix::Client.new(host: 'demo.imgix.net', include_library_param: false)
131
- end
132
- end
@@ -1,25 +0,0 @@
1
- require 'test_helper'
2
-
3
- class PurgeTest < Imgix::Test
4
- def test_runtime_error_without_api_key
5
- assert_raises(RuntimeError) {
6
- Imgix::Client.new(host: 'demo.imgix.net', include_library_param: false)
7
- .purge('https://demo.imgix.net/images/demo.png')
8
- }
9
- end
10
-
11
- def test_successful_purge
12
- stub_request(:post, "https://api.imgix.com/v2/image/purger").
13
- with(
14
- body: {"url"=>"https://demo.imgix.net/images/demo.png"}).
15
- to_return(status: 200)
16
-
17
- Imgix::Client.new(host: 'demo.imgix.net', api_key: '10adc394')
18
- .purge('/images/demo.png')
19
-
20
- assert_requested :post, 'https://api.imgix.com/v2/image/purger',
21
- body: 'url=https%3A%2F%2Fdemo.imgix.net%2Fimages%2Fdemo.png',
22
- headers: {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Basic MTBhZGMzOTQ6', 'Content-Type'=>'application/x-www-form-urlencoded', 'User-Agent'=>"imgix rb-#{ Imgix::VERSION}"},
23
- times: 1
24
- end
25
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class UrlTest < Imgix::Test
6
- DEMO_IMAGE_PATH = '/images/demo.png'
7
-
8
- def test_signing_with_no_params
9
- path = client.path(DEMO_IMAGE_PATH)
10
-
11
- assert_equal 'https://demo.imgix.net/images/demo.png?s=2c7c157eaf23b06a0deb2f60b81938c4', path.to_url
12
- end
13
-
14
- def test_signing_with_one
15
- path = client.path(DEMO_IMAGE_PATH)
16
- path.width = 200
17
-
18
- assert_equal 'https://demo.imgix.net/images/demo.png?w=200&s=da421114ca238d1f4a927b889f67c34e', path.to_url
19
- end
20
-
21
- def test_signing_with_multiple_params
22
- path = client.path(DEMO_IMAGE_PATH)
23
- path.height = 200
24
- path.width = 200
25
- assert_equal 'https://demo.imgix.net/images/demo.png?h=200&w=200&s=d570a1ecd765470f7b34a69b56718a7a', path.to_url
26
-
27
- path = client.path(DEMO_IMAGE_PATH)
28
- path.width = 200
29
- path.height = 200
30
- assert_equal 'https://demo.imgix.net/images/demo.png?w=200&h=200&s=00b5cde5c7b8bca8618cb911da4ac379', path.to_url
31
- end
32
-
33
- private
34
-
35
- def client
36
- @client ||= Imgix::Client.new(host: 'demo.imgix.net', secure_url_token: '10adc394', include_library_param: false)
37
- end
38
- end