akamai_rspec 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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