resttestrail 0.0.5 → 0.1.0
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/README.md +8 -3
- data/integration_spec/resttestrail.rb +8 -0
- data/lib/resttestrail/client.rb +16 -0
- data/lib/resttestrail/requests.rb +41 -0
- data/lib/resttestrail/version.rb +1 -1
- data/resttestrail.gemspec +1 -1
- data/spec/lib/resttestrail/requests_spec.rb +57 -0
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e859e3b2d6abaa04f73e2d465c0bf6995a347c10
|
|
4
|
+
data.tar.gz: 92ae098a43dbe84e2301db51bfbc17a5efc61451
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 12ac7a30918e0f61401948b9648bba6ce5ca007ab8f85c2009fc031bb56857e5a06606bf593d1a2a3f57079cdc199fb1298df770141b4d7c7809a681ecd770ef
|
|
7
|
+
data.tar.gz: c3c074edc193e5802afcc0acc5f4d55d50fbffad0dd0b11c527bf5b5c09e4c8f6435c390f04c6a6820066d02203c41180d16f91ed5ab047175cb78b8dc58e1c0
|
data/README.md
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# Resttestrail
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Resttestrail is a ruby gem for the TestRail API (v2) which is available with TestRail 3.0 and later.
|
|
4
|
+
|
|
5
|
+
Features include:
|
|
6
|
+
|
|
7
|
+
- Publish test results (add run, get run, delete run, add result for case)
|
|
8
|
+
- Add test case to a section (add case, get case, delete case)
|
|
4
9
|
|
|
5
10
|
## Installation
|
|
6
11
|
|
|
@@ -18,11 +23,11 @@ Or install it yourself as:
|
|
|
18
23
|
|
|
19
24
|
## Usage
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
See the integration spec for usage.
|
|
22
27
|
|
|
23
28
|
## Contributing
|
|
24
29
|
|
|
25
|
-
1. Fork it ( https://github.com/
|
|
30
|
+
1. Fork it ( https://github.com/sfaiqh/resttestrail/fork )
|
|
26
31
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
27
32
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
28
33
|
4. Push to the branch (`git push origin my-new-feature`)
|
|
@@ -20,6 +20,14 @@ module Resttestrail
|
|
|
20
20
|
|
|
21
21
|
begin
|
|
22
22
|
client = Resttestrail::Client.instance
|
|
23
|
+
|
|
24
|
+
new_test_case_id = client.add_case(72621, "a new test case - delete me",
|
|
25
|
+
Resttestrail::Requests::Case_Type::FUNCTIONALITY,
|
|
26
|
+
Resttestrail::Requests::Case_Priority::MEDIUM,
|
|
27
|
+
estimate="1m 14s", milestone_id=nil, refs="REF1 REF2")
|
|
28
|
+
puts client.get_case(new_test_case_id)
|
|
29
|
+
client.delete_case(new_test_case_id)
|
|
30
|
+
|
|
23
31
|
run_id = client.add_run("an amazing run #{Time.new.strftime("%H_%M_%S_%N")}", suite_id)
|
|
24
32
|
puts "run id = #{run_id}"
|
|
25
33
|
|
data/lib/resttestrail/client.rb
CHANGED
|
@@ -17,6 +17,22 @@ module Resttestrail
|
|
|
17
17
|
@net_http = Net::HTTP.new(Resttestrail.config.host, Resttestrail.config.port)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
def add_case(section_id, title, type_id, priority_id, estimate=nil, milestone_id=nil, refs=nil)
|
|
21
|
+
request = Resttestrail::Requests.add_case(section_id, title, type_id, priority_id, estimate, milestone_id, refs)
|
|
22
|
+
http_response = Resttestrail::Client.response(@net_http.request(request))
|
|
23
|
+
http_response[:body]["id"]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def get_case(case_id)
|
|
27
|
+
request = Resttestrail::Requests.get_case(case_id)
|
|
28
|
+
Resttestrail::Client.response(@net_http.request(request))
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def delete_case(case_id)
|
|
32
|
+
request = Resttestrail::Requests.delete_case(case_id)
|
|
33
|
+
Resttestrail::Client.response(@net_http.request(request))
|
|
34
|
+
end
|
|
35
|
+
|
|
20
36
|
def add_run(run_name, suite_id)
|
|
21
37
|
request = Resttestrail::Requests.add_run(run_name, suite_id)
|
|
22
38
|
http_response = Resttestrail::Client.response(@net_http.request(request))
|
|
@@ -5,6 +5,9 @@ module Resttestrail
|
|
|
5
5
|
|
|
6
6
|
module Requests
|
|
7
7
|
URI = "/index.php?/api/v2"
|
|
8
|
+
ADD_CASE = "/add_case/"
|
|
9
|
+
GET_CASE = "/get_case/"
|
|
10
|
+
DELETE_CASE = "/delete_case/"
|
|
8
11
|
ADD_RUN = "/add_run/"
|
|
9
12
|
GET_RUN = "/get_run/"
|
|
10
13
|
DELETE_RUN = "/delete_run/"
|
|
@@ -15,6 +18,44 @@ module Resttestrail
|
|
|
15
18
|
TEST_STATUS_FAILED = 5
|
|
16
19
|
TEST_STATUS_BLOCKED = 2
|
|
17
20
|
|
|
21
|
+
module Case_Type
|
|
22
|
+
ACCEPTANCE = 10
|
|
23
|
+
COMPREHENSIVE = 9
|
|
24
|
+
SMOKE = 8
|
|
25
|
+
SCENARIO = 7
|
|
26
|
+
OTHER = 6
|
|
27
|
+
USABILITY = 5
|
|
28
|
+
REGRESSION = 4
|
|
29
|
+
PERFORMANCE = 3
|
|
30
|
+
FUNCTIONALITY = 2
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
module Case_Priority
|
|
34
|
+
CRITICAL = 7
|
|
35
|
+
HIGH = 4
|
|
36
|
+
MEDIUM = 3
|
|
37
|
+
LOW = 5
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.add_case(section_id, title, type_id, priority_id, estimate, milestone_id, refs)
|
|
41
|
+
uri = "#{URI}#{ADD_CASE}#{section_id}"
|
|
42
|
+
request = Net::HTTP::Post.new(uri, initheader = {'Content-Type' => 'application/json', 'Authorization' => basic_auth_string})
|
|
43
|
+
body = {"title" => title, "type_id" => type_id, "priority_id" => priority_id}
|
|
44
|
+
body.merge!("estimate" => estimate) if (!estimate.nil? && estimate.is_a?(String))
|
|
45
|
+
body.merge!("milestone_id" => milestone_id) if (!milestone_id.nil? && milestone_id.is_a?(Integer))
|
|
46
|
+
body.merge!("refs" => refs) if (!refs.nil? && refs.is_a?(String))
|
|
47
|
+
request.body = body.to_json
|
|
48
|
+
request
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.get_case(case_id)
|
|
52
|
+
Net::HTTP::Get.new("#{URI}#{GET_CASE}#{case_id}", initheader = {'Content-Type' => 'application/json', 'Authorization' => basic_auth_string})
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def self.delete_case(case_id)
|
|
56
|
+
Net::HTTP::Post.new("#{URI}#{DELETE_CASE}#{case_id}", initheader = {'Content-Type' => 'application/json', 'Authorization' => basic_auth_string})
|
|
57
|
+
end
|
|
58
|
+
|
|
18
59
|
def self.add_run(run_name, suite_id)
|
|
19
60
|
uri = "#{URI}#{ADD_RUN}#{Resttestrail.config.project_id}"
|
|
20
61
|
request = Net::HTTP::Post.new(uri, initheader = {'Content-Type' => 'application/json', 'Authorization' => basic_auth_string})
|
data/lib/resttestrail/version.rb
CHANGED
data/resttestrail.gemspec
CHANGED
|
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
|
9
9
|
spec.authors = ["Syed Hussain"]
|
|
10
10
|
spec.email = ["shussain@groupon.com"]
|
|
11
11
|
spec.summary = %q{Gem for Testrail rest api}
|
|
12
|
-
spec.description = %q{
|
|
12
|
+
spec.description = %q{Resttestrail is a ruby gem for the TestRail API (v2) which is available with TestRail 3.0 and later.}
|
|
13
13
|
spec.homepage = ""
|
|
14
14
|
spec.license = "MIT"
|
|
15
15
|
|
|
@@ -12,6 +12,63 @@ describe Resttestrail::Requests do
|
|
|
12
12
|
expect(Resttestrail::Requests.basic_auth_string).to eq "Basic c29tZV91c2VybmFtZTpzb21lX3Bhc3N3b3Jk\n"
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
it "makes the add test case request" do
|
|
16
|
+
add_test_case_request = Resttestrail::Requests.add_case("12345", "a great test",
|
|
17
|
+
Resttestrail::Requests::Case_Type::SMOKE,
|
|
18
|
+
Resttestrail::Requests::Case_Priority::MEDIUM,
|
|
19
|
+
"1m 10s", 4321, "REF1, REF2")
|
|
20
|
+
expect(add_test_case_request.method).to eq "POST"
|
|
21
|
+
expect(add_test_case_request.path).to eq "/index.php?/api/v2/add_case/12345"
|
|
22
|
+
body = JSON.parse(add_test_case_request.body)
|
|
23
|
+
expect(body).to be == {"title" => "a great test", "type_id" => Resttestrail::Requests::Case_Type::SMOKE,
|
|
24
|
+
"priority_id" => Resttestrail::Requests::Case_Priority::MEDIUM,
|
|
25
|
+
"estimate" => "1m 10s", "milestone_id" => 4321, "refs" => "REF1, REF2"}
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "makes the add test case request with nil estimate, milestone_id and refs" do
|
|
29
|
+
add_test_case_request = Resttestrail::Requests.add_case("12345", "a great test",
|
|
30
|
+
Resttestrail::Requests::Case_Type::SMOKE,
|
|
31
|
+
Resttestrail::Requests::Case_Priority::MEDIUM,
|
|
32
|
+
nil, nil, nil)
|
|
33
|
+
expect(add_test_case_request.method).to eq "POST"
|
|
34
|
+
expect(add_test_case_request.path).to eq "/index.php?/api/v2/add_case/12345"
|
|
35
|
+
body = JSON.parse(add_test_case_request.body)
|
|
36
|
+
expect(body).to be == {"title" => "a great test", "type_id" => Resttestrail::Requests::Case_Type::SMOKE,
|
|
37
|
+
"priority_id" => Resttestrail::Requests::Case_Priority::MEDIUM}
|
|
38
|
+
expect(body).not_to have_key("estimate")
|
|
39
|
+
expect(body).not_to have_key("milestone_id")
|
|
40
|
+
expect(body).not_to have_key("refs")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "makes the add test case request with wrong case estimate, milestone_id and refs" do
|
|
44
|
+
add_test_case_request = Resttestrail::Requests.add_case("12345", "a great test",
|
|
45
|
+
Resttestrail::Requests::Case_Type::SMOKE,
|
|
46
|
+
Resttestrail::Requests::Case_Priority::MEDIUM,
|
|
47
|
+
123, "4321", 456)
|
|
48
|
+
expect(add_test_case_request.method).to eq "POST"
|
|
49
|
+
expect(add_test_case_request.path).to eq "/index.php?/api/v2/add_case/12345"
|
|
50
|
+
body = JSON.parse(add_test_case_request.body)
|
|
51
|
+
expect(body).to be == {"title" => "a great test", "type_id" => Resttestrail::Requests::Case_Type::SMOKE,
|
|
52
|
+
"priority_id" => Resttestrail::Requests::Case_Priority::MEDIUM}
|
|
53
|
+
expect(body).not_to have_key("estimate")
|
|
54
|
+
expect(body).not_to have_key("milestone_id")
|
|
55
|
+
expect(body).not_to have_key("refs")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "makes the get test case request" do
|
|
59
|
+
get_run_request = Resttestrail::Requests.get_case(1234)
|
|
60
|
+
expect(get_run_request.method).to eq "GET"
|
|
61
|
+
expect(get_run_request.path).to eq "/index.php?/api/v2/get_case/1234"
|
|
62
|
+
expect(get_run_request.body).to eq nil
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "makes the delete test case request" do
|
|
66
|
+
request = Resttestrail::Requests.delete_case(1234)
|
|
67
|
+
expect(request.method).to eq "POST"
|
|
68
|
+
expect(request.path).to eq "/index.php?/api/v2/delete_case/1234"
|
|
69
|
+
expect(request.body).to eq nil
|
|
70
|
+
end
|
|
71
|
+
|
|
15
72
|
it "makes the add run request" do
|
|
16
73
|
add_run_request = Resttestrail::Requests.add_run("an amazing run", 1234)
|
|
17
74
|
expect(add_run_request.method).to eq "POST"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: resttestrail
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Syed Hussain
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-04-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -66,7 +66,8 @@ dependencies:
|
|
|
66
66
|
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
|
-
description:
|
|
69
|
+
description: Resttestrail is a ruby gem for the TestRail API (v2) which is available
|
|
70
|
+
with TestRail 3.0 and later.
|
|
70
71
|
email:
|
|
71
72
|
- shussain@groupon.com
|
|
72
73
|
executables: []
|