Add validateOnly

This commit is contained in:
Schneider Roland
2022-08-02 18:39:08 +02:00
parent 97e31c4caf
commit 604e5304c1
10 changed files with 183 additions and 88 deletions

View File

@@ -66,8 +66,10 @@ class Client {
...headers
},
data: {
direction: 3,
device: 'QRCODE',
verifyOnly: false,
direction: 'IN',
device: 'Q',
validateOnly: false,
cardNumber: '10WMVXMZ',
...data
}
@@ -108,7 +110,7 @@ test('Emergency open', async () => {
const client = new Client();
await client.reset(TEST_CARD_NUMBER)
let before = await client.getInfo(TEST_CARD_NUMBER);
let response = await client.move({direction: 128})
let response = await client.move({direction: 'IN', device: 'E'})
expect(response.status).toBe(204);
let after = await client.getInfo(TEST_CARD_NUMBER);
expect(after.data.doorLogs.length).toBe(0);
@@ -123,7 +125,7 @@ test('Emergency open', async () => {
test('Error if card not exists', async () => {
const client = new Client();
try {
await client.move({cardNumber: 'notexists', direction: 3});
await client.move({cardNumber: 'notexists', direction: 'IN'});
} catch (e) {
expect(e?.response?.status).toBe(400);
@@ -135,26 +137,26 @@ 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: formatDateTime(createdAt)});
const info = await client.moveWithInfo({cardNumber: 'employee', direction: 'IN', device: 'C', createdAt: formatDateTime(createdAt)});
const lastLog = info.after.data.lastDoorLog;
expect(lastLog.id_card).not.toBeNull();
expect(lastLog.direction).toBe(3);
expect(lastLog.direction).toBe(7);
},10000)
test('Normal Ticket: usage count will be increased on entry', async () => {
const client = new Client();
await client.reset(TEST_CARD_NUMBER);
const info = await client.moveWithInfo({cardNumber: TEST_CARD_NUMBER, direction: 3});
const info = await client.moveWithInfo({cardNumber: TEST_CARD_NUMBER, device: 'C', direction: 'IN'});
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});
await client.move({cardNumber: TEST_CARD_NUMBER, device: 'C', direction: 'OUT'});
const info2 = await client.moveWithInfo({cardNumber: TEST_CARD_NUMBER, direction: 3});
const info2 = await client.moveWithInfo({cardNumber: TEST_CARD_NUMBER,device: 'C', direction: 'IN'});
expect(info?.response?.status).toBe(200);
const ticketAfter2 = info2?.after.data?.tickets[0];
expect(ticketAfter.usage_count).toBe(ticketAfter2.usage_count);
@@ -163,7 +165,7 @@ test('Normal Ticket: usage count will be increased on entry', async () => {
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});
const info = await client.moveWithInfo({cardNumber: TEST_CARD_NUMBER,device: 'C', direction: 'IN'});
expect(info?.response?.status).toBe(200);
expect(info.before.data.card.flag).toBe(0);
expect(info.after.data.card.flag).toBe(2);
@@ -183,8 +185,9 @@ test('Normal Ticket: increase door log after 3 hours', async () => {
'id_card': info.data.card.id_card,
'id_customer': info.data.customer.id_customer,
'id_ticket_current' : info.data.tickets[0].id_ticket,
'direction' : 3
'direction' : 'IN'
});
return;
// second door in @ 2:00 am. Less then 3 hours since first door log, so no
// usage_count must be consumed
let createdAt = new Date();
@@ -192,27 +195,33 @@ test('Normal Ticket: increase door log after 3 hours', async () => {
createdAt.setMinutes(0,0,0);
info = await client.moveWithInfo({
cardNumber: TEST_CARD_NUMBER,
direction: 3,
createdAt: formatDateTime(createdAt)
direction: 'IN',
createdAt: formatDateTime(createdAt),
device: 'C'
});
return;
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)
direction: 'OUT',
createdAt: formatDateTime(createdAt),
device: 'C'
});
// @4:00 3 hours already passed, we need consume usage count
return;
// @4:00 'IN' hours already passed, we need consume usage count
createdAt = new Date();
createdAt.setHours(4);
createdAt.setMinutes(0,0,0);
info = await client.moveWithInfo({
cardNumber: TEST_CARD_NUMBER,
direction: 3,
createdAt: formatDateTime(createdAt)
direction: 'IN',
createdAt: formatDateTime(createdAt),
device: 'C'
});
ticketBefore = info?.before.data?.tickets[0];
ticketAfter = info?.after.data?.tickets[0];
@@ -220,19 +229,21 @@ test('Normal Ticket: increase door log after 3 hours', async () => {
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 5,
createdAt: formatDateTime(createdAt)
direction: 'OUT',
createdAt: formatDateTime(createdAt),
device: 'C'
});
// @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.setHours('OUT');
createdAt.setMinutes(0,0,0);
info = await client.moveWithInfo({
cardNumber: TEST_CARD_NUMBER,
direction: 3,
createdAt: formatDateTime(createdAt)
direction: 'IN',
createdAt: formatDateTime(createdAt),
device: 'C'
});
ticketBefore = info?.before.data?.tickets[0];
ticketAfter = info?.after.data?.tickets[0];
@@ -240,8 +251,9 @@ test('Normal Ticket: increase door log after 3 hours', async () => {
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 5,
createdAt: formatDateTime(createdAt)
direction: 'OUT',
createdAt: formatDateTime(createdAt),
device: 'C'
});
// @20:15 Need to consume usage count
@@ -250,8 +262,9 @@ test('Normal Ticket: increase door log after 3 hours', async () => {
createdAt.setMinutes(15,0,0);
info = await client.moveWithInfo({
cardNumber: TEST_CARD_NUMBER,
direction: 3,
createdAt: formatDateTime(createdAt)
direction: 'IN',
createdAt: formatDateTime(createdAt),
device: 'C'
});
ticketBefore = info?.before.data?.tickets[0];
ticketAfter = info?.after.data?.tickets[0];
@@ -266,12 +279,14 @@ test('Normal Ticket: can\'t move 2 times in without move out', async () => {
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 3
direction: 'IN',
device: 'C'
});
try {
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 3
direction: 'IN',
device: 'C'
});
// prev statement must fail
expect(true).toBe(false);
@@ -287,12 +302,14 @@ test('Normal Ticket: can\'t move 2 times \'OUT\' without move in', async () => {
await client.reset(TEST_CARD_NUMBER);
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 5
direction: 'OUT',
device: 'C'
});
try {
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 5
direction: 'OUT',
device: 'C'
});
// prev statement must fail
expect(true).toBe(false);
@@ -309,22 +326,26 @@ test('Normal Ticket: move in, move out, move in, move out', async () => {
await client.checkoutKey(TEST_CARD_NUMBER,TEST_KEY);
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 3
direction: 'IN',
device: 'C'
});
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 5
direction: 'OUT',
device: 'C'
});
await client.checkoutKey(TEST_CARD_NUMBER,TEST_KEY);
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 3
direction: 'IN',
device: 'C'
});
await client.revokeKey(TEST_CARD_NUMBER,TEST_KEY);
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 5
direction: 'OUT',
device: 'C'
});
},10000);
@@ -337,7 +358,8 @@ test('Normal Ticket: can\'t move \'in\' without key', async () => {
await client.reset(TEST_CARD_NUMBER);
await client.move({
cardNumber: TEST_CARD_NUMBER,
direction: 3
direction: 'IN',
device: 'C'
});
// should throw an exception, since no key is assigend
expect(true).toBe(false);