Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: option to ban user #1238

Merged
merged 18 commits into from
Feb 12, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test: list users
  • Loading branch information
peterpeterparker committed Feb 11, 2025
commit a2129574414c13b0a006d5c76bfe357064b1675b
109 changes: 71 additions & 38 deletions src/tests/specs/satellite.user-ban.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,50 @@ describe('Satellite User Usage', () => {

const controller = Ed25519KeyIdentity.generate();

const createUser = async (user: Identity) => {
actor.setIdentity(user);

const { set_doc } = actor;

return await set_doc('#user', user.getPrincipal().toText(), {
data: await toArray({
provider: 'internet_identity'
}),
description: toNullable(),
version: toNullable()
});
};

const banUser = async ({ user, version }: { user: Identity; version: [] | [bigint] }) => {
actor.setIdentity(controller);

const { set_doc } = actor;

await set_doc('#user', user.getPrincipal().toText(), {
data: await toArray({
provider: 'internet_identity',
banned: 'indefinite'
}),
description: toNullable(),
version: version
});
};

const unbanUser = async ({ user, version }: { user: Identity; version: [] | [bigint] }) => {
actor.setIdentity(controller);

const { set_doc } = actor;

await set_doc('#user', user.getPrincipal().toText(), {
data: await toArray({
provider: 'internet_identity',
banned: undefined
}),
description: toNullable(),
version: version
});
};

beforeAll(async () => {
pic = await PocketIc.create(inject('PIC_URL'));

Expand All @@ -43,7 +87,7 @@ describe('Satellite User Usage', () => {
await pic?.tearDown();
});

describe('user', () => {
describe('User', () => {
describe('error', () => {
let user: Identity;

Expand Down Expand Up @@ -73,51 +117,40 @@ describe('Satellite User Usage', () => {
});
});

describe('Ban', () => {
const collection = 'test_banned';
describe('Admin', () => {
beforeAll(() => {
actor.setIdentity(controller);
});

const createUser = async (user: Identity) => {
actor.setIdentity(user);
it('should list users including never banned, banned and unbanned', async () => {
const user1 = Ed25519KeyIdentity.generate();
await createUser(user1);

const { set_doc } = actor;
const user2 = Ed25519KeyIdentity.generate();
await createUser(user2);

return await set_doc('#user', user.getPrincipal().toText(), {
data: await toArray({
provider: 'internet_identity'
}),
description: toNullable(),
version: toNullable()
});
};
const banUser = async ({ user, version }: { user: Identity; version: [] | [bigint] }) => {
actor.setIdentity(controller);
const user3 = Ed25519KeyIdentity.generate();
await createUser(user3);

const { set_doc } = actor;
await banUser({ user: user1, version: [1n] });

await set_doc('#user', user.getPrincipal().toText(), {
data: await toArray({
provider: 'internet_identity',
banned: 'indefinite'
}),
description: toNullable(),
version: version
});
};
await banUser({ user: user2, version: [1n] });
await unbanUser({ user: user2, version: [2n] });

const unbanUser = async ({ user, version }: { user: Identity; version: [] | [bigint] }) => {
actor.setIdentity(controller);
const { list_docs } = actor;

const { set_doc } = actor;
const { items, items_length } = await list_docs('#user', mockListParams);

await set_doc('#user', user.getPrincipal().toText(), {
data: await toArray({
provider: 'internet_identity',
banned: undefined
}),
description: toNullable(),
version: version
});
};
expect(items_length).toEqual(3n);

expect(items.find(([key, _]) => key === user1.getPrincipal().toText())).not.toBeUndefined();
expect(items.find(([key, _]) => key === user2.getPrincipal().toText())).not.toBeUndefined();
expect(items.find(([key, _]) => key === user3.getPrincipal().toText())).not.toBeUndefined();
});
});

describe('Ban', () => {
const collection = 'test_banned';

describe('Datastore', () => {
let user: Identity;
Expand Down
Loading