feat(M08-A): 接入顾客端订单开门
This commit is contained in:
@@ -107,6 +107,7 @@ const token = signAccessToken({
|
||||
tid: '7', aid: '9', rv: 1
|
||||
}, secret, 900);
|
||||
let routed;
|
||||
let routedContext;
|
||||
const app = await buildApp({
|
||||
deviceControl: {
|
||||
jwtSecret: secret,
|
||||
@@ -123,9 +124,19 @@ const app = await buildApp({
|
||||
}
|
||||
},
|
||||
accessControl: { async getAccessProfile() { return managerAccess; } },
|
||||
customerAccess: {
|
||||
async getDoorContext(input) {
|
||||
assert.deepEqual(input, { tenantId: '7', userId: '22', orderId: '31' });
|
||||
return { orderId: '31', storeId: '11', roomId: '31', status: 'IN_PROGRESS' };
|
||||
}
|
||||
},
|
||||
service: {
|
||||
async controlPower(_context, input) { routed = input; return { status: 'PUBLISHED' }; },
|
||||
async controlDoor() { return {}; },
|
||||
async controlDoor(context, input) {
|
||||
routedContext = context;
|
||||
routed = input;
|
||||
return { commandId: 'cmd-door', status: 'PUBLISHED' };
|
||||
},
|
||||
async playTts() { return {}; },
|
||||
async stopTts() { return {}; },
|
||||
async controlLed() { return {}; },
|
||||
@@ -164,6 +175,25 @@ const invalid = await app.inject({
|
||||
payload: { storeId: '11', roomId: '31', order: 'open', delayTime: 15 }
|
||||
});
|
||||
assert.equal(invalid.statusCode, 400);
|
||||
const appOpenDoor = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/app-api/orders/31/open-door',
|
||||
headers: { authorization: `Bearer ${token}`, 'x-trace-id': 'm08a-open-door' },
|
||||
payload: { delayTime: 4, holdopen: 1 }
|
||||
});
|
||||
assert.equal(appOpenDoor.statusCode, 400);
|
||||
const appOpenDoorOk = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/app-api/orders/31/open-door',
|
||||
headers: { authorization: `Bearer ${token}`, 'x-trace-id': 'm08a-open-door' },
|
||||
payload: { delayTime: 4 }
|
||||
});
|
||||
assert.equal(appOpenDoorOk.statusCode, 200);
|
||||
assert.equal(routed.order, 'open');
|
||||
assert.equal(routed.holdopen, 0);
|
||||
assert.equal(routedContext.orderId, '31');
|
||||
assert.equal(routedContext.traceId, 'm08a-open-door');
|
||||
assert.deepEqual(routedContext.access.capabilities, ['device.write']);
|
||||
await app.close();
|
||||
|
||||
console.log('PASS: M06-E device control commands include control-box, Sub-1G and smart socket.');
|
||||
|
||||
Reference in New Issue
Block a user