Skip to content

Commit 4cdca93

Browse files
committed
Users registered by admin are automatically verified
1 parent 299df11 commit 4cdca93

File tree

3 files changed

+52
-10
lines changed

3 files changed

+52
-10
lines changed

playwright.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export default defineConfig({
3838

3939
webServer: [
4040
{
41-
command: './tests/start-test-server.sh 1.4.1a2',
41+
command: './tests/start-test-server.sh 1.4.2a0',
4242
port: 8000,
4343
waitForPort: true,
4444
stdout: 'pipe',

src/routes/admin/users/register/+page.svelte

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,68 @@
11
<script>
22
import UserEditor from '$lib/components/admin/UserEditor.svelte';
3+
import { onMount } from 'svelte';
34
45
/** @type {import('$lib/types').User} */
56
let user = {
67
email: '',
78
is_active: true,
89
is_superuser: false,
9-
is_verified: true,
10+
is_verified: false,
1011
username: '',
1112
slurm_user: '',
1213
cache_dir: '',
1314
password: ''
1415
};
1516
17+
/** @type {undefined|boolean} */
18+
let created = undefined;
19+
let verified = undefined;
20+
1621
/**
1722
* @param {import('$lib/types').User} user
1823
* @returns {Promise<Response>}
1924
*/
2025
async function save(user) {
26+
created = undefined;
27+
verified = undefined;
28+
2129
const headers = new Headers();
2230
headers.set('Content-Type', 'application/json');
2331
24-
return await fetch(`/api/auth/register`, {
32+
const createResponse = await fetch(`/api/auth/register`, {
2533
method: 'POST',
2634
credentials: 'include',
2735
headers,
2836
body: JSON.stringify(user)
2937
});
38+
39+
if (!createResponse.ok) {
40+
return createResponse;
41+
}
42+
43+
created = true;
44+
const createdUser = await createResponse.json();
45+
46+
const verifiedResponse = await fetch(`/api/auth/users/${createdUser.id}`, {
47+
method: 'PATCH',
48+
credentials: 'include',
49+
headers,
50+
body: JSON.stringify({
51+
is_verified: true
52+
})
53+
});
54+
55+
if (!verifiedResponse.ok) {
56+
verified = false;
57+
}
58+
59+
return verifiedResponse;
3060
}
61+
62+
onMount(() => {
63+
created = undefined;
64+
verified = undefined;
65+
});
3166
</script>
3267

3368
<nav aria-label="breadcrumb">
@@ -42,4 +77,11 @@
4277
</ol>
4378
</nav>
4479

80+
{#if created === true && verified === false}
81+
<div class="alert alert-warning">
82+
<strong>Warning</strong>: The user was created but an error happened while setting the
83+
<code>is_verified</code> flag on it.
84+
</div>
85+
{/if}
86+
4587
<UserEditor {user} {save} />

tests/users_crud.spec.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ test('Create, update and delete a user', async ({ page }) => {
5353
expect(await userRowCells[2].innerText()).toEqual(randomUserName);
5454
verifyChecked(userRowCells, 3, true);
5555
verifyChecked(userRowCells, 4, false);
56-
verifyChecked(userRowCells, 5, false);
56+
verifyChecked(userRowCells, 5, true);
5757
expect(await userRowCells[6].innerText()).toEqual(randomUserName + '_slurm');
5858
});
5959

@@ -70,7 +70,7 @@ test('Create, update and delete a user', async ({ page }) => {
7070
expect(await cells[2].innerText()).toEqual(randomUserName);
7171
verifyChecked(cells, 3, true);
7272
verifyChecked(cells, 4, false);
73-
verifyChecked(cells, 5, false);
73+
verifyChecked(cells, 5, true);
7474
expect(await cells[6].innerText()).toEqual(randomUserName + '_slurm');
7575
expect(await cells[7].innerText()).toEqual('/tmp/test');
7676
});
@@ -102,8 +102,8 @@ test('Create, update and delete a user', async ({ page }) => {
102102
});
103103
});
104104

105-
await test.step('Rename username and set verified checkbox', async () => {
106-
await page.getByLabel('Verified').check();
105+
await test.step('Rename username and unset verified checkbox', async () => {
106+
await page.getByLabel('Verified').uncheck();
107107
await page.getByLabel('Cache dir').fill('/tmp/test');
108108
await page.getByLabel('Username').fill(randomUserName + '-renamed');
109109
await page.getByLabel('SLURM user').fill(randomUserName + '_slurm-renamed');
@@ -116,7 +116,7 @@ test('Create, update and delete a user', async ({ page }) => {
116116
expect(await userRowCells[2].innerText()).toEqual(randomUserName + '-renamed');
117117
verifyChecked(userRowCells, 3, true);
118118
verifyChecked(userRowCells, 4, false);
119-
verifyChecked(userRowCells, 5, true);
119+
verifyChecked(userRowCells, 5, false);
120120
expect(await userRowCells[6].innerText()).toEqual(randomUserName + '_slurm-renamed');
121121
});
122122

@@ -142,7 +142,7 @@ test('Create, update and delete a user', async ({ page }) => {
142142
const userRowCells = await getUserRowCells(page, randomUserName + '-renamed');
143143
verifyChecked(userRowCells, 3, true);
144144
verifyChecked(userRowCells, 4, true);
145-
verifyChecked(userRowCells, 5, true);
145+
verifyChecked(userRowCells, 5, false);
146146
});
147147

148148
await test.step('Revoke superuser privilege', async () => {
@@ -167,7 +167,7 @@ test('Create, update and delete a user', async ({ page }) => {
167167
const userRowCells = await getUserRowCells(page, randomUserName + '-renamed');
168168
verifyChecked(userRowCells, 3, true);
169169
verifyChecked(userRowCells, 4, false);
170-
verifyChecked(userRowCells, 5, true);
170+
verifyChecked(userRowCells, 5, false);
171171
});
172172

173173
await test.step("Verify that the admin can't edit his/her superuser status", async () => {

0 commit comments

Comments
 (0)