akamai_rspec 1.1.0 → 1.2.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a7d0d25f07249dc9449d8745ef64bdff88179da
|
4
|
+
data.tar.gz: 6c792c083bc7ba702842035d68e202f81219f07a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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:
|
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
|
-
|
13
|
-
AkamaiRSpec::Request.get
|
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 ==
|
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),
|
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' ?
|
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
|
data/lib/akamai_rspec/request.rb
CHANGED
@@ -5,20 +5,10 @@ module AkamaiRSpec
|
|
5
5
|
class Request
|
6
6
|
extend Forwardable
|
7
7
|
|
8
|
-
|
9
|
-
|
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
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
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
|
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.
|
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-
|
12
|
+
date: 2016-11-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|