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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 26b9891b50b16db2cb6b518794ee939ab864f9e4
4
- data.tar.gz: 4c46663b9c2ba79788fc98a846c519585483f66e
3
+ metadata.gz: fb49bd44abd110079985c0b84fa3dcd5c5c792c0
4
+ data.tar.gz: 27e1ebf081198f4a3cd07401ea6c8850a901ef90
5
5
  SHA512:
6
- metadata.gz: 34b3ec6371e11c316c90346745ef568192a5ef18f1ca7c5b09510f7add7cbd2fddd8699e82db4114fcc50c16878b7c8cbcaeb1a6d69c8b2704aa5b9dac96a772
7
- data.tar.gz: 898b11a2d6c01868cfffd6594c6aa14521da6563711a9e223201ddc7d460dca904f233bff5a2bf039e0d562b7216cb981d5216ecb7dc9fb4926861eab4ab630d
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
- response = AkamaiRSpec::Request.get url
7
- x_check_cacheable(response, 'YES')
8
- response.code == 200
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
- fail('Cache-Control has been set') unless cache_control == 'no-cache'
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
- fail('No X-Cache-Remote header in response') unless tiered
45
- response.code == 200 && tiered
37
+ @tiered = !response.headers[:x_cache_remote].nil?
38
+ response.code == 200 && @tiered
46
39
  end
47
- end
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
- raise("#{url} could not be verified as secure, :sad_panda: #{e.message}")
50
+ return false
48
51
  end
49
52
  end
50
53
  end
@@ -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
- response = Net::HTTP.start(uri.hostname, uri.port) do |http|
86
- http.request(req, nil) { |http_response| http_response }
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.3.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-02-01 00:00:00.000000000 Z
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: bianca.gibson@rea-group.com
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.2.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