diff --git a/packages/api/src/resolvers/features/index.ts b/packages/api/src/resolvers/features/index.ts index cb879d71f..4adc42257 100644 --- a/packages/api/src/resolvers/features/index.ts +++ b/packages/api/src/resolvers/features/index.ts @@ -41,6 +41,7 @@ export const optInFeatureResolver = authorized< } const token = signFeatureToken(optIn) + console.log('token', token) return { feature: { diff --git a/packages/api/src/services/features.ts b/packages/api/src/services/features.ts index 9afe0e2de..5d2959023 100644 --- a/packages/api/src/services/features.ts +++ b/packages/api/src/services/features.ts @@ -24,9 +24,12 @@ export const optInFeature = async ( } const optInUltraRealisticVoice = async (uid: string): Promise => { - const feature = await getRepository(Feature).findOneBy({ - user: { id: uid }, - name: FeatureName.UltraRealisticVoice, + const feature = await getRepository(Feature).findOne({ + where: { + user: { id: uid }, + name: FeatureName.UltraRealisticVoice, + }, + relations: ['user'], }) if (feature) { // already opted in @@ -54,13 +57,14 @@ const optInUltraRealisticVoice = async (uid: string): Promise => { } export const signFeatureToken = (feature: Feature): string => { + console.log('signing token', feature) return jwt.sign( { userid: feature.user.id, feature_name: feature.name, createdat: feature.createdAt.getTime(), - expiresat: feature.expiresAt?.getTime(), - grantedat: feature.grantedAt?.getTime(), + expiresat: feature.expiresAt?.getTime() || null, + grantedat: feature.grantedAt?.getTime() || null, }, env.server.jwtSecret ) diff --git a/packages/api/test/resolvers/features.test.ts b/packages/api/test/resolvers/features.test.ts index 49250d074..6c2348477 100644 --- a/packages/api/test/resolvers/features.test.ts +++ b/packages/api/test/resolvers/features.test.ts @@ -53,8 +53,8 @@ describe('features resolvers', () => { ` beforeEach(() => { - // mock date - clock = sinon.useFakeTimers(now.getTime()) + // mock date and ignore milliseconds + clock = sinon.useFakeTimers(now.setSeconds(now.getSeconds(), 0)) }) afterEach(() => { @@ -76,8 +76,9 @@ describe('features resolvers', () => { { userid: loginUser.id, feature_name: feature, - createdat: now.getTime(), - grantedat: now.getTime(), + createdat: Date.now(), + expiresat: null, + grantedat: Date.now(), }, env.server.jwtSecret ) @@ -85,8 +86,7 @@ describe('features resolvers', () => { expect(res.body.data.optInFeature).to.eql({ feature: { name: feature, - // set milliseconds to 000 - grantedAt: now.toISOString().replace(/\.\d{3}Z$/, '.000Z'), + grantedAt: new Date().toISOString(), token, }, }) @@ -113,7 +113,7 @@ describe('features resolvers', () => { return { user: { id: user.id }, name: feature, - grantedAt: now, + grantedAt: new Date(), } }) @@ -137,8 +137,9 @@ describe('features resolvers', () => { { userid: loginUser.id, feature_name: feature, - createdat: now.getTime(), - grantedat: now.getTime(), + createdat: Date.now(), + expiresat: null, + grantedat: null, }, env.server.jwtSecret ) @@ -177,8 +178,9 @@ describe('features resolvers', () => { { userid: loginUser.id, feature_name: feature, - createdat: now.getTime(), - grantedat: now.getTime(), + createdat: Date.now(), + expiresat: null, + grantedat: Date.now(), }, env.server.jwtSecret ) @@ -186,7 +188,7 @@ describe('features resolvers', () => { expect(res.body.data.optInFeature).to.eql({ feature: { name: feature, - grantedAt: now.toISOString().replace(/\.\d{3}Z$/, '.000Z'), + grantedAt: new Date().toISOString(), token, }, })