Skip to content

Commit dd6dc9d

Browse files
committed
test: setting session cookies
- Adds support for token transfer method - Adds route for `createNewSession`
1 parent 57ec834 commit dd6dc9d

File tree

4 files changed

+183
-1
lines changed

4 files changed

+183
-1
lines changed

test/test-server/package-lock.json

Lines changed: 126 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/test-server/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"dependencies": {
1111
"debug": "^4.3.5",
1212
"express": "^4.19.2",
13+
"morgan": "^1.10.0",
1314
"nock": "^13.5.4",
1415
"typescript": "^5.4.5"
1516
},

test/test-server/src/index.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import { resetOverrideLogs, logOverrideEvent, getOverrideLogs } from "./override
5959
import Dashboard from "../../../recipe/dashboard";
6060
import DashboardRecipe from "../../../lib/build/recipe/dashboard/recipe";
6161
import { TypeInput as WebauthnTypeInput } from "../../../lib/build/recipe/webauthn/types";
62-
62+
import morgan from "morgan";
6363
const { logDebugMessage } = logger("com.supertokens:node-test-server");
6464

6565
const API_PORT = Number(process.env.API_PORT || 3030);
@@ -163,6 +163,7 @@ function initST(config: any) {
163163
"Session.getCookieNameForTokenType",
164164
getCookieNameForTokenType
165165
),
166+
getTokenTransferMethod: () => config.getTokenTransferMethod ?? "any",
166167
override: {
167168
apis: overrideBuilderWithLogging("Session.override.apis", config?.override?.apis),
168169
functions: overrideBuilderWithLogging(
@@ -387,13 +388,23 @@ function initST(config: any) {
387388
supertokens.init(init);
388389
}
389390

391+
morgan.token("body", function (req, res) {
392+
return JSON.stringify(req.body);
393+
});
394+
395+
morgan.token("res-body", function (req, res) {
396+
return typeof res.__custombody__ ? res.__custombody__ : JSON.stringify(res.__custombody__);
397+
});
398+
390399
const app = express();
391400
app.use(express.json());
392401
app.use((req, res, next) => {
393402
logDebugMessage(req.method, req.path);
394403
next();
395404
});
396405
app.use(middleware());
406+
app.use(morgan("[:date[iso]] :url :method :body", { immediate: true }));
407+
app.use(morgan("[:date[iso]] :url :method :status :response-time ms - :res[content-length] :res-body"));
397408

398409
app.get("/test/ping", async (req, res, next) => {
399410
res.json({ ok: true });

test/test-server/src/session.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,50 @@ const router = Router()
3939
next(e);
4040
}
4141
})
42+
.post("/createnewsession", async (req, res, next) => {
43+
const fdiVersion = req.headers["fdi-version"] as string;
44+
45+
try {
46+
logDebugMessage("Session.createNewSessionWithoutRequestResponse %j", req.body);
47+
let recipeUserId;
48+
if (
49+
maxVersion("1.17", fdiVersion) === "1.17" ||
50+
(maxVersion("2.0", fdiVersion) === fdiVersion && maxVersion("3.0", fdiVersion) !== fdiVersion)
51+
) {
52+
// fdiVersion <= "1.17" || (fdiVersion >= "2.0" && fdiVersion < "3.0")
53+
recipeUserId = supertokens.convertToRecipeUserId(req.body.userId);
54+
} else {
55+
recipeUserId = supertokens.convertToRecipeUserId(req.body.recipeUserId);
56+
}
57+
const response = await Session.createNewSession(
58+
req,
59+
res,
60+
req.body.tenantId || "public",
61+
recipeUserId,
62+
req.body.accessTokenPayload,
63+
req.body.sessionDataInDatabase,
64+
req.body.userContext
65+
);
66+
67+
res.json({
68+
sessionHandle: response.getHandle(),
69+
userId: response.getUserId(),
70+
tenantId: response.getTenantId(),
71+
userDataInAccessToken: response.getAccessTokenPayload(),
72+
accessToken: response.getAccessToken(),
73+
frontToken: response.getAllSessionTokensDangerously()["frontToken"],
74+
refreshToken: response.getAllSessionTokensDangerously()["refreshToken"],
75+
antiCsrfToken: response.getAllSessionTokensDangerously()["antiCsrfToken"],
76+
accessTokenUpdated: response.getAllSessionTokensDangerously()["accessAndFrontTokenUpdated"],
77+
recipeUserId: {
78+
recipeUserId: response.getRecipeUserId().getAsString(),
79+
},
80+
});
81+
} catch (e) {
82+
console.log(e);
83+
next(e);
84+
}
85+
})
4286
.post("/getsessionwithoutrequestresponse", async (req, res, next) => {
4387
try {
4488
logDebugMessage("Session.getSessionWithoutRequestResponse %j", req.body);

0 commit comments

Comments
 (0)