testrail-ruby 0.0.25 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/testrail-ruby-broken.rb +85 -0
- data/lib/testrail-ruby.rb +41 -24
- data/lib/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 904c7cb657f6119209dc39dab2ff4bede4b639c5
|
4
|
+
data.tar.gz: 7c42db52877d5de46334bae1ee84e749ddb382b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a42df30911e8911ab678b8addab502a259220ccf07fd574ae2780667d7795f574ffe5e9bb759ab40917e51ffe61a2f6a27e06980aa6dc77b21458dfd331d9df9
|
7
|
+
data.tar.gz: 697a7bb11855a1c67e2da489fff779fcf8aa8b586a6f6180377378bfc36f54813c7f4d5ea19755616b4fd61fd5be9e10717ca3cfd64385f328a6a56b0c7f0a21
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require_relative 'version'
|
2
|
+
require_relative 'endpoints'
|
3
|
+
require 'net/http'
|
4
|
+
require 'net/https'
|
5
|
+
require 'uri'
|
6
|
+
require 'json'
|
7
|
+
|
8
|
+
## #USAGE:
|
9
|
+
## #@client = TestRail::APIClient.new('YourBaseURLHere')
|
10
|
+
## #@client.user = 'UserName'
|
11
|
+
## #@client.password = 'Password'
|
12
|
+
|
13
|
+
module TestRail
|
14
|
+
class APIClient
|
15
|
+
@url = ''
|
16
|
+
@user = ''
|
17
|
+
@password = ''
|
18
|
+
|
19
|
+
include Endpoints
|
20
|
+
attr_accessor :user
|
21
|
+
attr_accessor :password
|
22
|
+
|
23
|
+
def initialize(base_url)
|
24
|
+
base_url += '/' unless base_url =~ /\/$/
|
25
|
+
@url = base_url + 'index.php?/api/v2/'
|
26
|
+
end
|
27
|
+
|
28
|
+
def send_get(uri, data)
|
29
|
+
puts "Getting: #{uri}"
|
30
|
+
puts "Sending Data: #{data}"
|
31
|
+
_send_request('GET', uri, data)
|
32
|
+
end
|
33
|
+
|
34
|
+
def send_post(uri, data)
|
35
|
+
puts "Posting: #{uri}"
|
36
|
+
puts "Sending Data: #{data}"
|
37
|
+
_send_request('POST', uri, data)
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def _send_request(method, uri, data)
|
43
|
+
url = URI.parse(@url + uri)
|
44
|
+
puts "URL: #{url}"
|
45
|
+
puts "url.query: #{url.query}"
|
46
|
+
puts "Data Payload: #{data}"
|
47
|
+
if method == 'POST'
|
48
|
+
request = Net::HTTP::Post.new(url.path + '?' + url.query)
|
49
|
+
request.body = JSON.dump(data)
|
50
|
+
else
|
51
|
+
request = Net::HTTP::Get.new(url.path + '?' + url.query)
|
52
|
+
end
|
53
|
+
request.basic_auth(@user, @password)
|
54
|
+
request.add_field('Content-Type', 'application/json')
|
55
|
+
|
56
|
+
conn = Net::HTTP.new(url.host, url.port)
|
57
|
+
if url.scheme == 'https'
|
58
|
+
conn.use_ssl = true
|
59
|
+
conn.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
60
|
+
end
|
61
|
+
response = conn.request(request)
|
62
|
+
|
63
|
+
result = if response.body && !response.body.empty?
|
64
|
+
JSON.parse(response.body)
|
65
|
+
else
|
66
|
+
{}
|
67
|
+
end
|
68
|
+
|
69
|
+
if response.code != '200'
|
70
|
+
error = if result && result.key?('error')
|
71
|
+
'"' + result['error'] + '"'
|
72
|
+
else
|
73
|
+
'No additional error message received'
|
74
|
+
end
|
75
|
+
raise APIError, 'TestRail API returned HTTP %s (%s)' %
|
76
|
+
[response.code, error]
|
77
|
+
end
|
78
|
+
|
79
|
+
result
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
class APIError < StandardError
|
84
|
+
end
|
85
|
+
end
|
data/lib/testrail-ruby.rb
CHANGED
@@ -21,30 +21,47 @@ module TestRail
|
|
21
21
|
attr_accessor :password
|
22
22
|
|
23
23
|
def initialize(base_url)
|
24
|
-
|
24
|
+
if !base_url.match(/\/$/)
|
25
|
+
base_url += '/'
|
26
|
+
end
|
25
27
|
@url = base_url + 'index.php?/api/v2/'
|
26
28
|
end
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
#
|
31
|
+
# Send Get
|
32
|
+
#
|
33
|
+
# Issues a GET request (read) against the API and returns the result
|
34
|
+
# (as Ruby hash).
|
35
|
+
#
|
36
|
+
# Arguments:
|
37
|
+
#
|
38
|
+
# uri The API method to call including parameters
|
39
|
+
# (e.g. get_case/1)
|
40
|
+
#
|
41
|
+
def send_get(uri)
|
42
|
+
_send_request('GET', uri, nil)
|
32
43
|
end
|
33
44
|
|
45
|
+
#
|
46
|
+
# Send POST
|
47
|
+
#
|
48
|
+
# Issues a POST request (write) against the API and returns the result
|
49
|
+
# (as Ruby hash).
|
50
|
+
#
|
51
|
+
# Arguments:
|
52
|
+
#
|
53
|
+
# uri The API method to call including parameters
|
54
|
+
# (e.g. add_case/1)
|
55
|
+
# data The data to submit as part of the request (as
|
56
|
+
# Ruby hash, strings must be UTF-8 encoded)
|
57
|
+
#
|
34
58
|
def send_post(uri, data)
|
35
|
-
puts "Posting: #{uri}"
|
36
|
-
puts "Sending Data: #{data}"
|
37
59
|
_send_request('POST', uri, data)
|
38
60
|
end
|
39
61
|
|
40
62
|
private
|
41
|
-
|
42
63
|
def _send_request(method, uri, data)
|
43
64
|
url = URI.parse(@url + uri)
|
44
|
-
puts "Request URL: #{url}"
|
45
|
-
puts "url.path: #{url.path}"
|
46
|
-
puts "url.query: #{url.query}"
|
47
|
-
puts "Data Payload: #{data}"
|
48
65
|
if method == 'POST'
|
49
66
|
request = Net::HTTP::Post.new(url.path + '?' + url.query)
|
50
67
|
request.body = JSON.dump(data)
|
@@ -61,20 +78,20 @@ module TestRail
|
|
61
78
|
end
|
62
79
|
response = conn.request(request)
|
63
80
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
81
|
+
if response.body && !response.body.empty?
|
82
|
+
result = JSON.parse(response.body)
|
83
|
+
else
|
84
|
+
result = {}
|
85
|
+
end
|
69
86
|
|
70
87
|
if response.code != '200'
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
raise APIError
|
77
|
-
|
88
|
+
if result && result.key?('error')
|
89
|
+
error = '"' + result['error'] + '"'
|
90
|
+
else
|
91
|
+
error = 'No additional error message received'
|
92
|
+
end
|
93
|
+
raise APIError.new('TestRail API returned HTTP %s (%s)' %
|
94
|
+
[response.code, error])
|
78
95
|
end
|
79
96
|
|
80
97
|
result
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testrail-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frances Morales
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- README.md
|
106
106
|
- Rakefile
|
107
107
|
- lib/endpoints.rb
|
108
|
+
- lib/testrail-ruby-broken.rb
|
108
109
|
- lib/testrail-ruby.rb
|
109
110
|
- lib/version.rb
|
110
111
|
- spec/spec_helper.rb
|