mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
Fix test
This commit is contained in:
parent
8f9c317dd1
commit
7dbf8662fc
5 changed files with 63 additions and 19 deletions
|
|
@ -12,10 +12,7 @@ import { getRepository } from '../../entity/utils'
|
|||
import { ReceivedEmail } from '../../entity/received_email'
|
||||
import { saveNewsletterEmail } from '../../services/save_newsletter_email'
|
||||
import { NewsletterEmail } from '../../entity/newsletter_email'
|
||||
import { v4 as uuid } from 'uuid'
|
||||
|
||||
const FAKE_URL_PREFIX = 'https://omnivore.app/no_url?q='
|
||||
const generateUniqueUrl = () => FAKE_URL_PREFIX + uuid()
|
||||
import { generateUniqueUrl, parseEmailAddress } from '../../utils/parser'
|
||||
|
||||
export const recentEmailsResolver = authorized<
|
||||
RecentEmailsSuccess,
|
||||
|
|
@ -98,7 +95,7 @@ export const markEmailAsItemResolver = authorized<
|
|||
text: recentEmail.text,
|
||||
content: recentEmail.html,
|
||||
url: generateUniqueUrl(),
|
||||
author: '',
|
||||
author: parseEmailAddress(recentEmail.from).name,
|
||||
receivedEmailId: recentEmail.id,
|
||||
},
|
||||
newsletterEmail
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import { NewsletterEmail } from '../entity/newsletter_email'
|
|||
import { fetchFavicon } from '../utils/parser'
|
||||
import { updatePage } from '../elastic/pages'
|
||||
import { isBase64Image } from '../utils/helpers'
|
||||
import { updateReceivedEmail } from './received_emails'
|
||||
|
||||
export interface NewsletterMessage {
|
||||
from: string
|
||||
|
|
@ -63,6 +64,9 @@ export const saveNewsletterEmail = async (
|
|||
return false
|
||||
}
|
||||
|
||||
// update received email type
|
||||
await updateReceivedEmail(data.receivedEmailId, 'article')
|
||||
|
||||
if (!page.siteIcon || isBase64Image(page.siteIcon)) {
|
||||
// fetch favicon if not already set or is a base64 image
|
||||
const favicon = await fetchFavicon(page.url)
|
||||
|
|
|
|||
|
|
@ -11,12 +11,19 @@ import { request } from '../util'
|
|||
import * as parser from '../../src/utils/parser'
|
||||
import * as sendNotification from '../../src/utils/sendNotification'
|
||||
import * as sendEmail from '../../src/utils/sendEmail'
|
||||
import { getRepository } from '../../src/entity/utils'
|
||||
import { ReceivedEmail } from '../../src/entity/received_email'
|
||||
|
||||
describe('Emails Router', () => {
|
||||
const newsletterEmail = 'fakeUser@omnivore.app'
|
||||
const from = 'fake from'
|
||||
const subject = 'fake subject'
|
||||
const text = 'fake text'
|
||||
const to = newsletterEmail
|
||||
|
||||
let user: User
|
||||
let token: string
|
||||
let receivedEmail: ReceivedEmail
|
||||
|
||||
before(async () => {
|
||||
// create test user and login
|
||||
|
|
@ -24,6 +31,15 @@ describe('Emails Router', () => {
|
|||
|
||||
await createTestNewsletterEmail(user, newsletterEmail)
|
||||
token = process.env.PUBSUB_VERIFICATION_TOKEN!
|
||||
receivedEmail = await getRepository(ReceivedEmail).save({
|
||||
user: { id: user.id },
|
||||
from,
|
||||
to,
|
||||
subject,
|
||||
text,
|
||||
html: '',
|
||||
type: 'non-article',
|
||||
})
|
||||
})
|
||||
|
||||
after(async () => {
|
||||
|
|
@ -33,11 +49,7 @@ describe('Emails Router', () => {
|
|||
})
|
||||
|
||||
describe('forward', () => {
|
||||
const from = 'from@omnivore.app'
|
||||
const to = newsletterEmail
|
||||
const subject = 'test subject'
|
||||
const html = '<html>test html</html>'
|
||||
const text = 'test text'
|
||||
|
||||
beforeEach(async () => {
|
||||
sinon.replace(
|
||||
|
|
@ -61,7 +73,14 @@ describe('Emails Router', () => {
|
|||
const data = {
|
||||
message: {
|
||||
data: Buffer.from(
|
||||
JSON.stringify({ from, to, subject, html, text })
|
||||
JSON.stringify({
|
||||
from,
|
||||
to,
|
||||
subject,
|
||||
html,
|
||||
text,
|
||||
receivedEmailId: receivedEmail.id,
|
||||
})
|
||||
).toString('base64'),
|
||||
publishTime: new Date().toISOString(),
|
||||
},
|
||||
|
|
@ -83,7 +102,14 @@ describe('Emails Router', () => {
|
|||
const data = {
|
||||
message: {
|
||||
data: Buffer.from(
|
||||
JSON.stringify({ from, to, subject, html, text })
|
||||
JSON.stringify({
|
||||
from,
|
||||
to,
|
||||
subject,
|
||||
html,
|
||||
text,
|
||||
receivedEmailId: receivedEmail.id,
|
||||
})
|
||||
).toString('base64'),
|
||||
publishTime: new Date().toISOString(),
|
||||
},
|
||||
|
|
|
|||
|
|
@ -12,15 +12,19 @@ import { getPageByParam } from '../../src/elastic/pages'
|
|||
import nock from 'nock'
|
||||
import { getRepository } from '../../src/entity/utils'
|
||||
import { Subscription } from '../../src/entity/subscription'
|
||||
import { ReceivedEmail } from '../../src/entity/received_email'
|
||||
|
||||
describe('saveNewsletterEmail', () => {
|
||||
const fakeContent = 'fake content'
|
||||
const title = 'fake title'
|
||||
const author = 'fake author'
|
||||
const from = 'fake from'
|
||||
const text = 'fake text'
|
||||
|
||||
let user: User
|
||||
let newsletterEmail: NewsletterEmail
|
||||
let ctx: SaveContext
|
||||
let receivedEmail: ReceivedEmail
|
||||
|
||||
before(async () => {
|
||||
user = await createTestUser('fakeUser')
|
||||
|
|
@ -30,6 +34,15 @@ describe('saveNewsletterEmail', () => {
|
|||
refresh: true,
|
||||
uid: user.id,
|
||||
}
|
||||
receivedEmail = await getRepository(ReceivedEmail).save({
|
||||
user: { id: user.id },
|
||||
from,
|
||||
to: newsletterEmail.address,
|
||||
subject: title,
|
||||
text,
|
||||
html: '',
|
||||
type: 'non-article',
|
||||
})
|
||||
})
|
||||
|
||||
after(async () => {
|
||||
|
|
@ -42,14 +55,14 @@ describe('saveNewsletterEmail', () => {
|
|||
|
||||
await saveNewsletterEmail(
|
||||
{
|
||||
from: 'fake from',
|
||||
text: 'fake text',
|
||||
from,
|
||||
text,
|
||||
email: newsletterEmail.address,
|
||||
content: `<html><body>${fakeContent}</body></html>`,
|
||||
url,
|
||||
title,
|
||||
author,
|
||||
receivedEmailId: '',
|
||||
receivedEmailId: receivedEmail.id,
|
||||
},
|
||||
newsletterEmail,
|
||||
ctx
|
||||
|
|
@ -66,6 +79,12 @@ describe('saveNewsletterEmail', () => {
|
|||
newsletterEmail: { id: newsletterEmail.id },
|
||||
})
|
||||
expect(subscriptions).not.to.be.empty
|
||||
|
||||
// check if the received email was updated
|
||||
const updatedReceivedEmail = await getRepository(ReceivedEmail).findOneBy({
|
||||
id: receivedEmail.id,
|
||||
})
|
||||
expect(updatedReceivedEmail?.type).to.equal('article')
|
||||
})
|
||||
|
||||
it('should adds a Newsletter label to that page', async () => {
|
||||
|
|
@ -82,9 +101,9 @@ describe('saveNewsletterEmail', () => {
|
|||
url,
|
||||
title,
|
||||
author,
|
||||
from: 'fake from',
|
||||
text: 'fake text',
|
||||
receivedEmailId: '',
|
||||
from,
|
||||
text,
|
||||
receivedEmailId: receivedEmail.id,
|
||||
},
|
||||
newsletterEmail,
|
||||
ctx
|
||||
|
|
|
|||
|
|
@ -133,8 +133,6 @@ export const inboundEmailHandler = Sentry.GCPFunction.wrapHttpFunction(
|
|||
if (newsletterMessage) {
|
||||
await publishMessage(NEWSLETTER_EMAIL_RECEIVED_TOPIC, {
|
||||
...newsletterMessage,
|
||||
text,
|
||||
from,
|
||||
receivedEmailId,
|
||||
})
|
||||
return res.status(200).send('newsletter received')
|
||||
|
|
|
|||
Loading…
Reference in a new issue