fix(ui): support legacy prompts and publication confirmation
This commit is contained in:
@@ -34,6 +34,72 @@ test('accepts all documented access modes', () => {
|
||||
);
|
||||
});
|
||||
|
||||
test('getCurrent exposes whether the owner confirmed publication visibility', async () => {
|
||||
const service = createPublicationService({
|
||||
async query(sql, params) {
|
||||
assert.match(sql, /SELECT pr\.\*/);
|
||||
assert.deepEqual(params, ['page-1', 'user-1']);
|
||||
return [[{
|
||||
id: 'pub-1',
|
||||
page_id: 'page-1',
|
||||
page_version_id: 'version-1',
|
||||
url_slug: 'journal',
|
||||
public_url: '/u/john/pages/journal',
|
||||
access_mode: 'public',
|
||||
expires_at: null,
|
||||
status: 'online',
|
||||
view_count: 2,
|
||||
published_at: 1000,
|
||||
offline_at: null,
|
||||
user_confirmed_at: 2000,
|
||||
}]];
|
||||
},
|
||||
});
|
||||
|
||||
const publication = await service.getCurrent('user-1', 'page-1');
|
||||
assert.equal(publication.userConfirmedAt, 2000);
|
||||
});
|
||||
|
||||
test('getCurrent returns null confirmation for an unconfirmed publication', async () => {
|
||||
const service = createPublicationService({
|
||||
async query() {
|
||||
return [[{
|
||||
id: 'pub-1',
|
||||
page_id: 'page-1',
|
||||
page_version_id: 'version-1',
|
||||
url_slug: 'journal',
|
||||
public_url: '/u/john/pages/journal',
|
||||
access_mode: 'public',
|
||||
expires_at: null,
|
||||
status: 'online',
|
||||
view_count: 0,
|
||||
published_at: 1000,
|
||||
offline_at: null,
|
||||
user_confirmed_at: null,
|
||||
}]];
|
||||
},
|
||||
});
|
||||
|
||||
const publication = await service.getCurrent('user-1', 'page-1');
|
||||
assert.equal(publication.userConfirmedAt, null);
|
||||
});
|
||||
|
||||
test('cleanupExpiredUnconfirmedPublications falls back to owner-only access', async () => {
|
||||
let executedSql = '';
|
||||
const service = createPublicationService({
|
||||
async query(sql, params) {
|
||||
executedSql = sql;
|
||||
assert.deepEqual(params, [3000, 3000]);
|
||||
return [{ affectedRows: 1 }];
|
||||
},
|
||||
});
|
||||
|
||||
const result = await service.cleanupExpiredUnconfirmedPublications(3000);
|
||||
assert.deepEqual(result, { cleaned: 1 });
|
||||
assert.match(executedSql, /SET access_mode = 'owner_only'/);
|
||||
assert.doesNotMatch(executedSql, /SET access_mode = 'private'/);
|
||||
});
|
||||
|
||||
test('hashes access passwords with a random salt', () => {
|
||||
const first = publicationInternals.hashPassword('Publish-Password-2026');
|
||||
const second = publicationInternals.hashPassword('Publish-Password-2026');
|
||||
|
||||
Reference in New Issue
Block a user