Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions test-data/test.data.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"id": 11229,
"username": "DKTestUpdateUser",
"firstName": "TestAuto",
"lastName": "DKTesting",
"email": "DKtest.user@example.com",
"password": "12345678919Aa!",
"phone": "069911122",
"userStatus": 0
}
77 changes: 69 additions & 8 deletions tests/userTests.spec.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,82 @@
import { test, expect } from '@playwright/test';
import { loginWithCredsFromEnv, CheckUserInformation, CreateTestUser } from './utilities';
import * as utilities from './utilities';
import { validUserName, validPassword } from '../playwright.config';
import testData from "../test-data/test.data.json"


test.describe('Login and UserInfo tests', () => {
test.describe('User part tests', () => {
test('Create User', async () => {
const responseStatus = await CreateTestUser({ username: validUserName, password: validPassword })
const responseStatus = await utilities.CreateTestUser({ username: validUserName, password: validPassword })
expect(responseStatus.status()).toBe(200);
});

test('Check Login', async () => {
const responseStatus = await loginWithCredsFromEnv(validUserName, validPassword);
const responseStatus = await utilities.loginWithCredsFromEnv(validUserName, validPassword);
const responseBody = await responseStatus.json()
expect(responseStatus.status()).toBe(200);
expect(responseBody.message).toContain('logged in user session')
});

test('Check User', async () => {
const responseStatus = await CheckUserInformation(validUserName)
test('Check Created User Info', async () => {
const responseStatus = await utilities.CheckUserInformation(validUserName)
expect(responseStatus.status()).toBe(200);
const responseBody = await responseStatus.json()
expect(responseBody.username).toBe(validUserName)
expect(responseBody.password).toBe(validPassword)
});
})

test('Check Update User Name', async () => {
const responseStatus = await utilities.UpdateUserName({ username: validUserName, newusername: testData.username })
expect(responseStatus.status()).toBe(200);

const checkNewUserName = await utilities.CheckUserInformation(testData.username)
const responseBody = await checkNewUserName.json()
expect(checkNewUserName.status()).toBe(200);
expect(responseBody.username).toContain(testData.username)
})

test('Check User Deleting', async () => {
const responseStatus = await utilities.DeleteUser(testData.username)
expect(responseStatus.status()).toBe(200);
});

test('Check User Logout', async () => {
const responseStatusLogin = await utilities.loginWithCredsFromEnv(validUserName, validPassword);
const responseStatusLogout = await utilities.LogoutUser()
expect(responseStatusLogout.status()).toBe(200);
const responseBody = await responseStatusLogout.json()
expect(responseBody.message).toBe('ok')
})

test('Check Creation With List', async () => {
const response = await utilities.CreateUserWithList([{
id: testData.id,
username: testData.username,
firstName: testData.firstName,
lastName: testData.lastName,
email: testData.email,
password: testData.password,
phone: testData.phone,
userStatus: testData.userStatus
}]);
expect(response.status()).toBe(200);
const responseBody = await response.json();
expect(responseBody.message).toBe('ok');
});


test('Check User With Array', async () => {
const response = await utilities.CreateUserWithList([{
id: testData.id,
username: testData.username,
firstName: testData.firstName,
lastName: testData.lastName,
email: testData.email,
password: testData.password,
phone: testData.phone,
userStatus: testData.userStatus
}]);
expect(response.status()).toBe(200);
const responseBody = await response.json()
expect(responseBody.message).toBe('ok')
})
})
85 changes: 72 additions & 13 deletions tests/utilities.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,32 @@
import { test, expect, request } from '@playwright/test';
import testData from "../test-data/test.data.json"

export async function CreateTestUser({id = 11225, username = "TestUser", firstName = "Auto", lastName = "Testing", email = "test.user@example.com", password = "12345678Aa!", phone = "0661112233", userStatus = 0} = {}) {
interface UserData {
id: number;
username: string;
firstName: string;
lastName: string;
email: string;
password: string;
phone: string;
userStatus: number;
}

export async function CreateTestUser({ id = 11225, username = "TestUser", firstName = "Auto", lastName = "Testing", email = "test.user@example.com", password = "12345678Aa!", phone = "0661112233", userStatus = 0 } = {}) {
const context = await request.newContext();
const response = await context.post('https://petstore.swagger.io/v2/user', {
data: {
"id": id,
"username": username,
"firstName": firstName,
"lastName": lastName,
"email": email,
"password": password,
"phone": phone,
"userStatus": userStatus
"id": id,
"username": username,
"firstName": firstName,
"lastName": lastName,
"email": email,
"password": password,
"phone": phone,
"userStatus": userStatus
}
})
const responseBody = await response.json();
console.log('Creation response:', responseBody);
return response
}

Expand All @@ -32,17 +43,65 @@ export async function loginWithCredsFromEnv(username: string | undefined, passwo
},
});
const responseBody = await response.json();
console.log('Login response:', responseBody);
return response
}

export async function CheckUserInformation(username: string | undefined) {
const context = await request.newContext();
const response = await context.get(`https://petstore.swagger.io/v2/user/${username}`)
const responseBody = await response.json();
console.log(responseBody)

const userInfo = await response.json();
console.log('User Information:', userInfo);
return response
}

export async function UpdateUserName({ id = 11225, username = "TestUser", firstName = "Auto", lastName = "Testing", email = "test.user@example.com", password = "12345678Aa!", phone = "0661112233", userStatus = 0, newusername = "UpdatedTestUser" } = {}) {
const context = await request.newContext()
const response = await context.put(`https://petstore.swagger.io/v2/user/${username}`, {
data: {
"id": id,
"username": newusername,
"firstName": firstName,
"lastName": lastName,
"email": email,
"password": password,
"phone": phone,
"userStatus": userStatus,
}
})

const userUpdatedInfo = await response.json();
return response
}

export async function DeleteUser(username: string) {
const context = await request.newContext()
const response = await context.delete(`https://petstore.swagger.io/v2/user/${username}`)
return response
}

export async function LogoutUser() {
const context = await request.newContext();
const response = await context.get(`https://petstore.swagger.io/v2/user/logout`, {
headers: {
"accept": "application/json"
}
});
return response
}

export async function CreateUserWithList(options: UserData[] = []): Promise<any> {
const context = await request.newContext();
const response = await context.post(`https://petstore.swagger.io/v2/user/createWithList`, {
data: options
});
return response;
}

export async function CreateUserWithArray(options: UserData[] = []): Promise<any> {
const context = await request.newContext();
const response = await context.post(`https://petstore.swagger.io/v2/user/createWithArray`, {
data: options
})
return response
}