# Insert POST twice and verify second response error status and body

**URL:** <https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389>\
**Category:** API Testing\
**Tags:** api-testing, katalon-studio\
**Created:** [July 29, 2019, 9:23am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389 "2019-07-29T09:23:58Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gan\_Jyi\_Yng](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/gan_jyi_yng/32/16104_2.png) [@Gan\_Jyi\_Yng](https://forum.katalon.com/u/Gan_Jyi_Yng)\
**Post date:** [July 29, 2019, 9:23am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/1 "2019-07-29T09:23:58Z")

</div>

the second part of test case failed at verification to verify if status code 400 and body returned correctly, how do I correct them?

test case  
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject  
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS

//send POST message to insert Product  
WS.sendRequest(findTestObject(‘add’))

result = CustomKeywords.‘testlog.AddPro’()

print(result)

//insert same Product ID should not be allowed  
WS.delay(5)  
def response = WS.sendRequest(findTestObject(‘AddPro’))  
WS.sendRequest(findTestObject(‘AddPro’))

WS.verifyResponseStatusCode(response, 400)

WS.verifyElementText(response, “duplicate ID”)

print response  
return response

console log  
2019-07-29 17:16:48.754 ERROR c.k.katalon.core.main.TestCaseExecutor - ❌ Test Cases/AddPro FAILED.  
Reason:  
groovy.lang.MissingMethodException: No signature of method: static com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords.verifyElementText() is applicable for argument types: (com.kms.katalon.core.testobject.ResponseObject, java.lang.String) values: [400 273 bytes, duplicate ID]  
Possible solutions: verifyElementText(com.kms.katalon.core.testobject.ResponseObject, java.lang.String, java.lang.String), verifyElementText(com.kms.katalon.core.testobject.ResponseObject, java.lang.String, java.lang.String, com.kms.katalon.core.model.FailureHandling)  
at AddPro.run(AddPro:18)  
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)  
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)  
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:337)  
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:328)  
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:307)  
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:299)  
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:233)  
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)  
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)  
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)  
at TempTestCase1564391798581.run(TempTestCase1564391798581.groovy:21)

---

<div class="post-metadata">

