api-tester 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -12
  3. data/api-tester.gemspec +2 -2
  4. data/changelog.txt +5 -0
  5. data/lib/api-tester.rb +14 -0
  6. data/lib/api-tester/config.rb +40 -0
  7. data/lib/api-tester/definition/api_contract.rb +15 -0
  8. data/lib/api-tester/definition/api_method.rb +13 -0
  9. data/lib/api-tester/definition/boundary_case.rb +13 -0
  10. data/lib/api-tester/definition/endpoint.rb +61 -0
  11. data/lib/api-tester/definition/fields/array_field.rb +46 -0
  12. data/lib/api-tester/definition/fields/boolean_field.rb +20 -0
  13. data/lib/api-tester/definition/fields/email_field.rb +22 -0
  14. data/lib/api-tester/definition/fields/enum_field.rb +29 -0
  15. data/lib/api-tester/definition/fields/field.rb +49 -0
  16. data/lib/api-tester/definition/fields/number_field.rb +19 -0
  17. data/lib/api-tester/definition/fields/object_field.rb +44 -0
  18. data/lib/api-tester/definition/request.rb +51 -0
  19. data/lib/api-tester/definition/response.rb +36 -0
  20. data/lib/api-tester/method_case_test.rb +69 -0
  21. data/lib/api-tester/modules/extra_verbs.rb +27 -0
  22. data/lib/api-tester/modules/format.rb +28 -0
  23. data/lib/api-tester/modules/good_case.rb +31 -0
  24. data/lib/api-tester/modules/module.rb +20 -0
  25. data/lib/api-tester/modules/typo.rb +43 -0
  26. data/lib/api-tester/modules/unused_fields.rb +24 -0
  27. data/lib/api-tester/reporter/api_report.rb +35 -0
  28. data/lib/api-tester/reporter/missing_field_report.rb +25 -0
  29. data/lib/api-tester/reporter/missing_response_field_report.rb +21 -0
  30. data/lib/api-tester/reporter/report.rb +27 -0
  31. data/lib/api-tester/reporter/status_code_report.rb +14 -0
  32. data/lib/api-tester/test_helper.rb +12 -0
  33. data/lib/api-tester/util/response_evaluator.rb +75 -0
  34. data/lib/api-tester/util/supported_verbs.rb +36 -0
  35. data/lib/api-tester/version.rb +3 -0
  36. metadata +33 -33
  37. data/lib/tester.rb +0 -7
  38. data/lib/tester/api_tester.rb +0 -50
  39. data/lib/tester/definition/api_contract.rb +0 -13
  40. data/lib/tester/definition/api_method.rb +0 -11
  41. data/lib/tester/definition/boundary_case.rb +0 -11
  42. data/lib/tester/definition/endpoint.rb +0 -57
  43. data/lib/tester/definition/fields/array_field.rb +0 -44
  44. data/lib/tester/definition/fields/boolean_field.rb +0 -18
  45. data/lib/tester/definition/fields/email_field.rb +0 -20
  46. data/lib/tester/definition/fields/enum_field.rb +0 -27
  47. data/lib/tester/definition/fields/field.rb +0 -47
  48. data/lib/tester/definition/fields/number_field.rb +0 -17
  49. data/lib/tester/definition/fields/object_field.rb +0 -42
  50. data/lib/tester/definition/request.rb +0 -49
  51. data/lib/tester/definition/response.rb +0 -34
  52. data/lib/tester/method_case_test.rb +0 -67
  53. data/lib/tester/modules/extra_verbs.rb +0 -25
  54. data/lib/tester/modules/format.rb +0 -26
  55. data/lib/tester/modules/good_case.rb +0 -29
  56. data/lib/tester/modules/module.rb +0 -18
  57. data/lib/tester/modules/typo.rb +0 -41
  58. data/lib/tester/modules/unused_fields.rb +0 -22
  59. data/lib/tester/reporter/api_report.rb +0 -33
  60. data/lib/tester/reporter/missing_field_report.rb +0 -23
  61. data/lib/tester/reporter/missing_response_field_report.rb +0 -19
  62. data/lib/tester/reporter/report.rb +0 -25
  63. data/lib/tester/reporter/status_code_report.rb +0 -12
  64. data/lib/tester/test_helper.rb +0 -10
  65. data/lib/tester/util/response_evaluator.rb +0 -73
  66. data/lib/tester/util/supported_verbs.rb +0 -34
  67. data/lib/tester/version.rb +0 -3
