Class: Kentico::Kontent::Delivery::Tests::FakeResponder

Inherits:
Object
  • Object
show all
Defined in:
lib/delivery/tests/fake_responder.rb

Constant Summary collapse

IS_SECURE =

Fake Secure Access is enabled for project

true
CONTINUATION_HEADER_1 =
'+RID:~lmJ4ALSekwpBTQAAAAAADA==#RT:1#TRC:100#RTD:NrCNpn14PWTcji51F4ccBWJlYm5geGZqaHBtZWBgYHVmdHVqbnBvamJtAA==#ISV:2#IEO:65551#QCF:1#FPC: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'.freeze
CONTINUATION_HEADER_2 =
'+RID:~lmJ4ALSekwrtbwAAAAAADA==#RT:2#TRC:200#RTD:NrCNpn14PWTcji51F4ccBWJ2dXBuYnVqZGBxdmNtanRpam9oYGJvZWB2b3F2Y21qdGlqb2hgNDU0ZTJmNgA=#ISV:2#IEO:65551#QCF:1#FPC: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'.freeze
CONTINUATION_HEADER_3 =
'+RID:~lmJ4ALSekwpBxQAAAAAADA==#RT:3#TRC:300#RTD:NrCNpn14PWTcji51F4ccBWJlYm5geGZqaHBtZWBgYHVmdHVqbnBvamJtAA==#ISV:2#IEO:65551#QCF:1#FPC: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'.freeze

Class Method Summary collapse

Class Method Details

.get_response(query, url, headers) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/delivery/tests/fake_responder.rb', line 16

def get_response(query, url, headers)
  @query = query
  if IS_SECURE && !(
    headers['Authorization'] == "Bearer #{query.secure_key}" ||
    headers['Authorization'] == "Bearer #{query.preview_key}"
  )
    return respond_401
  end

  url =
    if @query.should_preview
      url["https://preview-deliver.kontent.ai/#{query.project_id}".length...url.length]
    else
      url["https://deliver.kontent.ai/#{query.project_id}".length...url.length]
    end

  return respond_429 if @query.code_name == '429'

  qs = url.contains('?') ? url.split('?')[1] : nil

  return respond_feed if query.query_type.eql? Kentico::Kontent::Delivery::QUERY_TYPE_ITEMS_FEED

  return respond_filtering qs unless qs.nil? # e.g. /items/about_us?skip=0&limit=5

  respond_generic url # Didn't match other clauses, so response should be located in corresponding filepath
end

.respond_401Object



90
91
92
93
# File 'lib/delivery/tests/fake_responder.rb', line 90

def respond_401
  path = Pathname.new(File.dirname(__FILE__) + '/401.json')
  Kentico::Kontent::Delivery::Responses::ResponseBase.new 401, '', '', path.read if path.exist?
end

.respond_429Object



85
86
87
88
# File 'lib/delivery/tests/fake_responder.rb', line 85

def respond_429
  path = Pathname.new(File.dirname(__FILE__) + '/429.json')
  Kentico::Kontent::Delivery::Responses::ResponseBase.new 429, '', '', path.read if path.exist?
end

.respond_feedObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/delivery/tests/fake_responder.rb', line 51

def respond_feed
  if @query.continuation_exists?
    if @query.continuation_token.include? '#RT:1#'
      headers = {Kentico::Kontent::Delivery::DeliveryQuery::HEADER_CONTINUATION => CONTINUATION_HEADER_2}
      path = Pathname.new(File.dirname(__FILE__) + '/items_feed/articles_feed_2.json')
    else
      headers = ''
      path = Pathname.new(File.dirname(__FILE__) + '/items_feed/articles_feed_3.json')
    end
  else
    headers = {Kentico::Kontent::Delivery::DeliveryQuery::HEADER_CONTINUATION => CONTINUATION_HEADER_1}
    path = Pathname.new(File.dirname(__FILE__) + '/items_feed/articles_feed_1.json')
  end

  OpenStruct.new(
    headers: headers,
    body: path.read
  )
end

.respond_filtering(query) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/delivery/tests/fake_responder.rb', line 71

def respond_filtering(query)
  path =
    case CGI.unescape query
    when 'includeTotalCount=1'
      Pathname.new(File.dirname(__FILE__) + '/filtering/items_with_count.json')
    when 'skip=0&limit=5'
      Pathname.new(File.dirname(__FILE__) + '/filtering/pagination.json')
    end
  OpenStruct.new(
    headers: '',
    body: path.read
  )
end

.respond_generic(url) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/delivery/tests/fake_responder.rb', line 43

def respond_generic(url)
  path = Pathname.new(File.dirname(__FILE__) + "/generic#{url}.json")
  OpenStruct.new(
    headers: '',
    body: path.read
  )
end