akamai_rspec 1.1.0 → 1.2.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: 07fe4b6c45db380b71ff544f77ae226a4cc74809
4
- data.tar.gz: b1f5f15809c6003669937c1466db669c6b9a4c27
3
+ metadata.gz: 6a7d0d25f07249dc9449d8745ef64bdff88179da
4
+ data.tar.gz: 6c792c083bc7ba702842035d68e202f81219f07a
5
5
  SHA512:
6
- metadata.gz: a1c3e9b1f6bfa2ad4aa0c1b72f0775c1dae149e20dac1ac07b306b2763b2b240285b1e1af7eb470a9f740e2d7be16bf5de8617f2170f44d34b00131d511dabf2
7
- data.tar.gz: 8116ec3976984834df9d42218aa284960cd2aed54b1379f6b47dfba0524acb28b348fbb3dc2a17298073e69caa6fd9d54395347c57212bf3c86123db7f32ee66
6
+ metadata.gz: f7b7382b0992947fa6f30dbedc42487b1441c9182f571a236db3653288b21ba8b6640b7b316a6a04db185090a747c23847eac94686cbc154998d9a4e388d57b8
7
+ data.tar.gz: cb95c3ca5e7ea8610201ccce9307a01d74336fc0db3c90ae8b2ea76b9256876f6ce5b0ee317d6d9561b37274c4d9bf55f34729df44abf931e724559d7e6264e3
@@ -4,17 +4,26 @@ require 'akamai_rspec/request'
4
4
 
5
5
  module AkamaiRSpec
6
6
  module Matchers
7
- define :be_cacheable do |request_count: 4, headers: {}, allow_refresh: false|
7
+ define :be_cacheable do |request_count: :until_same_server, headers: {}, allow_refresh: false|
8
8
  match do |url|
9
9
  @responses = []
10
10
  fail("URL must be a string") unless url.is_a? String
11
11
 
12
- @responses = (1..request_count).map {
13
- AkamaiRSpec::Request.get url, headers
14
- }
12
+ if request_count == :until_same_server
13
+ while response = AkamaiRSpec::Request.get(url, headers) do
14
+ if cache_servers.include?(cache_server response.headers[:x_cache])
15
+ @responses.push response
16
+ break
17
+ end
18
+ @responses.push response
19
+ end
20
+ else
21
+ @responses = (1..request_count).map {
22
+ AkamaiRSpec::Request.get url, headers
23
+ }
24
+ end
15
25
 
16
26
  @responses.any? do |response|
17
- fail("Error fetching #{url}: #{response}") if response.code != 200
18
27
  if refresh_hit? response
19
28
  allow_refresh
20
29
  else
@@ -46,6 +55,14 @@ module AkamaiRSpec
46
55
  def cache_headers
47
56
  @responses.map {|response| response.headers[:x_cache] }
48
57
  end
58
+
59
+ def cache_servers
60
+ cache_headers.map &method(:cache_server)
61
+ end
62
+
63
+ def cache_server(header)
64
+ header.split(" ")[2]
65
+ end
49
66
  end
50
67
 
51
68
  alias_method :be_cachable, :be_cacheable
@@ -13,7 +13,7 @@ module AkamaiRSpec
13
13
  fail("AKA_PM_FWD_URL not found in the x-akamai-session-info header '#{session_info}'")
14
14
  end
15
15
  outcome_url = outcome_attribute.split('value=')[1]
16
- response.code == 200 && outcome_url == "#{channel}"
16
+ response.code == 200 && outcome_url == channel
17
17
  end
18
18
  end
19
19
  end
@@ -119,14 +119,17 @@ module AkamaiRSpec
119
119
  end
120
120
 
121
121
  def expires(origin_response, akamai_response)
122
- return origin_expires(origin_response), Time.httpdate(akamai_response.headers[:expires])
122
+ return origin_expires(origin_response), httpdate(akamai_response.headers[:expires])
123
123
  end
124
124
 
125
125
  def origin_expires(origin_response)
126
126
  expires = origin_response.headers[:expires]
127
- expires == '0' ? Time.httpdate(origin_response.headers[:date]) : Time.httpdate(expires)
127
+ expires == '0' ? httpdate(origin_response.headers[:date]) : httpdate(expires)
128
128
  end
129
129
 
130
+ def httpdate(header)
131
+ Time.httpdate(header) rescue nil
132
+ end
130
133
  end
131
134
  end
132
135
  end
@@ -5,20 +5,10 @@ module AkamaiRSpec
5
5
  class Request
6
6
  extend Forwardable
7
7
 
8
- @@akamai_stg_domain = nil
9
- @@akamai_prod_domain = nil
10
-
11
- def self.stg_domain=(domain)
12
- @@akamai_stg_domain = domain
13
- end
14
-
15
- def self.prod_domain=(domain)
16
- @@akamai_prod_domain = domain
17
- end
18
-
19
- def self.network=(env)
20
- @@env = env
8
+ class << self
9
+ attr_accessor :stg_domain, :prod_domain, :network
21
10
  end
11
+ self.network = 'prod'
22
12
 
23
13
  def self.get(url, headers={})
24
14
  new.get(url, headers.merge(debug_headers))
@@ -57,30 +47,22 @@ module AkamaiRSpec
57
47
  end
58
48
 
59
49
  def initialize
60
- @@env ||= 'prod'
61
-
62
- @domain = case @@env.downcase
63
- when 'staging'
64
- if @@akamai_stg_domain.nil?
65
- raise ArgumentError.new(
66
- "You must set the staging domain: AkamaiRSpec::Request.stg_domain = 'www.example.com.edgesuite.net'"
67
- )
68
- end
69
-
70
- @@akamai_stg_domain
71
- else
72
- if @@akamai_prod_domain.nil?
73
- raise ArgumentError.new(
74
- "You must set the prod domain: AkamaiRSpec::Request.prod_domain = 'www.example.com.edgesuite.net'"
75
- )
76
- end
77
-
78
- @@akamai_prod_domain
79
- end
80
-
81
- @rest_client = RestClient::Request.new(method: :get,
82
- url: 'fakeurl.com',
83
- verify_ssl: false)
50
+ @domain = case self.class.network.downcase
51
+ when 'staging'
52
+ self.class.stg_domain or raise ArgumentError.new(
53
+ "You must set the staging domain: AkamaiRSpec::Request.stg_domain = 'www.example.com.edgesuite.net'"
54
+ )
55
+ else
56
+ self.class.prod_domain or raise ArgumentError.new(
57
+ "You must set the prod domain: AkamaiRSpec::Request.prod_domain = 'www.example.com.edgesuite.net'"
58
+ )
59
+ end
60
+
61
+ @rest_client = RestClient::Request.new(
62
+ method: :get,
63
+ url: 'fakeurl.com',
64
+ verify_ssl: false
65
+ )
84
66
  end
85
67
 
86
68
  delegate [:parse_url_with_auth, :stringify_headers] => :@rest_client
@@ -115,8 +97,7 @@ module AkamaiRSpec
115
97
 
116
98
  def build_request(uri, headers)
117
99
  req = Net::HTTP::Get.new(uri)
118
- headers.each { |key, value| req.send(:[]=, key, value) }
119
-
100
+ headers.each { |key, value| req[key] = value }
120
101
  req
121
102
  end
122
103
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: akamai_rspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bianca Gibson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-11-03 00:00:00.000000000 Z
12
+ date: 2016-11-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client