@storacha/client
Version:
Client for the storacha.network w3up api
57 lines • 2.94 kB
JavaScript
import * as Test from '../../test.js';
import { receiptsEndpoint } from '../../helpers/utils.js';
import * as Account from '../../../src/account.js';
import * as Result from '../../../src/result.js';
export const UsageClient = Test.withContext({
report: {
'should fetch account usage': async (assert, { client, connection, mail, grantAccess, service }) => {
const space = await client.createSpace('test', {
skipGatewayAuthorization: true,
});
const auth = await space.createAuthorization(client);
await client.addSpace(auth);
await client.setCurrentSpace(space.did());
const email = 'alice@web.mail';
const login = Account.login(client, email);
const message = await mail.take();
assert.deepEqual(message.to, email);
await grantAccess(message);
const account = Result.try(await login);
await account.save();
const result = await account.provision(space.did());
assert.ok(result.ok);
const content = new Blob(['hello world']);
await client.uploadFile(content, {
receiptsEndpoint,
});
const period = { from: new Date(0), to: new Date() };
const usage = await client.capability.account.usage.get(account.did(), {
period,
});
assert.ok(usage.total >= content.size);
assert.equal(Object.keys(usage.spaces).length, 1);
const spaceReport = usage.spaces[space.did()];
assert.ok(spaceReport, 'should have usage for space');
const record = spaceReport.providers[service.did()];
assert.ok(record, 'should have usage for provider');
assert.equal(record.provider, connection.id.did());
assert.equal(record.space, space.did());
assert.equal(record.period.from, period.from.toISOString());
assert.ok(record.period.to > period.to.toISOString());
assert.equal(record.size.initial, 0);
assert.ok(record.size.final >= content.size);
assert.ok(record.events.length > 0);
// Verify egress data is present
assert.ok(usage.egress, 'should have egress data');
assert.equal(typeof usage.egress.total, 'number', 'egress total should be a number');
assert.ok(usage.egress.spaces, 'should have egress spaces');
const egressSpaceReport = usage.egress.spaces[space.did()];
assert.ok(egressSpaceReport, 'should have egress for space');
const egressRecord = egressSpaceReport.providers[service.did()];
assert.ok(egressRecord, 'should have egress record for provider');
assert.equal(egressRecord.space, space.did());
},
},
});
Test.test({ UsageClient });
//# sourceMappingURL=usage.test.js.map