improve integration tests
This commit is contained in:
@@ -5,6 +5,7 @@ const axios = require('axios');
|
||||
const url = 'http://localhost:86/fitness_web/rest/web/index.php?r=';
|
||||
const auth = "Basic ZG9vcl9zeXN0ZW06ZG9vcnN5c3RlbTE=";
|
||||
const TEST_CARD_NUMBER = "10WMVXMZ";
|
||||
const TEST_KEY = "f100";
|
||||
const TEST_AUTH_HEADER = {
|
||||
'Authorization': auth
|
||||
};
|
||||
@@ -29,7 +30,6 @@ function formatDateTime(date){
|
||||
+ (date.getMinutes()+"").padStart(2,"0")
|
||||
+ ":"
|
||||
+ "00";
|
||||
console.info(s);
|
||||
return s;
|
||||
}
|
||||
|
||||
@@ -74,7 +74,24 @@ class Client {
|
||||
});
|
||||
}
|
||||
|
||||
async checkoutKey(cardNumber,keyNumber) {
|
||||
return await axios.get(url + `door/checkout-key&cardNumber=${cardNumber}&keyNumber=${keyNumber}`, {
|
||||
headers: {
|
||||
...TEST_AUTH_HEADER,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async revokeKey(cardNumber,keyNumber) {
|
||||
return await axios.get(url + `door/revoke-key&cardNumber=${cardNumber}&keyNumber=${keyNumber}`, {
|
||||
headers: {
|
||||
...TEST_AUTH_HEADER,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async moveWithInfo(data, headers) {
|
||||
await this.checkoutKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
const before = await this.getInfo(data.cardNumber);
|
||||
const response = await this.move(data, headers);
|
||||
const after = await this.getInfo(data.cardNumber);
|
||||
@@ -94,7 +111,6 @@ test('Emergency open', async () => {
|
||||
let response = await client.move({direction: 128})
|
||||
expect(response.status).toBe(204);
|
||||
let after = await client.getInfo(TEST_CARD_NUMBER);
|
||||
// console.info("before:after", before.data.doorLogCount, after.data.doorLogCount);
|
||||
expect(after.data.doorLogs.length).toBe(0);
|
||||
expect(after.data.doorLogCount).toBe("" + (parseInt(before.data.doorLogCount) + 1));
|
||||
expect(after.data.lastDoorLog?.direction).toBe(128);
|
||||
@@ -113,38 +129,50 @@ test('Error if card not exists', async () => {
|
||||
|
||||
}
|
||||
expect.assertions(1);
|
||||
})
|
||||
},10000);
|
||||
|
||||
test('Allow card type employee', async () => {
|
||||
const client = new Client();
|
||||
let createdAt = new Date();
|
||||
createdAt.setHours(18);
|
||||
const info = await client.moveWithInfo({cardNumber: 'employee', direction: 3, createdAt: secondsSinceEpoch(createdAt)});
|
||||
// console.info("employee ready");
|
||||
const info = await client.moveWithInfo({cardNumber: 'employee', direction: 3, createdAt: formatDateTime(createdAt)});
|
||||
const lastLog = info.after.data.lastDoorLog;
|
||||
expect(lastLog.id_card).not.toBeNull();
|
||||
expect(lastLog.direction).toBe(3);
|
||||
})
|
||||
},10000)
|
||||
|
||||
|
||||
test('Normal Ticket: usage count will be increased on entry', async () => {
|
||||
const client = new Client();
|
||||
client.reset(TEST_CARD_NUMBER);
|
||||
await client.reset(TEST_CARD_NUMBER);
|
||||
const info = await client.moveWithInfo({cardNumber: TEST_CARD_NUMBER, direction: 3});
|
||||
expect(info?.response?.status).toBe(200);
|
||||
const ticketBefore = info?.before.data?.tickets[0];
|
||||
const ticketAfter = info?.after.data?.tickets[0];
|
||||
expect(ticketBefore.usage_count + 1).toBe(ticketAfter.usage_count);
|
||||
|
||||
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
await client.move({cardNumber: TEST_CARD_NUMBER, direction: 5});
|
||||
|
||||
const info2 = await client.moveWithInfo({cardNumber: TEST_CARD_NUMBER, direction: 3});
|
||||
expect(info?.response?.status).toBe(200);
|
||||
const ticketAfter2 = info2?.after.data?.tickets[0];
|
||||
expect(ticketAfter.usage_count).toBe(ticketAfter2.usage_count);
|
||||
},20000);
|
||||
|
||||
test('Normal Ticket: flag door in will be set on entry', async () => {
|
||||
const client = new Client();
|
||||
await client.reset(TEST_CARD_NUMBER);
|
||||
const info = await client.moveWithInfo({cardNumber: TEST_CARD_NUMBER, direction: 3});
|
||||
expect(info?.response?.status).toBe(200);
|
||||
expect(info.before.data.card.flag).toBe(0);
|
||||
expect(info.after.data.card.flag).toBe(2);
|
||||
})
|
||||
|
||||
|
||||
test('Normal Ticket: increase door log after 3 hours', async () => {
|
||||
const client = new Client();
|
||||
client.reset(TEST_CARD_NUMBER);
|
||||
await client.reset(TEST_CARD_NUMBER);
|
||||
let info = await client.getInfo(TEST_CARD_NUMBER);
|
||||
// First log on this day
|
||||
let date = new Date();
|
||||
@@ -170,6 +198,12 @@ test('Normal Ticket: increase door log after 3 hours', async () => {
|
||||
let ticketBefore = info?.before.data?.tickets[0];
|
||||
let ticketAfter = info?.after.data?.tickets[0];
|
||||
expect(ticketBefore.usage_count).toBe(ticketAfter.usage_count);
|
||||
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 5,
|
||||
createdAt: formatDateTime(createdAt)
|
||||
});
|
||||
|
||||
// @4:00 3 hours already passed, we need consume usage count
|
||||
createdAt = new Date();
|
||||
@@ -183,9 +217,16 @@ test('Normal Ticket: increase door log after 3 hours', async () => {
|
||||
ticketBefore = info?.before.data?.tickets[0];
|
||||
ticketAfter = info?.after.data?.tickets[0];
|
||||
expect(ticketBefore.usage_count+1).toBe(ticketAfter.usage_count);
|
||||
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 5,
|
||||
createdAt: formatDateTime(createdAt)
|
||||
});
|
||||
|
||||
// @6:00 2 hours passed since 4, we don't need consume usage count
|
||||
createdAt = new Date();
|
||||
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
createdAt.setHours(5);
|
||||
createdAt.setMinutes(0,0,0);
|
||||
info = await client.moveWithInfo({
|
||||
@@ -196,6 +237,12 @@ test('Normal Ticket: increase door log after 3 hours', async () => {
|
||||
ticketBefore = info?.before.data?.tickets[0];
|
||||
ticketAfter = info?.after.data?.tickets[0];
|
||||
expect(ticketBefore.usage_count).toBe(ticketAfter.usage_count);
|
||||
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 5,
|
||||
createdAt: formatDateTime(createdAt)
|
||||
});
|
||||
|
||||
// @20:15 Need to consume usage count
|
||||
createdAt = new Date();
|
||||
@@ -209,4 +256,94 @@ test('Normal Ticket: increase door log after 3 hours', async () => {
|
||||
ticketBefore = info?.before.data?.tickets[0];
|
||||
ticketAfter = info?.after.data?.tickets[0];
|
||||
expect(ticketBefore.usage_count+1).toBe(ticketAfter.usage_count);
|
||||
},10000)
|
||||
},20000)
|
||||
|
||||
test('Normal Ticket: can\'t move 2 times in without move out', async () => {
|
||||
|
||||
const client = new Client();
|
||||
await client.reset(TEST_CARD_NUMBER);
|
||||
await client.checkoutKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 3
|
||||
});
|
||||
try {
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 3
|
||||
});
|
||||
// prev statement must fail
|
||||
expect(true).toBe(false);
|
||||
}catch (e){
|
||||
expect(e).toBeDefined();
|
||||
}
|
||||
|
||||
},10000);
|
||||
|
||||
test('Normal Ticket: can\'t move 2 times \'OUT\' without move in', async () => {
|
||||
|
||||
const client = new Client();
|
||||
await client.reset(TEST_CARD_NUMBER);
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 5
|
||||
});
|
||||
try {
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 5
|
||||
});
|
||||
// prev statement must fail
|
||||
expect(true).toBe(false);
|
||||
}catch (e){
|
||||
expect(e).toBeDefined();
|
||||
}
|
||||
|
||||
},10000);
|
||||
|
||||
test('Normal Ticket: move in, move out, move in, move out', async () => {
|
||||
|
||||
const client = new Client();
|
||||
await client.reset(TEST_CARD_NUMBER);
|
||||
await client.checkoutKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 3
|
||||
});
|
||||
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 5
|
||||
});
|
||||
await client.checkoutKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 3
|
||||
});
|
||||
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 5
|
||||
});
|
||||
|
||||
},10000);
|
||||
|
||||
|
||||
test('Normal Ticket: can\'t move \'in\' without key', async () => {
|
||||
|
||||
try{
|
||||
const client = new Client();
|
||||
await client.reset(TEST_CARD_NUMBER);
|
||||
await client.move({
|
||||
cardNumber: TEST_CARD_NUMBER,
|
||||
direction: 3
|
||||
});
|
||||
// should throw an exception, since no key is assigend
|
||||
expect(true).toBe(false);
|
||||
}catch (e){
|
||||
expect(e).toBeDefined();
|
||||
}
|
||||
|
||||
|
||||
},10000);
|
||||
|
||||
Reference in New Issue
Block a user