denoland / saaskit

A modern SaaS template built on Fresh.
https://deno.com/saaskit
MIT License
1.22k stars 151 forks source link

refactor: kv_oauth #674

Open fdemir opened 7 months ago

fdemir commented 7 months ago

I was trying to use the google provider and noticed that kv_oauth was old. I've upgraded it and make it easy to add new providers etc. Feel free to give feedback.

iuioiua commented 7 months ago

Thank you for the PR, @fdemir. I have to consider how we simulate a signed-in user for the tests. Please allow me some time to devise a solution to unblock this PR.

ycmjason commented 2 months ago

@iuioiua hey i have upgraded my own project to the latest kv_oauth and have successfully simulated user sign in. Here's how I've done it.

async function fakeSignIn(user: User): Promise<void> {
  await createUser(user);
  await kv.set(["site_sessions", user.sessionId], true);
}

kv_oauth can't pick up the data from ["site_sessions", user.sessionId] because each instances of sqlite opened using :memory: have data seperated. After looking into how sqlite work as guided from the deno doc, we just have to change the database filename from :memory: to file::memory:?cache=shared.

so my test script become:

    "test": "DENO_KV_PATH=\"file::memory:?cache=shared\" deno test -A --parallel --unstable-kv",

Voila, this works like a charm.

Hope this helps!

Amazing project btw, saved me so much time. ❤️

iuioiua commented 2 months ago

Hm... That seems quite hacky. Good find, nevertheless. Let me get back to you on what we do here.

ycmjason commented 2 months ago

That seems quite hacky

Why do you find it hacky? What are the major issues you are having while trying to simulate user sign in?

iuioiua commented 2 months ago

I find it hacky because it uses a barely-known KV path. I don't currently recall what the blocker was here. I'll look into this again once things calm down with std and the upcoming Deno 2 release.