Created
June 12, 2017 22:06
-
-
Save arttuladhar/0c6ca355c2b089155029b0a8caf8bce7 to your computer and use it in GitHub Desktop.
REST API Testing Using Spock
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package specs | |
import geb.spock.GebReportingSpec | |
class GebDemoSpec extends GebReportingSpec { | |
def "Testing Basic Page Contents"(){ | |
setup: | |
go "http://localhost:9000/#/demo/geb-demo" | |
expect: | |
//Asserting Basic CSS Selector | |
$("h2").text() == "Rock and Roll Hall of Fame" | |
//Using Index | |
$("h3", 0).text() == "Better than the Best" | |
$("h3", 1).text() == "Subscribe Newsletter" | |
//Finding and Filtering Descendants | |
$("div.col-md-4", 0).find("strong").text() == "Top Songs List" | |
$("div.panel-heading").has("strong").size() == 3; | |
} | |
def "Testing Form Interaction with Valid Email and CheckBox Checked"(){ | |
setup: | |
go "http://localhost:9000/#/demo/geb-demo" | |
when: "User Enters Valid Email" | |
$("#exampleInputEmail").value("[email protected]"); | |
$("input", type: 'checkbox', name: "termsAndConditions").value(true) | |
and: "Clicks Submit Button" | |
$("button", type: "submit").click(); | |
then: "Redirects to Digi Marketplace Main Homepage" | |
$("h2").text() == "Digi Marketplace"; | |
} | |
def "Testing Form Interaction with InValid Email"(){ | |
setup: | |
go "http://localhost:9000/#/demo/geb-demo" | |
when: "User Enters Valid Email" | |
$("#exampleInputEmail").value("hellouser.com"); | |
and: "Clicks Submit Button" | |
$("button", type: "submit").click(); | |
then: "Should Remain in Same Page" | |
$("h2").text() == "Rock and Roll Hall of Fame"; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package specs.api | |
import groovyx.net.http.RESTClient | |
import spock.lang.Specification | |
class StudentRESTApiSpec extends Specification{ | |
static String testURL = "http://localhost:3000" | |
RESTClient restClient = new RESTClient(testURL) | |
def 'User Should be able to perform Create Request'(){ | |
given : | |
def requestBody = [firstName: 'John', lastName: 'Doe', email: '[email protected]'] | |
when: | |
def response = restClient.post(path: '/students', body: requestBody, requestContentType: 'application/json') | |
def testUserId = response.responseData | |
then: | |
response.status == 200 | |
cleanup: | |
deleteTestUser(testUserId) | |
} | |
def 'User should be able to perform Read Request'(){ | |
setup: | |
def testUserId = createTestUser().responseData | |
when: | |
def response = restClient.get( path: '/students') | |
then: | |
response.status == 200 | |
and: | |
response.responseData.id | |
response.responseData.firstName | |
response.responseData.lastName | |
cleanup: | |
deleteTestUser(testUserId) | |
} | |
def 'User should be able to perform Update Request'(){ | |
setup: | |
def testUserId = createTestUser().responseData | |
when: | |
def updatedUser = [firstName: 'Doe', lastName: 'John', email: '[email protected]'] | |
def response = restClient.put(path: '/students/' + testUserId, body: updatedUser, requestContentType: 'application/json') | |
then: | |
response.status == 200 | |
cleanup: | |
deleteTestUser(testUserId) | |
} | |
def 'User should be able to perform Delete Request'(){ | |
setup: | |
def testUserId = createTestUser().responseData | |
when: | |
def response = restClient.delete(path: '/students/' + testUserId) | |
then: | |
response.status == 200 | |
} | |
def createTestUser() { | |
def requestBody = [firstName: 'John', lastName: 'Doe', email: '[email protected]'] | |
return restClient.post(path: '/students', body: requestBody, requestContentType: 'application/json') | |
} | |
def deleteTestUser(def userId) { | |
return restClient.delete(path: '/students/' + userId) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment