class ApiMiniTester::Import::Postman
Attributes
collection[R]
Public Class Methods
new(json_collection)
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 9 def initialize(json_collection) @collection = JSON.parse json_collection end
Public Instance Methods
baseurl(items)
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 47 def baseurl(items) base = '' items.each do |item| if item['item'] item_url = baseurl(item['item']) elsif item['request'] item_url = item['request']['url']['raw'] end base = max_common_url(base, item_url) end base end
max_common_url(url1, url2)
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 39 def max_common_url(url1, url2) return "" unless url1 && url2 index = 0 index += 1 while url1[index] && url2[index] && url1[index] == url2[index] return "" if index.zero? url1[0..(index - 1)][0..(url1.rindex('/') - 1)] end
name()
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 35 def name collection['info']['name'] end
step(item)
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 90 def step(item) res = { 'step' => item['name'], 'name' => item['name'], 'method' => item['request']['method'], 'uri' => step_uri(item['request']['url']['raw']), 'input' => { 'header' => step_header(item['request']['header']), 'body' => step_body(item['request']['body']['raw']) }, 'output' => { 'header' => {}, 'body' => {} } } res end
step_body(body)
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 84 def step_body(body) body ? JSON.parse(body) : {} rescue JSON::ParserError {} end
step_header(header)
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 76 def step_header(header) res = {} header.each do |h| res[h['key']] = h['value'] end res end
step_uri(uri)
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 72 def step_uri(uri) uri.gsub("#{@base}/", "") end
steps(items)
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 60 def steps(items) res = [] items.each do |item| if item['item'] res << steps(item['item']) elsif item['request'] res << step(item) end end res end
suite_base()
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 19 def suite_base @suite_base ||= { 'name' => name, 'desc' => "Imported from postman collection: #{name}", 'settings' => { 'baseurl' => baseurl(collection['item']) }, 'tests' => [ { 'name' => "Test scenario based on postman collection #{name}", 'steps' => [] } ] } end
to_yaml()
click to toggle source
# File lib/api_mini_tester/import/postman.rb, line 13 def to_yaml suite = suite_base suite['tests'][0]['steps'] = steps(collection['item']) suite.to_yaml end