akamai_rspec 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/akamai_rspec/matchers/caching.rb +19 -30
- data/lib/akamai_rspec/matchers/non_akamai.rb +5 -2
- data/lib/akamai_rspec/request.rb +5 -3
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb49bd44abd110079985c0b84fa3dcd5c5c792c0
|
4
|
+
data.tar.gz: 27e1ebf081198f4a3cd07401ea6c8850a901ef90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66a85bda03be573909a293684fbd98cf41b221a2b3201ddbda984bc02801cda7915fa12b9f95aa89db5dd605f9c77f37427abb057e8016d0de25a470ea1f5571
|
7
|
+
data.tar.gz: 34c2714e8b34e4ef63e3795133fd5e9df6e9c44559a521d19410e7cb5f9f088f1fd38bc371f1aa28f36d5ab5ea877f03ecec3d80483aff82cc7025d6f63e812a
|
@@ -1,55 +1,44 @@
|
|
1
1
|
require 'rspec'
|
2
2
|
require 'securerandom'
|
3
|
+
require 'akamai_rspec/akamai_headers'
|
3
4
|
|
4
|
-
RSpec::Matchers.define :be_cacheable do
|
5
|
+
RSpec::Matchers.define :be_cacheable do |opts={request_count: 10}|
|
5
6
|
match do |url|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
responses = [1..opts[:request_count]].map { AkamaiRSpec::Request.get_with_debug_headers url }
|
8
|
+
|
9
|
+
responses.any? do |response|
|
10
|
+
fail("Error fetching #{url}: #{response}") if response.code != 200
|
11
|
+
(
|
12
|
+
(response.headers[:x_cache] =~ /TCP(\w+)?_HIT/) and not
|
13
|
+
(response.headers[:x_cache] =~ /TCP_REFRESH/)
|
14
|
+
)
|
15
|
+
end
|
9
16
|
end
|
10
17
|
end
|
11
18
|
|
12
19
|
module RSpec::Matchers
|
13
20
|
alias_method :be_cachable, :be_cacheable
|
21
|
+
alias_method :be_cached, :be_cacheable
|
22
|
+
define_negated_matcher :not_be_cached, :be_cached
|
14
23
|
end
|
15
24
|
|
16
25
|
RSpec::Matchers.define :have_no_cache_set do
|
17
26
|
match do |url|
|
18
27
|
response = AkamaiRSpec::Request.get url
|
19
28
|
cache_control = response.headers[:cache_control]
|
20
|
-
|
21
|
-
true
|
29
|
+
return cache_control == 'no-cache'
|
22
30
|
end
|
23
31
|
end
|
24
32
|
|
25
|
-
RSpec::Matchers.define :not_be_cached do
|
26
|
-
match do |url|
|
27
|
-
response = AkamaiRSpec::Request.get url
|
28
|
-
x_check_cacheable(response, 'NO')
|
29
|
-
response = AkamaiRSpec::Request.get url # again to prevent spurious cache miss
|
30
|
-
|
31
|
-
not_cached = response.headers[:x_cache] =~ /TCP(\w+)?_MISS/
|
32
|
-
if not_cached
|
33
|
-
true
|
34
|
-
else
|
35
|
-
fail("x_cache header does not indicate an origin hit: '#{response.headers[:x_cache]}'")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
33
|
|
40
34
|
RSpec::Matchers.define :be_tier_distributed do
|
41
35
|
match do |url|
|
42
36
|
response = AkamaiRSpec::Request.get_cache_miss(url)
|
43
|
-
tiered = !response.headers[:x_cache_remote].nil?
|
44
|
-
|
45
|
-
response.code == 200 && tiered
|
37
|
+
@tiered = !response.headers[:x_cache_remote].nil?
|
38
|
+
response.code == 200 && @tiered
|
46
39
|
end
|
47
|
-
|
48
|
-
|
49
|
-
def x_check_cacheable(response, should_be_cacheable)
|
50
|
-
x_check_cacheable = response.headers[:x_check_cacheable]
|
51
|
-
fail('No X-Check-Cacheable header?') if x_check_cacheable.nil?
|
52
|
-
unless (x_check_cacheable == should_be_cacheable)
|
53
|
-
fail("X-Check-Cacheable header is: #{x_check_cacheable} expected #{should_be_cacheable}")
|
40
|
+
description do
|
41
|
+
"be tier distributed (as indicated by the presence of an X-Cache-Remote header in response)"
|
54
42
|
end
|
55
43
|
end
|
44
|
+
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rspec'
|
2
2
|
require 'socket'
|
3
3
|
require 'openssl'
|
4
|
+
require 'uri'
|
4
5
|
|
5
6
|
def check_ssl_serial(addr, port, url, serial)
|
6
7
|
cert_serial = ssl_cert(addr, port, url).serial.to_s(16).upcase
|
@@ -40,11 +41,13 @@ end
|
|
40
41
|
|
41
42
|
RSpec::Matchers.define :be_verifiably_secure do (verify = OpenSSL::SSL::VERIFY_PEER)
|
42
43
|
match do |url|
|
44
|
+
return false if URI(url).scheme == "http"
|
45
|
+
url = "https://#{url}" unless URI(url).scheme
|
43
46
|
begin
|
44
47
|
RestClient::Request.execute(method: :get, url: url, verify_ssl: verify)
|
45
|
-
true
|
48
|
+
return true
|
46
49
|
rescue => e
|
47
|
-
|
50
|
+
return false
|
48
51
|
end
|
49
52
|
end
|
50
53
|
end
|
data/lib/akamai_rspec/request.rb
CHANGED
@@ -71,7 +71,6 @@ module AkamaiRSpec
|
|
71
71
|
|
72
72
|
def get(url, headers = {})
|
73
73
|
if url.is_a? RestClient::Response
|
74
|
-
warn 'This functionality is deprecated and will be removed in the next release'
|
75
74
|
return AkamaiRSpec::Response.new(url)
|
76
75
|
end
|
77
76
|
|
@@ -82,9 +81,12 @@ module AkamaiRSpec
|
|
82
81
|
req['Host'] = uri.hostname
|
83
82
|
uri.hostname = @domain
|
84
83
|
|
85
|
-
|
86
|
-
|
84
|
+
net = Net::HTTP.new(uri.hostname, uri.port)
|
85
|
+
if uri.scheme == 'https'
|
86
|
+
net.use_ssl = true
|
87
|
+
net.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
87
88
|
end
|
89
|
+
response = net.request(req, nil)
|
88
90
|
|
89
91
|
AkamaiRSpec::Response.new(response)
|
90
92
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: akamai_rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bianca Gibson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -28,32 +28,32 @@ dependencies:
|
|
28
28
|
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.8'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.8'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '3.2'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.2'
|
55
55
|
description: Test your akamai configuration with rspec
|
56
|
-
email:
|
56
|
+
email: cobweb@rea-group.com
|
57
57
|
executables: []
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
@@ -88,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
88
|
version: '0'
|
89
89
|
requirements: []
|
90
90
|
rubyforge_project:
|
91
|
-
rubygems_version: 2.
|
91
|
+
rubygems_version: 2.5.1
|
92
92
|
signing_key:
|
93
93
|
specification_version: 4
|
94
94
|
summary: Test your akamai configuration with rspec
|