From bdf9f46771b17460c62e8d275c9260452398ab63 Mon Sep 17 00:00:00 2001 From: "Mr. Senko" Date: Sun, 9 Feb 2020 21:37:07 +0200 Subject: [PATCH 1/4] Adjust field names for API changes coming in Kiwi TCMS v8.0 --- src/main/java/org/kiwitcms/java/api/RpcClient.java | 6 +++--- src/main/java/org/kiwitcms/java/model/Build.java | 5 +++-- src/main/java/org/kiwitcms/java/model/TestCase.java | 4 ++-- .../java/org/kiwitcms/java/model/TestExecution.java | 4 +++- src/main/java/org/kiwitcms/java/model/TestPlan.java | 6 ++---- src/main/java/org/kiwitcms/java/model/TestRun.java | 12 +++--------- .../java/org/kiwitcms/java/api/TestingRpcTest.java | 2 +- 7 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/kiwitcms/java/api/RpcClient.java b/src/main/java/org/kiwitcms/java/api/RpcClient.java index f7ee2aa..cb2a831 100644 --- a/src/main/java/org/kiwitcms/java/api/RpcClient.java +++ b/src/main/java/org/kiwitcms/java/api/RpcClient.java @@ -1,5 +1,5 @@ // Copyright (c) 2018-2019 Aneta Petkova -// Copyright (c) 2019 Alexander Todorov +// Copyright (c) 2019-2020 Alexander Todorov // Licensed under the GPLv3: https://www.gnu.org/licenses/gpl.html @@ -176,7 +176,7 @@ public int getTestPlanId(String name, int productId) { public TestRun getRun(int runId) { Map filter = new HashMap<>(); - filter.put("run_id", runId); + filter.put("pk", runId); JSONArray jsonArray = (JSONArray) executeViaPositionalParams(RUN_FILTER, Arrays.asList((Object) filter)); if (jsonArray == null || jsonArray.isEmpty()) { @@ -263,7 +263,7 @@ public TestExecution updateTestExecution(int tcRunId, int status) { values.put("status", status); Map params = new HashMap<>(); - params.put("case_run_id", tcRunId); + params.put("execution_id", tcRunId); params.put("values", values); JSONObject json = (JSONObject) executeViaNamedParams(TEST_EXECUTION_UPDATE, params); try { diff --git a/src/main/java/org/kiwitcms/java/model/Build.java b/src/main/java/org/kiwitcms/java/model/Build.java index 7d86bf7..5358f2a 100644 --- a/src/main/java/org/kiwitcms/java/model/Build.java +++ b/src/main/java/org/kiwitcms/java/model/Build.java @@ -1,4 +1,5 @@ // Copyright (c) 2019 Aneta Petkova +// Copyright (c) 2020 Alexander Todorov // Licensed under the GPLv3: https://www.gnu.org/licenses/gpl.html @@ -36,7 +37,7 @@ public int getId() { return id; } - @JsonSetter("build_id") + @JsonSetter("id") public void setId(int id) { this.id = id; } @@ -51,4 +52,4 @@ public void setName(String name) { } } -//Choices are: build_id, build_run, description, is_active, name, product, product_id, testcaserun +//Choices are: id, build_run, description, is_active, name, product, product_id, testcaserun diff --git a/src/main/java/org/kiwitcms/java/model/TestCase.java b/src/main/java/org/kiwitcms/java/model/TestCase.java index bb8a3ac..50c341b 100644 --- a/src/main/java/org/kiwitcms/java/model/TestCase.java +++ b/src/main/java/org/kiwitcms/java/model/TestCase.java @@ -1,4 +1,5 @@ // Copyright (c) 2018-2019 Aneta Petkova +// Copyright (c) 2020 Alexander Todorov // Licensed under the GPLv3: https://www.gnu.org/licenses/gpl.html @@ -29,7 +30,7 @@ public int getCaseId() { return caseId; } - @JsonSetter("case_id") + @JsonSetter("id") public void setCaseId(int caseId) { this.caseId = caseId; } @@ -126,7 +127,6 @@ public void setProductId(int productId) { } - //case_run_id public static Integer nameExists(String name, TestCase[] tests){ if (name == null || name.isEmpty() || tests.length == 0){ return null; diff --git a/src/main/java/org/kiwitcms/java/model/TestExecution.java b/src/main/java/org/kiwitcms/java/model/TestExecution.java index ef04505..6dd63e2 100644 --- a/src/main/java/org/kiwitcms/java/model/TestExecution.java +++ b/src/main/java/org/kiwitcms/java/model/TestExecution.java @@ -1,4 +1,5 @@ // Copyright (c) 2018-2019 Aneta Petkova +// Copyright (c) 2020 Alexander Todorov // Licensed under the GPLv3: https://www.gnu.org/licenses/gpl.html @@ -20,7 +21,8 @@ public int getTcRunId() { return tcRunId; } - @JsonSetter("case_run_id") + // todo: this should become this.id + @JsonSetter("id") public void setTcRunId(int tcRunId) { this.tcRunId = tcRunId; } diff --git a/src/main/java/org/kiwitcms/java/model/TestPlan.java b/src/main/java/org/kiwitcms/java/model/TestPlan.java index 9e86ef1..bb3856f 100644 --- a/src/main/java/org/kiwitcms/java/model/TestPlan.java +++ b/src/main/java/org/kiwitcms/java/model/TestPlan.java @@ -1,4 +1,5 @@ // Copyright (c) 2018-2019 Aneta Petkova +// Copyright (c) 2020 Alexander Todorov // Licensed under the GPLv3: https://www.gnu.org/licenses/gpl.html @@ -26,7 +27,7 @@ public Integer getId() { return id; } - @JsonSetter("plan_id") + @JsonSetter("id") public void setId(Integer id) { this.id = id; } @@ -114,6 +115,3 @@ public void setTypeId(Integer typeId) { } } - -//{"parent":null,"product_version":"unspecified","product":"Dunder","is_active":true,"extra_link":null,"author":"apetkova","type_id":1,"product_version_id":1,"type":"Unit","parent_id":null,"product_id":1,"name":"Auto Test Plan 1","text":"WIP","tag":[],"create_date":"2019-01-26 23:21:35","author_id":2259,"plan_id":1507} - diff --git a/src/main/java/org/kiwitcms/java/model/TestRun.java b/src/main/java/org/kiwitcms/java/model/TestRun.java index 5d6e2e4..3746618 100644 --- a/src/main/java/org/kiwitcms/java/model/TestRun.java +++ b/src/main/java/org/kiwitcms/java/model/TestRun.java @@ -1,4 +1,5 @@ // Copyright (c) 2018-2019 Aneta Petkova +// Copyright (c) 2020 Alexander Todorov // Licensed under the GPLv3: https://www.gnu.org/licenses/gpl.html @@ -20,9 +21,8 @@ public int getId() { return id; } - @JsonSetter("run_id") -//TODO: doesn't this need to be setId? Is it used at all? - public void seId(int id) { + @JsonSetter("id") + public void setId(int id) { this.id = id; } @@ -70,10 +70,4 @@ public String getProductVersion() { public void setProductVersion(String productVersion) { this.productVersion = productVersion; } - -// [{"summary":"Test run for TestPlan","cc":[],"product_version":"3.1","notes":"","run_id":694,"manager":"apetkova","stop_date":null,"product_version_id":47,"default_tester_id":2259,"build_id":29,"build":"unspecified","manager_id":2259,"tag":[],"plan":"TestPlan","default_tester":"apetkova","plan_id":1304,"start_date":"2019-01-23 21:38:04"}] -//{"summary":"Automatic test run","cc":[],"product_version":"1","run_id":705,"notes":"","manager":"apetkova","product_version_id":376,"stop_date":null,"default_tester_id":null,"build_id":4,"build":"3.39-localhost","manager_id":2259,"tag":[],"plan":"TestPlan","plan_id":1304,"default_tester":null,"start_date":"2019-01-26 22:23:02"} - - - } diff --git a/src/test/java/org/kiwitcms/java/api/TestingRpcTest.java b/src/test/java/org/kiwitcms/java/api/TestingRpcTest.java index 76106e4..fbfe57c 100644 --- a/src/test/java/org/kiwitcms/java/api/TestingRpcTest.java +++ b/src/test/java/org/kiwitcms/java/api/TestingRpcTest.java @@ -66,7 +66,7 @@ public void getRunWhenValidIdTest() { Mockito.doReturn(array).when((BaseRpcClient) spy).executeViaPositionalParams(anyString(), anyList()); TestRun expectedResult = new TestRun(); - expectedResult.seId(1); + expectedResult.setId(1); assertThat(spy.getRun(1), Matchers.samePropertyValuesAs(expectedResult)); } From 269e05beb20b502b2d233a79a13c84c003575a36 Mon Sep 17 00:00:00 2001 From: "Mr. Senko" Date: Sun, 9 Feb 2020 22:16:43 +0200 Subject: [PATCH 2/4] Use Integer.parseInt() fixes usage of TCMS_RUN_ID Integer.getInteger() is returning int values for some system properties so in must cases it was actually returning null, effectively ignoring TCMS_RUN_ID even if it was specified. --- src/main/java/org/kiwitcms/java/config/Config.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/kiwitcms/java/config/Config.java b/src/main/java/org/kiwitcms/java/config/Config.java index b71afdf..1aac278 100644 --- a/src/main/java/org/kiwitcms/java/config/Config.java +++ b/src/main/java/org/kiwitcms/java/config/Config.java @@ -60,10 +60,11 @@ public String getPassword() { public Integer getRunId() { String runId = System.getenv("TCMS_RUN_ID"); + if (runId == null) { return null; } else { - return Integer.getInteger(runId); + return Integer.parseInt(runId.trim()); } } From 54457faeca3d04d908987a0cc0ea7aca64bcd662 Mon Sep 17 00:00:00 2001 From: "Mr. Senko" Date: Sun, 9 Feb 2020 22:58:22 +0200 Subject: [PATCH 3/4] Do not use deprecated product field for TestCase.create() API --- src/main/java/org/kiwitcms/java/api/RpcClient.java | 5 ++--- src/test/java/org/kiwitcms/java/api/TestingRpcTest.java | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/kiwitcms/java/api/RpcClient.java b/src/main/java/org/kiwitcms/java/api/RpcClient.java index cb2a831..31717a0 100644 --- a/src/main/java/org/kiwitcms/java/api/RpcClient.java +++ b/src/main/java/org/kiwitcms/java/api/RpcClient.java @@ -72,9 +72,8 @@ public void logout() { } } - public TestCase createTestCase(int productId, int categoryId, int priorityId, int caseStatusId, String summary) { + public TestCase createTestCase(int categoryId, int priorityId, int caseStatusId, String summary) { Map params = new HashMap<>(); - params.put("product", productId); params.put("category", categoryId); params.put("summary", summary); params.put("is_automated", "true"); @@ -97,7 +96,7 @@ public TestCase getOrCreateTestCase(int productId, int categoryId, int priorityI JSONArray jsonArray = (JSONArray) executeViaPositionalParams(TEST_CASE_FILTER, Arrays.asList((Object)filter)); if (jsonArray == null || jsonArray.isEmpty()) { int caseStatusId = getConfirmedTCStatusId(); - return createTestCase(productId, categoryId, priorityId, caseStatusId, summary); + return createTestCase(categoryId, priorityId, caseStatusId, summary); } try { diff --git a/src/test/java/org/kiwitcms/java/api/TestingRpcTest.java b/src/test/java/org/kiwitcms/java/api/TestingRpcTest.java index fbfe57c..712916c 100644 --- a/src/test/java/org/kiwitcms/java/api/TestingRpcTest.java +++ b/src/test/java/org/kiwitcms/java/api/TestingRpcTest.java @@ -47,10 +47,11 @@ public void createTestCaseTest() { TestCase expectedTC = new TestCase(); //inconsistent tcms behaviour expectedTC.setProduct("33"); + //todo: ^^^ product probably needs to be removed expectedTC.setCategoryId(4); expectedTC.setPriorityId(0); expectedTC.setSummary("Test Summary"); - assertThat(spy.createTestCase(33, 4, 0, 1, "Test Summary"), Matchers.samePropertyValuesAs(expectedTC)); + assertThat(spy.createTestCase(4, 0, 1, "Test Summary"), Matchers.samePropertyValuesAs(expectedTC)); } @Test From db615c49f444b062b5323928178c52c29a638dc4 Mon Sep 17 00:00:00 2001 From: "Mr. Senko" Date: Sun, 9 Feb 2020 22:24:11 +0200 Subject: [PATCH 4/4] Changelog for v8.0 --- README.md | 13 +++++++++++++ pom.xml | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 643ade1..30d4bce 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,19 @@ http://kiwitcms.org/blog/atodorov/2019/02/22/how-to-use-kiwi-tcms-plugins-pt-1/ Files signed with C0C5FF36, Kiwi TCMS <info@kiwitcms.org> +### 8.0 (09 Feb 2020) + +This version works only with Kiwi TCMS v8.0 or later! + +- Adjust field names for API changes coming in Kiwi TCMS v8.0 +- Do not use deprecated `product` field when calling `TestCase.create()` API +- Bug-fix: take into account `TCMS_RUN_ID` environment variable +- Bump jackson-core from 2.10.0 to 2.10.2 +- Bump maven-source-plugin from 3.2.0 to 3.2.1 +- Bump maven-surefire-plugin from 3.0.0-M3 to 3.0.0-M4 +- Bump mockito-core from 3.1.0 to 3.2.4 + + ### 6.7.5 (10 Nov 2019) Fixes moderate severity issue diff --git a/pom.xml b/pom.xml index a5ce3bc..b293534 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.kiwitcms.java kiwitcms-junit-plugin jar - 6.7.5 + 8.0 kiwitcms-junit-plugin JUnit 5 plugin for Kiwi TCMS.