Validate Data from DB2 in groovy script
I have 2 test cases, for one of them I need to validate in DB2, for the other one in SQL. The scenario: I have a search service and when sending a customer number I get all the credit cards connected to that customer. For this I need to validate in DB2. If I send a number for a customer who only has paypal accounts, I need to validate in SQL. For the second one I'm using simple SELECT query to retrieve records from one table. Here is the code that I use to validate: //----------Script Functions---------- //XMLify Response def XMLifyResponse(String step) { def resp = context.expand('${' + step + '#ResponseAsXml}') def xml = new XmlSlurper().parseText(resp) log.info("String response for step " + step + ": " + resp) log.info("XMLified content for step " + step + ": " + xml) return xml } //Jsonify Response def JsonifyResponse(String step) { def resp = context.expand('${' + step + '#Response}').toString() def json = new groovy.json.JsonSlurper().parseText(resp) log.info("String response for step " + step + ": " + resp) log.info("Jsonified content for step " + step + ": " + json) return json } //----------Main Script---------- //Parse Responses def xmlSQL = XMLifyResponse('TestData_SQL') def jsonEndpoint = JsonifyResponse('List Request') //Put into organized lists def sqlList =xmlSQL.'**'.findAll{it.name() == 'Row'} log.info("SQL LIST: "+sqlList) def endpointList = jsonEndpoint.creditCards //Validate Sizes assert sqlList.size() == endpointList.size() assert endpointList.size() <= 500, "Endpoint returned more than 500 results. " //Account Validation Endpoint - SQL endpointList.each { //Account Number def creditCardNumberHashCode = it.creditCardNumberHashCode.toString() log.info creditCardNumberHashCode def sqlcreditCardNumberHashCode = sqlList.find{it.PAYMENT_METHOD_ID.toString() == creditCardNumberHashCode} log.info sqlcreditCardNumberHashCode def statusCode = it.statusCode.toString() log.info statusCode assert it.creditCardNumberHashCode == sqlcreditCardNumberHashCode.PAYMENT_METHOD_ID.toString(), "SQL and endpoint account numbers do not match" assert it.statusCode == sqlcreditCardNumberHashCode.PAYMENT_METHOD_STATUS_TYPE_CD.toString() } log.info("Validation Complete") -------------------------------------------------------------------------- This line:def sqlcreditCardNumberHashCode = sqlList.find{it.PAYMENT_METHOD_ID.toString() == creditCardNumberHashCode} --- is supposed to create another list for that row where the account numbers match The problem arises when I need to validate in DB2 where the query retrieves following XML: <Row rowNumber="1"> <CUST_CREDT_CARD.CREDITCARD>0011001101</CUST_CREDT_CARD.CREDITCARD> <CUST_CREDT_CARD.CC_LAST_FOUR_NBR>1817</CUST_CREDT_CARD.CC_LAST_FOUR_NBR> <CUST_CREDT_CARD.CC_TYP_CD>VI </CUST_CREDT_CARD.CC_TYP_CD> </Row> <Row rowNumber="2"> <CUST_CREDT_CARD.CREDITCARD>00101010</CUST_CREDT_CARD.CREDITCARD> <CUST_CREDT_CARD.CC_LAST_FOUR_NBR>8453</CUST_CREDT_CARD.CC_LAST_FOUR_NBR> <CUST_CREDT_CARD.CC_TYP_CD>VI </CUST_CREDT_CARD.CC_TYP_CD> </Row> ---So when I use that same line of code to create a list from a row based on a specific credit card number from Json response: def db2creditCardNumberHashCode = db2List.find{it.CUST_CREDT_CARD.CREDITCARD.toString() == creditCardNumberHashCode} I get null object. I am Joining 3 tables and when querying db2 i receive an XML that gives the table and field (CUST_CREDT_CARD.CREDITCARD) and that seems to be the problem. When validating SQL jdbc response it works fine because it just retrieves me the field name (PAYMENT_METHOD_ID). I tried with using just CREDITCARD, I tried replacing the . (dot) with different things, nothing helped. Any suggestions will be greatly appreciated!1.1KViews0likes0Comments