Module: TestApi

Defined in:
lib/wd_sinatra/test_helpers.rb

Constant Summary collapse

URL_PLACEHOLDER =
/\/*(:[a-z A-Z _]+)\/*/
INTERNAL_X_HEADER =

strip the header marker added by Rack

MOBILE_X_HEADER =

strip the header marker added by Rack

Class Method Summary collapse

Class Method Details

.delete(uri, params = nil, headers = nil) ⇒ Object



94
95
96
# File 'lib/wd_sinatra/test_helpers.rb', line 94

def delete(uri, params=nil, headers=nil)
  request(:delete, uri, params, headers)
end

.get(uri, params = nil, headers = nil) ⇒ Object



58
59
60
# File 'lib/wd_sinatra/test_helpers.rb', line 58

def get(uri, params=nil, headers=nil)
  request(:get, uri, params, headers)
end

.head(uri, params = nil, headers = nil) ⇒ Object



106
107
108
# File 'lib/wd_sinatra/test_helpers.rb', line 106

def head(uri, params=nil, headers=nil)
  request(:head, uri, params, headers)
end

.internal_delete(uri, params = nil, headers = nil) ⇒ Object



98
99
100
# File 'lib/wd_sinatra/test_helpers.rb', line 98

def internal_delete(uri, params=nil, headers=nil)
  delete(uri, params, valid_internal_api_headers(headers))
end

.internal_get(uri, params = nil, headers = nil) ⇒ Object



62
63
64
# File 'lib/wd_sinatra/test_helpers.rb', line 62

def internal_get(uri, params=nil, headers=nil)
  get(uri, params, valid_internal_api_headers(headers))
end

.internal_head(uri, params = nil, headers = nil) ⇒ Object



110
111
112
# File 'lib/wd_sinatra/test_helpers.rb', line 110

def internal_head(uri, params=nil, headers=nil)
  head(uri, params, valid_internal_api_headers(headers))
end

.internal_post(uri, params = nil, headers = nil) ⇒ Object



74
75
76
# File 'lib/wd_sinatra/test_helpers.rb', line 74

def internal_post(uri, params=nil, headers=nil)
  post(uri, params, valid_internal_api_headers(headers))
end

.internal_put(uri, params = nil, headers = nil) ⇒ Object



86
87
88
# File 'lib/wd_sinatra/test_helpers.rb', line 86

def internal_put(uri, params=nil, headers=nil)
  put(uri, params, valid_internal_api_headers(headers))
end

.json_responseObject



118
119
120
# File 'lib/wd_sinatra/test_helpers.rb', line 118

def json_response
  @json_response
end

.last_responseObject



122
123
124
# File 'lib/wd_sinatra/test_helpers.rb', line 122

def last_response
  @json_response.rest_response if @json_response
end

.mobile_account=(account) ⇒ Object



54
55
56
# File 'lib/wd_sinatra/test_helpers.rb', line 54

def mobile_account=()
  @account = 
end

.mobile_delete(uri, params = nil, headers = nil) ⇒ Object



102
103
104
# File 'lib/wd_sinatra/test_helpers.rb', line 102

def mobile_delete(uri, params=nil, headers=nil)
  request(:delete, uri, params, mobile_headers(headers))
end

.mobile_get(uri, params = nil, headers = nil) ⇒ Object



66
67
68
# File 'lib/wd_sinatra/test_helpers.rb', line 66

def mobile_get(uri, params=nil, headers=nil)
  request(:get, uri, params, mobile_headers(headers))
end

.mobile_head(uri, params = nil, headers = nil) ⇒ Object



114
115
116
# File 'lib/wd_sinatra/test_helpers.rb', line 114

def mobile_head(uri, params=nil, headers=nil)
  request(:head, uri, params, mobile_headers(headers))
end

.mobile_headers(headers) ⇒ Object



132
133
134
135
136
# File 'lib/wd_sinatra/test_helpers.rb', line 132

def mobile_headers(headers)
  custom_headers = {MOBILE_X_HEADER => @account ? Base64.urlsafe_encode64(@account.mobile_token) : nil}
  custom_headers.merge!(headers) if headers
  custom_headers
end

.mobile_post(uri, params = nil, headers = nil) ⇒ Object



78
79
80
# File 'lib/wd_sinatra/test_helpers.rb', line 78

def mobile_post(uri, params=nil, headers=nil)
  request(:post, uri, params, mobile_headers(headers))
end

.mobile_put(uri, params = nil, headers = nil) ⇒ Object



90
91
92
# File 'lib/wd_sinatra/test_helpers.rb', line 90

def mobile_put(uri, params=nil, headers=nil)
  request(:put, uri, params, mobile_headers(headers))
end

.post(uri, params = nil, headers = nil) ⇒ Object



70
71
72
# File 'lib/wd_sinatra/test_helpers.rb', line 70

def post(uri, params=nil, headers=nil)
  request(:post, uri, params, headers)
end

.put(uri, params = nil, headers = nil) ⇒ Object



82
83
84
# File 'lib/wd_sinatra/test_helpers.rb', line 82

def put(uri, params=nil, headers=nil)
  request(:put, uri, params, headers)
end

.request(verb, uri, params = {}, headers = nil) {|request| ... } ⇒ Object

Yields:



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/wd_sinatra/test_helpers.rb', line 32

def request(verb, uri, params={}, headers=nil)
  params ||= {}
  service_uri = uri.dup
  matching = uri.scan URL_PLACEHOLDER
  unless matching.empty?
    # replace the placeholder by real value
    matching.flatten.each_with_index do |str, idx|
      key = str.delete(":").to_sym
      value = params[key].to_s
      # delete the value from the params
      params.delete(key)
      uri = uri.gsub(str, value)
      end
  end
  
  request = Requester.new
  yield request if block_given?
  headers.each {|name, value| request.header(name, value) } if headers
  response = request.send(verb, uri, params)
  @json_response = JsonWrapperResponse.new(response, :verb => verb, :uri => service_uri)
end

.valid_internal_api_headers(headers) ⇒ Object



126
127
128
129
130
# File 'lib/wd_sinatra/test_helpers.rb', line 126

def valid_internal_api_headers(headers)
  custom_headers = {INTERNAL_X_HEADER => AuthHelpers::ALLOWED_API_KEYS[0]}
  custom_headers.merge!(headers) if headers
  custom_headers
end