mirror of https://github.com/nocodb/nocodb
Raju Udava
3 years ago
3 changed files with 81 additions and 5 deletions
@ -0,0 +1,68 @@
|
||||
|
||||
import { loginPage } from "../../support/page_objects/navigation" |
||||
import { mainPage } from "../../support/page_objects/mainPage" |
||||
|
||||
describe(`Swagger API - Test preparation`, () => { |
||||
before(()=> { |
||||
loginPage.loginAndOpenProject('rest', false) |
||||
}) |
||||
|
||||
it("[REST] open project & record swagger URL, AuthToken", () => { |
||||
let authToken = mainPage.getAuthToken() |
||||
cy.url().then( (url) => { |
||||
// retrieve project name from URL & use it to construct Swagger URL
|
||||
// URL on homepage: http://localhost:3000/#/nc/externalrest_weUO?type=roles&dbalias=&name=Team%20%26%20Auth%20
|
||||
// Swagger URL: http://localhost:8080/nc/externalrest_weUO/db/swagger
|
||||
//
|
||||
const projectName = url.split("/")[5].split("?")[0]; |
||||
let swaggerURL = `http://localhost:8080/nc/${projectName}/db/swagger` |
||||
|
||||
// exchange information between two tests using a file
|
||||
// https://stackoverflow.com/questions/52050657/what-is-the-best-practice-of-pass-states-between-tests-in-cypress
|
||||
//
|
||||
cy.writeFile("shared.json", {SWAGGER_URL: swaggerURL, AUTH_TOKEN: authToken}) |
||||
}) |
||||
}) |
||||
}) |
||||
|
||||
describe(`Swagger page, base verification`, () => { |
||||
|
||||
// returns swagger button intended for
|
||||
//
|
||||
const getSwaggerButton = (tag, idx, desc) => { |
||||
return cy.get(`#operations-tag-${tag}`).next().find('.opblock').eq(idx).find(`button:contains(${desc})`) |
||||
} |
||||
|
||||
// basic authentication tag verification
|
||||
//
|
||||
it("Swagger URL access & basic validation", () => { |
||||
// retrieve information stored in previous IT block
|
||||
//
|
||||
cy.readFile("shared.json").then((jsonPayload) => { |
||||
let URL = jsonPayload.SWAGGER_URL |
||||
let Token = jsonPayload.AUTH_TOKEN |
||||
|
||||
cy.visit(URL) |
||||
cy.log(Token) |
||||
|
||||
// validate
|
||||
cy.get('#operations-tag-Authentication').next().find('.opblock').should('has.length', 9) |
||||
getSwaggerButton("Authentication", 0, "User login").should('exist') |
||||
getSwaggerButton("Authentication", 1, "User signup").should('exist') |
||||
getSwaggerButton("Authentication", 2, "Password Forgot").should('exist') |
||||
getSwaggerButton("Authentication", 3, "Email validate link").should('exist') |
||||
getSwaggerButton("Authentication", 4, "Validate password reset token").should('exist') |
||||
getSwaggerButton("Authentication", 5, "Password reset").should('exist') |
||||
getSwaggerButton("Authentication", 6, "User details").should('exist') |
||||
getSwaggerButton("Authentication", 7, "Update user details").should('exist') |
||||
getSwaggerButton("Authentication", 8, "Update user details").should('exist') |
||||
}) |
||||
}) |
||||
|
||||
// clean-up created file
|
||||
after(() => { |
||||
cy.exec("del shared.json").then(()=> { |
||||
cy.log("file cleaned up!") |
||||
}) |
||||
}) |
||||
}) |
Loading…
Reference in new issue