Skip to content

Commit 2b74d52

Browse files
committed
feat: add remainingAccess field to GrantedAccess and update related functions
1 parent b05f3d2 commit 2b74d52

File tree

11 files changed

+26
-9
lines changed

11 files changed

+26
-9
lines changed

packages/sdk/src/lib/dataProtectorCore/getGrantedAccess.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export const getGrantedAccess = async ({
5252
}
5353
);
5454
const grantedAccess = orders?.map((order) =>
55-
formatGrantedAccess(order.order)
55+
formatGrantedAccess(order.order, order.remaining)
5656
);
5757
return { count, grantedAccess };
5858
} catch (e) {

packages/sdk/src/lib/dataProtectorCore/grantAccess.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,5 +166,5 @@ export const grantAccess = async ({
166166
isDone: true,
167167
});
168168

169-
return formatGrantedAccess(datasetorder);
169+
return formatGrantedAccess(datasetorder, parseInt(datasetorder.volume));
170170
};

packages/sdk/src/lib/dataProtectorCore/revokeOneAccess.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ export const revokeOneAccess = async ({
1313
Object.keys(grantedAccess).length === 0 ? undefined : grantedAccess // pass undefined if rest operator returns an empty object to trigger the 'required' check
1414
) as GrantedAccess;
1515
try {
16-
const { txHash } = await iexec.order.cancelDatasetorder(vGrantedAccess);
16+
const { remainingAccess, ...datasetOrder } = vGrantedAccess;
17+
const { txHash } = await iexec.order.cancelDatasetorder(datasetOrder);
1718
return { access: vGrantedAccess, txHash };
1819
} catch (e) {
1920
throw new WorkflowError({

packages/sdk/src/lib/types/coreTypes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ export type GrantedAccess = {
211211
requesterrestrict: string;
212212
salt: string;
213213
sign: string;
214+
remainingAccess: number;
214215
};
215216

216217
export type GrantedAccessResponse = {
Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { GrantedAccess } from '../lib/types/index.js';
22

33
export const formatGrantedAccess = (order: {
4+
dataset: string;
45
datasetprice: number | string;
56
volume: number | string;
67
tag: string;
@@ -9,10 +10,16 @@ export const formatGrantedAccess = (order: {
910
requesterrestrict: string;
1011
salt: string;
1112
sign: string;
12-
}): GrantedAccess =>
13-
Object.fromEntries(
13+
}, remaining?: number): GrantedAccess => {
14+
const formattedOrder = Object.fromEntries(
1415
Object.entries(order).map(([key, val]) => [
1516
key,
1617
val.toString().toLowerCase(),
1718
]) // stringify numbers and lowercase addresses to return a clean GrantedAccess
18-
) as GrantedAccess;
19+
) as Omit<GrantedAccess, 'remainingAccess'>;
20+
21+
return {
22+
...formattedOrder,
23+
remainingAccess: remaining || 0,
24+
};
25+
};

packages/sdk/src/utils/validators.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export const grantedAccessSchema = () =>
9393
requesterrestrict: addressSchema().required(),
9494
salt: stringSchema().required(),
9595
sign: stringSchema().required(),
96+
remainingAccess: number().integer().min(0).required(),
9697
})
9798
.noUnknown()
9899
.default(undefined);

packages/sdk/tests/unit/dataProtectorCore/getGrantedAccess.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ describe('getGrantedAccess', () => {
258258
requesterrestrict: '0x0000000000000000000000000000000000000000',
259259
salt: '0x2a366726dc6321e78bba6697102f5953ceccfe6c0ddf9499dbb49c99bac1c16d',
260260
sign: '0xb00707c4be504e6e07d20bd2e52babd72cbd26f064ec7648c6b684578232bee255a9c98aa2e9b18b4088602967d4f0641d52c0fbb3d5c00304a1f6d3c19eaf4f1c',
261+
remainingAccess: 10,
261262
},
262263
]);
263264
});

packages/sdk/tests/unit/dataProtectorCore/grantAccess.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,8 @@ describe('dataProtectorCore.grantAccess()', () => {
297297
getDatasetOrderObject({
298298
withDataset: protectedDataAddress,
299299
withApp: authorizedAppAddress,
300-
})
300+
}),
301+
10 // volume from getDatasetOrderObject
301302
)
302303
);
303304
});

packages/sdk/tests/unit/dataProtectorCore/revokeAllAccess.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,10 @@ describe('dataProtectorCore.revokeAllAccess()', () => {
150150
});
151151

152152
// --- THEN
153+
const expectedDatasetOrder = formatGrantedAccess(oneDatasetOrder.order, oneDatasetOrder.remaining);
154+
const { remainingAccess, ...datasetOrderForCancel } = expectedDatasetOrder;
153155
expect(cancelDatasetorderMock).toHaveBeenCalledWith(
154-
formatGrantedAccess(oneDatasetOrder.order)
156+
datasetOrderForCancel
155157
);
156158
expect(onStatusUpdateMock).toHaveBeenCalledTimes(4);
157159
expect(onStatusUpdateMock).toHaveBeenNthCalledWith(1, {

packages/sdk/tests/unit/utils/formatGrantedAccess.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ describe('formatGrantedAccess', () => {
1717
};
1818

1919
// --- WHEN
20-
const formattedOrder = formatGrantedAccess(order);
20+
const formattedOrder = formatGrantedAccess(order, 5);
2121

2222
// --- THEN
2323
expect(formattedOrder).toEqual({
@@ -30,6 +30,7 @@ describe('formatGrantedAccess', () => {
3030
requesterrestrict: '0x0000000000000000000000000000000000000000',
3131
salt: '0x2a366726dc6321e78bba6697102f5953ceccfe6c0ddf9499dbb49c99bac1c16d',
3232
sign: '0xb00707c4be504e6e07d20bd2e52babd72cbd26f064ec7648c6b684578232bee255a9c98aa2e9b18b4088602967d4f0641d52c0fbb3d5c00304a1f6d3c19eaf4f1c',
33+
remainingAccess: 5,
3334
});
3435
});
3536
});

0 commit comments

Comments
 (0)