**Author:** ![HeleneB](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/heleneb/32/2775_2.png) [@HeleneB](https://forum.katalon.com/u/HeleneB)\
**Post date:** [July 29, 2019, 9:59am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/2 "2019-07-29T09:59:08Z")

</div>

You miss a parameter

> [@Gan\_Jyi\_Yng](#):
>
> WS.verifyElementText(response, “duplicate ID”)

> [@Gan\_Jyi\_Yng](#):
>
> **Reason:**  
> groovy.lang.MissingMethodException: **No signature of method** : static com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords. **verifyElementText** () **is applicable for** argument types: (com.kms.katalon.core.testobject. **ResponseObject** , java.lang. **String** ) values: [400 273 bytes, duplicate ID]  
> **Possible solutions** : verifyElementText(com.kms.katalon.core.testobject. **ResponseObject** , java.lang. **String** , java.lang. **String** ), verifyElementText(com.kms.katalon.core.testobject.ResponseObject, java.lang.String, java.lang.String, com.kms.katalon.core.model.FailureHandling)

See also  
[https://docs.katalon.com/katalon-studio/docs/ws-verify-element-text.html#parameters](https://docs.katalon.com/katalon-studio/docs/ws-verify-element-text.html#parameters)

---

<div class="post-metadata">

**Author:** ![Gan\_Jyi\_Yng](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/gan_jyi_yng/32/16104_2.png) [@Gan\_Jyi\_Yng](https://forum.katalon.com/u/Gan_Jyi_Yng)\
**Post date:** [July 29, 2019, 10:02am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/4 "2019-07-29T10:02:23Z")

</div>

what should be the locator? i did not put it as i only get response body “duplicate ID” when i inspect the API log.

---

<div class="post-metadata">

**Author:** ![HeleneB](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/heleneb/32/2775_2.png) [@HeleneB](https://forum.katalon.com/u/HeleneB)\
**Post date:** [July 29, 2019, 10:07am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/5 "2019-07-29T10:07:58Z")

</div>

See examples from the doc

> **[Handle Response Messages](https://docs.katalon.com/katalon-studio/docs/handle-response-messages.html)**
>
> Most of the keywords for handling web service result will ask for a ResponseObject (return from the keyword WSBuiltInKeywords.sendRequest) or an element locator. ResponseObject (return from WSBuiltInKeywords.sendRequest) is a convenient class to...

---

<div class="post-metadata">

**Author:** ![Gan\_Jyi\_Yng](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/gan_jyi_yng/32/16104_2.png) [@Gan\_Jyi\_Yng](https://forum.katalon.com/u/Gan_Jyi_Yng)\
**Post date:** [July 30, 2019, 2:47am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/6 "2019-07-30T02:47:57Z")

</div>

did not get any good ideas from the brief intro/people’s comments.

---

<div class="post-metadata">

**Author:** ![HeleneB](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/heleneb/32/2775_2.png) [@HeleneB](https://forum.katalon.com/u/HeleneB)\
**Post date:** [July 30, 2019, 7:34am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/7 "2019-07-30T07:34:34Z")

</div>

Katalon Studio give you the locator when you mouse over the response. Here “5”.

 ![Capture](https://europe1.discourse-cdn.com/katalon/original/2X/c/cbaa3b1d8f764e45cd77963f6228c98948e13e2b.png)

---

<div class="post-metadata">

**Author:** ![Gan\_Jyi\_Yng](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/gan_jyi_yng/32/16104_2.png) [@Gan\_Jyi\_Yng](https://forum.katalon.com/u/Gan_Jyi_Yng)\
**Post date:** [July 30, 2019, 8:29am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/8 "2019-07-30T08:29:21Z")

</div>

in my case the body isn’t in json/xml format.  
it is returned from codes.  
Content-Type: text/plain; charset=utf-8

---

<div class="post-metadata">

**Author:** ![HeleneB](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/heleneb/32/2775_2.png) [@HeleneB](https://forum.katalon.com/u/HeleneB)\
**Post date:** [July 30, 2019, 8:47am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/9 "2019-07-30T08:47:28Z")

</div>

Share an example

---

<div class="post-metadata">

**Author:** ![Gan\_Jyi\_Yng](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/gan_jyi_yng/32/16104_2.png) [@Gan\_Jyi\_Yng](https://forum.katalon.com/u/Gan_Jyi_Yng)\
**Post date:** [July 30, 2019, 8:52am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/10 "2019-07-30T08:52:16Z")

</div>

> [@Gan\_Jyi\_Yng](#):
>
> duplicate ID

which example?  
it is just plain text response  
duplicate ID

---

<div class="post-metadata">

**Author:** ![HeleneB](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/heleneb/32/2775_2.png) [@HeleneB](https://forum.katalon.com/u/HeleneB)\
**Post date:** [July 30, 2019, 8:58am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/11 "2019-07-30T08:58:19Z")

</div>

So try with Response body: Contains string  
`assertThat(response.getResponseText()).contains('duplicate ID')`

---

<div class="post-metadata">

**Author:** ![Gan\_Jyi\_Yng](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/gan_jyi_yng/32/16104_2.png) [@Gan\_Jyi\_Yng](https://forum.katalon.com/u/Gan_Jyi_Yng)\
**Post date:** [July 30, 2019, 9:03am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/12 "2019-07-30T09:03:50Z")

</div>

> [@HeleneB](#):
>
> assertThat(response.getResponseText()).contains(‘duplicate ID’)

you mean in test case? i tried earlier, got error. don’t think assert is good to use inside test case. if this to be added in object repo when sending the POST message, then i need advise how ot make it passed only on second POST, not first POST, as first POST is not response the duplicate ID, only second POST.

Reason:  
groovy.lang.MissingMethodException: No signature of method: Script1564388610308.assertThat() is applicable for argument types: (java.lang.String) values: [duplicate ID]

---

<div class="post-metadata">

**Author:** ![HeleneB](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/heleneb/32/2775_2.png) [@HeleneB](https://forum.katalon.com/u/HeleneB)\
**Post date:** [July 30, 2019, 10:02am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/13 "2019-07-30T10:02:41Z")

</div>

“assertThat” works inside a TestCase, example :

```auto
import static org.assertj.core.api.Assertions.*

String a = "123"
assertThat(a).contains("1")

```

You can try `println response.getResponseText().contains('duplicate ID')` to see if you have the good value (true/false) then you can create a function to use this result

---

<div class="post-metadata">

**Author:** ![Gan\_Jyi\_Yng](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/gan_jyi_yng/32/16104_2.png) [@Gan\_Jyi\_Yng](https://forum.katalon.com/u/Gan_Jyi_Yng)\
**Post date:** [July 31, 2019, 1:54am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/14 "2019-07-31T01:54:01Z")

</div>

> [@HeleneB](#):
>
> import static org.assertj.core.api.Assertions.\* String a = “123” assertThat(a).contains(“1”)

ok the root cause was import not there , it is running without error now. is that katalon defect? i was trying to do shift ctrl + o but import not auto added.  
import static org.assertj.core.api.Assertions.\*

---

<div class="post-metadata">

**Author:** ![HeleneB](https://dub1.discourse-cdn.com/katalon/user_avatar/forum.katalon.com/heleneb/32/2775_2.png) [@HeleneB](https://forum.katalon.com/u/HeleneB)\
**Post date:** [July 31, 2019, 7:22am UTC](https://forum.katalon.com/t/insert-post-twice-and-verify-second-response-error-status-and-body/30389/15 "2019-07-31T07:22:05Z")

</div>

Because it’s static. We should write `Assertions.assertThat('something')` then press Ctrl + Shift + O to add imports
