Module: Committee::Test::Methods

Defined in:
lib/committee/test/methods.rb

Instance Method Summary collapse

Instance Method Details

#assert_request_schema_confirmObject



11
12
13
14
15
16
17
18
# File 'lib/committee/test/methods.rb', line 11

def assert_request_schema_confirm
  unless schema_validator.link_exist?
    request = "`#{request_object.request_method} #{request_object.path_info}` undefined in schema."
    raise Committee::InvalidRequest.new(request)
  end

  schema_validator.request_validate(request_object)
end

#assert_response_schema_confirmObject



20
21
22
23
24
25
26
27
28
# File 'lib/committee/test/methods.rb', line 20

def assert_response_schema_confirm
  unless schema_validator.link_exist?
    response = "`#{request_object.request_method} #{request_object.path_info}` undefined in schema."
    raise Committee::InvalidResponse.new(response)
  end

  status, headers, body = response_data
  schema_validator.response_validate(status, headers, [body], true) if validate_response?(status)
end

#assert_schema_conformObject



6
7
8
9
# File 'lib/committee/test/methods.rb', line 6

def assert_schema_conform
  assert_request_schema_confirm unless old_behavior
  assert_response_schema_confirm
end

#committee_optionsObject



30
31
32
# File 'lib/committee/test/methods.rb', line 30

def committee_options
  raise "please set options"
end

#old_behaviorObject



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/committee/test/methods.rb', line 58

def old_behavior
  old_assert_behavior = committee_options.fetch(:old_assert_behavior, nil)
  if old_assert_behavior.nil?
    warn <<-MSG
    [DEPRECATION] now assert_schema_conform check response schema only.
      but we will change check request and response in future major version.
      so if you want to conform response only, please use assert_response_schema_confirm,
      or you can suppress this message and keep old behavior by setting old_assert_behavior=true.
    MSG
    old_assert_behavior = true
  end
  old_assert_behavior
end

#request_objectObject



34
35
36
# File 'lib/committee/test/methods.rb', line 34

def request_object
  raise "please set object like 'last_request'"
end

#response_dataObject



38
39
40
# File 'lib/committee/test/methods.rb', line 38

def response_data
  raise "please set response data like 'last_response.status, last_response.headers, last_response.body'"
end

#routerObject



50
51
52
# File 'lib/committee/test/methods.rb', line 50

def router
  @router ||= schema.build_router(committee_options)
end

#schemaObject



46
47
48
# File 'lib/committee/test/methods.rb', line 46

def schema
  @schema ||= Committee::Middleware::Base.get_schema(committee_options)
end

#schema_validatorObject



54
55
56
# File 'lib/committee/test/methods.rb', line 54

def schema_validator
  @schema_validator ||= router.build_schema_validator(request_object)
end

#validate_response?(status) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/committee/test/methods.rb', line 42

def validate_response?(status)
  Committee::Middleware::ResponseValidation.validate?(status, committee_options.fetch(:validate_success_only, false))
end