@@ -1,22 +0,0 @@
1
- require 'tester/reporter/missing_response_field_report'
2
- require 'tester/modules/module'
3
-
4
- class UnusedFields < Module
5
- def go definition, report
6
- super
7
-
8
- definition.methods.each do |method|
9
- method.expected_response.body.each do |field|
10
- if field.is_seen == 0
11
- report.add_new_report MissingResponseFieldReport.new(definition.url, method.verb, field.name, "UnusedFieldsModule")
12
- end
13
- end
14
- end
15
-
16
- report.reports == []
17
- end
18
-
19
- def order
20
- 99
21
- end
22
- end
@@ -1,33 +0,0 @@
1
- require 'tester/reporter/report'
2
-
3
- class ApiReport
4
- attr_accessor :reports
5
-
6
- def initialize
7
- self.reports = []
8
- end
9
-
10
- def add_new url, request, expected_response, actual_response, description="A case"
11
- report = Report.new description, url, request, expected_response, actual_response
12
- self.reports << report
13
- end
14
-
15
- def add_new_report report
16
- self.reports << report
17
- end
18
-
19
- def print
20
- if self.reports.size > 0
21
- puts "Issues discovered: #{self.reports.size}"
22
- self.reports.each do |report|
23
- report.print
24
- puts "\n"
25
- puts "\n"
26
- end
27
- puts ""
28
- puts "Issues discovered: #{self.reports.size}"
29
- else
30
- puts "No issues found"
31
- end
32
- end
33
- end
@@ -1,23 +0,0 @@
1
- class MissingFieldReport
2
- attr_accessor :description
3
- attr_accessor :url
4
- attr_accessor :request
5
- attr_accessor :expected_field
6
- attr_accessor :actual_response
7
-
8
- def initialize(description, url, request, expected_field)
9
- self.description = description
10
- self.url = url
11
- self.request = request
12
- self.expected_field = expected_field
13
- self.actual_response = ''
14
- end
15
-
16
- def print
17
- puts "#{self.description}: "
18
- puts " Requested #{self.url} with payload:"
19
- puts " #{self.request}"
20
- puts ' Missing field: '
21
- puts " #{self.expected_field}"
22
- end
23
- end
@@ -1,19 +0,0 @@
1
- class MissingResponseFieldReport
2
- attr_accessor :url
3
- attr_accessor :verb
4
- attr_accessor :expected_field
5
- attr_accessor :description
6
-
7
- def initialize(url, verb, expected_field, description)
8
- self.url = url
9
- self.verb = verb
10
- self.expected_field = expected_field
11
- self.description = description
12
- end
13
-
14
- def print
15
- puts "#{self.description}:"
16
- puts " #{self.verb} #{self.url} is missing response field:"
17
- puts " #{self.expected_field}"
18
- end
19
- end
@@ -1,25 +0,0 @@
1
- class Report
2
- attr_accessor :description
3
- attr_accessor :url
4
- attr_accessor :request
5
- attr_accessor :expected_response
6
- attr_accessor :actual_response
7
-
8
- def initialize description, url, request, expected_response, actual_response
9
- self.description = description
10
- self.url = url
11
- self.request = request
12
- self.expected_response = expected_response
13
- self.actual_response = actual_response
14
- end
15
-
16
- def print
17
- puts "#{self.description}: "
18
- puts " Requested #{self.url} with payload:"
19
- puts " #{self.request.to_json}"
20
- puts " Expecting: "
21
- puts " " + self.expected_response.to_s
22
- puts " Receiving: "
23
- puts " #{self.actual_response}"
24
- end
25
- end
@@ -1,12 +0,0 @@
1
- require 'tester/reporter/report'
2
-
3
- class StatusCodeReport < Report
4
- attr_accessor :expected_status_code
5
- attr_accessor :actual_status_code
6
-
7
- def initialize description, url, request, expected_status_code, actual_status_code
8
- super description, url, request, expected_status_code, actual_status_code
9
- self.expected_status_code = expected_status_code
10
- self.actual_status_code = actual_status_code
11
- end
12
- end
@@ -1,10 +0,0 @@
1
- class TestHelper
2
- def before
3
- end
4
-
5
- def retrieve_param key
6
- end
7
-
8
- def after
9
- end
10
- end
@@ -1,73 +0,0 @@
1
- class ResponseEvaluator
2
- attr_accessor :response_body
3
- attr_accessor :expected_response
4
-
5
- def initialize(actual_response_body, expected_response_fields)
6
- self.response_body = actual_response_body
7
- self.expected_response = expected_response_fields
8
- end
9
-
10
- def response_field_array
11
- field_array self.response_body
12
- end
13
-
14
- def expected_fields
15
- expected_fields_hash.keys
16
- end
17
-
18
- def seen_fields
19
- seen = []
20
- fields = response_field_array - extra_fields
21
- expected = expected_fields_hash
22
- fields.each do |field_key|
23
- seen << expected[field_key]
24
- end
25
- seen
26
- end
27
-
28
- def expected_fields_hash
29
- expected_field_array self.expected_response.body
30
- end
31
-
32
- def extra_fields
33
- response_field_array - expected_fields
34
- end
35
-
36
- def missing_fields
37
- expected_fields - response_field_array
38
- end
39
-
40
- def expected_field_array expected_fields
41
- fields = {}
42
- expected_fields.each do |field|
43
- fields[field.name] = field
44
- fields = fields.merge inner_expected_field(field.fields, field.name)
45
- end
46
- fields
47
- end
48
-
49
- def inner_expected_field expected_fields, name
50
- fields = {}
51
- expected_fields.each do |field|
52
- inner_name = "#{name}.#{field.name}"
53
- fields[inner_name] = field
54
- fields = fields.merge inner_expected_field(field.fields, inner_name)
55
- end
56
- fields
57
- end
58
-
59
- def field_array object
60
- fields = []
61
- object.each do |key, value|
62
- if(value)
63
- fields << key.to_s
64
- fields.concat(field_array(value).map{|i| "#{key}.#{i}"})
65
- else
66
- fields.concat(field_array(key))
67
- end
68
- end
69
- fields
70
- rescue NoMethodError
71
- fields
72
- end
73
- end
@@ -1,34 +0,0 @@
1
- class SupportedVerbs
2
- def SupportedVerbs.add_item(key, value)
3
- @hash ||= {}
4
- @hash[key] = value
5
- end
6
-
7
- def SupportedVerbs.const_missing(key)
8
- @hash[key]
9
- end
10
-
11
- def SupportedVerbs.each
12
- @hash.each {|key,value| yield(key,value)}
13
- end
14
-
15
- def SupportedVerbs.all
16
- @hash.values
17
- end
18
-
19
- SupportedVerbs.add_item :COPY, :copy
20
- SupportedVerbs.add_item :DELETE, :delete
21
- SupportedVerbs.add_item :GET, :get
22
- SupportedVerbs.add_item :HEAD, :head
23
- SupportedVerbs.add_item :LOCK, :lock
24
- SupportedVerbs.add_item :MKCOL, :mkcol
25
- SupportedVerbs.add_item :MOVE, :move
26
- SupportedVerbs.add_item :OPTIONS, :options
27
- SupportedVerbs.add_item :PATCH, :patch
28
- SupportedVerbs.add_item :POST, :post
29
- SupportedVerbs.add_item :PROPFIND, :propfind
30
- SupportedVerbs.add_item :PROPPATCH, :proppatch
31
- SupportedVerbs.add_item :PUT, :put
32
- SupportedVerbs.add_item :TRACE, :trace
33
- SupportedVerbs.add_item :UNLOCK, :unlock
34
- end
@@ -1,3 +0,0 @@
1
- module Tester
2
- VERSION = "0.1.0"
3
- end