class DatatrueClient::Bridge
Abstracts HTTP details of DataTrueClient commands, all methods are synchronous
Attributes
Public Class Methods
# File lib/datatrue_client/bridge.rb, line 11 def initialize(options={}) @host = options[:host] || 'datatrue.com' @scheme = options[:scheme] || 'https' @api_key = options[:api_key] end
Public Instance Methods
Creates and queues a DataTrue test run @param payload [Hash]
payload = {
test_run: {
test_class: 'TestScenario',
test_id: '1',
email_users: [1, ...]
},
variables: {
name: value,
...
}
}
@return [Hash] data about created test run, including job_id
# File lib/datatrue_client/bridge.rb, line 31 def create_test_run(payload) post("test_runs", payload) end
Queries test run progress @param job_id [String] test run job id @return [Hash] data about progress
{
time: 1463359905,
status: "working",
uuid: "a1f7868b1db44d38c16585ce37e4ac3f",
num: 4,
total: 5,
progress: {
percentage: 80,
tests: [
{
id: 1,
name: "Test name",
state: "running",
steps_completed: 4,
steps: [
{
name: "Step name",
running: false,
pending: false,
error: nil,
tags: [
{ name: "Tag name', enabled: true, valid: true },
...
]
},
...
]
},
...
]
}
}
# File lib/datatrue_client/bridge.rb, line 70 def test_run_progress(job_id) get("test_runs/progress/#{job_id}") end
Private Instance Methods
Sends a GET request to url(path) @param path [String] the request path @return [Hash] parsed response body as a hash
# File lib/datatrue_client/bridge.rb, line 83 def get(path) parse_response RestClient.get(url(path), { accept: :json }) end
Parses json string to a hash and tries to convert keys to symbols @param res [String] RestClient response / json string @return [Hash] parsed hash
# File lib/datatrue_client/bridge.rb, line 99 def parse_response(res) hash = JSON.parse(res) # convert keys to symbols hash.keys.each do |key| hash[(key.to_sym rescue key) || key] = hash.delete(key) end hash end
Sends a POST request to url(path) @param path [String] the request path @param payload [Hash] data which will be converted to json and send in request body @return [Hash] parsed response body as a hash
# File lib/datatrue_client/bridge.rb, line 91 def post(path, payload) res = RestClient.post url(path), payload.to_json, { content_type: :json, accept: :json } parse_response(res) end
# File lib/datatrue_client/bridge.rb, line 76 def url(path) Addressable::URI.parse("#{scheme}://#{host}/ci_api/#{path}?api_key=#{@api_key}").normalize.to_str end