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:
|
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
|