mirror of
https://github.com/kennethnym/aris.git
synced 2026-05-07 09:01:19 +01:00
Compare commits
1 Commits
b5236e0e52
...
fix/creden
| Author | SHA1 | Date | |
|---|---|---|---|
|
d949296104
|
@@ -806,6 +806,31 @@ describe("UserSessionManager.updateSourceCredentials", () => {
|
|||||||
expect(receivedCredentials).toEqual({ token: "refreshed" })
|
expect(receivedCredentials).toEqual({ token: "refreshed" })
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("adds source to session when source is enabled but not yet in session", async () => {
|
||||||
|
// Simulate a source that was never added to the session (e.g. credentials
|
||||||
|
// were missing at config time), but is enabled in the DB.
|
||||||
|
setEnabledSources([]) // no sources during session creation
|
||||||
|
const factory = mock(async () => createStubSource("test"))
|
||||||
|
const provider: FeedSourceProvider = { sourceId: "test", feedSourceForUser: factory }
|
||||||
|
const manager = new UserSessionManager({
|
||||||
|
db: fakeDb,
|
||||||
|
providers: [provider],
|
||||||
|
credentialEncryptor: testEncryptor,
|
||||||
|
})
|
||||||
|
|
||||||
|
const session = await manager.getOrCreate("user-1")
|
||||||
|
// Source is NOT in the session
|
||||||
|
expect(session.hasSource("test")).toBe(false)
|
||||||
|
|
||||||
|
// mockFindResult returns an enabled row by default, so the source
|
||||||
|
// row exists and is enabled in the DB.
|
||||||
|
await manager.updateSourceCredentials("user-1", "test", { token: "new-token" })
|
||||||
|
|
||||||
|
// Source should now be added to the session
|
||||||
|
expect(session.hasSource("test")).toBe(true)
|
||||||
|
expect(factory).toHaveBeenCalledTimes(1)
|
||||||
|
})
|
||||||
|
|
||||||
test("persists credentials without session refresh when no active session", async () => {
|
test("persists credentials without session refresh when no active session", async () => {
|
||||||
setEnabledSources(["test"])
|
setEnabledSources(["test"])
|
||||||
const factory = mock(async () => createStubSource("test"))
|
const factory = mock(async () => createStubSource("test"))
|
||||||
|
|||||||
@@ -249,11 +249,15 @@ export class UserSessionManager {
|
|||||||
// the DB already has the new credentials but the session keeps the old
|
// the DB already has the new credentials but the session keeps the old
|
||||||
// source. The next session creation will pick up the persisted credentials.
|
// source. The next session creation will pick up the persisted credentials.
|
||||||
const session = this.sessions.get(userId)
|
const session = this.sessions.get(userId)
|
||||||
if (session && session.hasSource(sourceId)) {
|
if (session) {
|
||||||
const row = await sources(this.db, userId).find(sourceId)
|
const row = await sources(this.db, userId).find(sourceId)
|
||||||
if (row?.enabled) {
|
if (row?.enabled) {
|
||||||
const source = await provider.feedSourceForUser(userId, row.config ?? {}, credentials)
|
const source = await provider.feedSourceForUser(userId, row.config ?? {}, credentials)
|
||||||
session.replaceSource(sourceId, source)
|
if (session.hasSource(sourceId)) {
|
||||||
|
session.replaceSource(sourceId, source)
|
||||||
|
} else {
|
||||||
|
session.addSource(source)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user