mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
Fix get-video-id expects a string bug
This commit is contained in:
parent
657a5ac1f5
commit
c5789cbf90
38
backend/src/jest/snapshots/embeds/HumanConnectionOrg.html
Normal file
38
backend/src/jest/snapshots/embeds/HumanConnectionOrg.html
Normal file
File diff suppressed because one or more lines are too long
@ -52,10 +52,12 @@ export default schema => {
|
||||
if (CONFIG.DISABLED_MIDDLEWARES) {
|
||||
const disabledMiddlewares = CONFIG.DISABLED_MIDDLEWARES.split(',')
|
||||
order = order.filter(key => {
|
||||
if(disabledMiddlewares.includes(key)) console.log(`Warning: Disabled "${disabledMiddlewares}" middleware.`)
|
||||
if (disabledMiddlewares.includes(key)) {
|
||||
/* eslint-disable-next-line no-console */
|
||||
console.log(`Warning: Disabled "${disabledMiddlewares}" middleware.`)
|
||||
}
|
||||
return !disabledMiddlewares.includes(key)
|
||||
})
|
||||
/* eslint-disable-next-line no-console */
|
||||
}
|
||||
|
||||
const appliedMiddlewares = order.map(key => middlewares[key])
|
||||
|
||||
@ -8,8 +8,16 @@ import { gql } from '../../jest/helpers'
|
||||
jest.mock('node-fetch')
|
||||
const { Response } = jest.requireActual('node-fetch')
|
||||
|
||||
afterEach(() => {
|
||||
fetch.mockRestore()
|
||||
})
|
||||
|
||||
let variables = {}
|
||||
|
||||
const HumanConnectionOrg = fs.readFileSync(
|
||||
path.join(__dirname, '../../jest/snapshots/embeds/HumanConnectionOrg.html'),
|
||||
'utf8',
|
||||
)
|
||||
const pr960 = fs.readFileSync(
|
||||
path.join(__dirname, '../../jest/snapshots/embeds/pr960.html'),
|
||||
'utf8',
|
||||
@ -71,32 +79,99 @@ describe('Query', () => {
|
||||
}
|
||||
})
|
||||
|
||||
describe('given a video link', () => {
|
||||
beforeEach(() => {
|
||||
fetch
|
||||
.mockReturnValueOnce(Promise.resolve(new Response('')))
|
||||
.mockReturnValueOnce(Promise.resolve(JSON.stringify({})))
|
||||
variables = { url: 'https://www.w3schools.com/html/mov_bbb.mp4' }
|
||||
})
|
||||
|
||||
it('shows some default data', async () => {
|
||||
const expected = expect.objectContaining({
|
||||
data: {
|
||||
embed: {
|
||||
audio: null,
|
||||
author: null,
|
||||
date: null,
|
||||
description: null,
|
||||
html: null,
|
||||
image: null,
|
||||
lang: null,
|
||||
publisher: null,
|
||||
sources: ['resource'],
|
||||
title: null,
|
||||
type: 'link',
|
||||
url: 'https://www.w3schools.com/html/mov_bbb.mp4',
|
||||
video: null,
|
||||
},
|
||||
},
|
||||
})
|
||||
await expect(embedAction(variables)).resolves.toEqual(expected)
|
||||
})
|
||||
})
|
||||
|
||||
describe('given a Facebook link', () => {
|
||||
beforeEach(() => {
|
||||
fetch
|
||||
.mockReturnValueOnce(Promise.resolve(new Response(HumanConnectionOrg)))
|
||||
.mockReturnValueOnce(Promise.resolve('invalid json'))
|
||||
variables = { url: 'https://www.facebook.com/HumanConnectionOrg/' }
|
||||
})
|
||||
|
||||
it('does not crash if embed provider returns invalid JSON', async () => {
|
||||
const expected = expect.objectContaining({
|
||||
data: {
|
||||
embed: {
|
||||
audio: null,
|
||||
author: null,
|
||||
date: expect.any(String),
|
||||
description:
|
||||
'Human Connection, Weilheim an der Teck. Gefällt 24.407 Mal. An upcoming non-profit social network focused on local and global positive change. Twitter accounts : @hc_world (EN), @hc_deutschland (GE),...',
|
||||
html: null,
|
||||
image:
|
||||
'https://scontent.ftxl3-1.fna.fbcdn.net/v/t1.0-1/c5.0.200.200a/p200x200/12108307_997373093648222_70057205881020137_n.jpg?_nc_cat=110&_nc_oc=AQnPPYQlR0dU556gOfl4xkXr7IPZdRIAUfQeXl3fpUv4DAsFN8T4PfgOjPwuq85GPKGZ5S5E5mWQ8IVV1UiRBAIZ&_nc_ht=scontent.ftxl3-1.fna&oh=90309adddaab38839782f16e7d4b7bcf&oe=5DEEDFE5',
|
||||
lang: 'de',
|
||||
publisher: 'Facebook',
|
||||
sources: ['resource'],
|
||||
title: 'Human Connection',
|
||||
type: 'link',
|
||||
url: 'https://www.facebook.com/HumanConnectionOrg/',
|
||||
video: null,
|
||||
},
|
||||
},
|
||||
})
|
||||
await expect(embedAction(variables)).resolves.toEqual(expected)
|
||||
})
|
||||
})
|
||||
|
||||
describe('given a Github link', () => {
|
||||
beforeEach(() => {
|
||||
fetch
|
||||
.mockReturnValueOnce(Promise.resolve(new Response(pr960)))
|
||||
variables = { url: "https://github.com/Human-Connection/Human-Connection/pull/960" }
|
||||
.mockReturnValueOnce(Promise.resolve(JSON.stringify({})))
|
||||
variables = { url: 'https://github.com/Human-Connection/Human-Connection/pull/960' }
|
||||
})
|
||||
|
||||
it('returns meta data even if no embed html can be retrieved', async () => {
|
||||
const expected = expect.objectContaining({
|
||||
data: {
|
||||
embed: {
|
||||
"type": "link",
|
||||
"title": "Editor embeds merge in nitro embed by mattwr18 · Pull Request #960 · Human-Connection/Human-Connection",
|
||||
"author": "Human-Connection",
|
||||
"publisher": "GitHub",
|
||||
"date": "2019-07-21T00:56:00.000Z",
|
||||
"description": "🍰 Pullrequest Issues fixes #256",
|
||||
"url": "https://github.com/Human-Connection/Human-Connection/pull/960",
|
||||
"image": "https://repository-images.githubusercontent.com/112590397/52c9a000-7e11-11e9-899d-aaa55f3a3d72",
|
||||
"audio": null,
|
||||
"video": null,
|
||||
"lang": "en",
|
||||
"sources": [
|
||||
"resource"
|
||||
],
|
||||
"html": null
|
||||
type: 'link',
|
||||
title:
|
||||
'Editor embeds merge in nitro embed by mattwr18 · Pull Request #960 · Human-Connection/Human-Connection',
|
||||
author: 'Human-Connection',
|
||||
publisher: 'GitHub',
|
||||
date: expect.any(String),
|
||||
description: '🍰 Pullrequest Issues fixes #256',
|
||||
url: 'https://github.com/Human-Connection/Human-Connection/pull/960',
|
||||
image:
|
||||
'https://repository-images.githubusercontent.com/112590397/52c9a000-7e11-11e9-899d-aaa55f3a3d72',
|
||||
audio: null,
|
||||
video: null,
|
||||
lang: 'en',
|
||||
sources: ['resource'],
|
||||
html: null,
|
||||
},
|
||||
},
|
||||
})
|
||||
@ -120,7 +195,7 @@ describe('Query', () => {
|
||||
title: 'Baby Loves Cat',
|
||||
author: 'Merkley Family',
|
||||
publisher: 'YouTube',
|
||||
date: '2015-08-16T00:00:00.000Z',
|
||||
date: expect.any(String),
|
||||
description:
|
||||
'She’s incapable of controlling her limbs when her kitty is around. The obsession grows every day. Ps. That’s a sleep sack she’s in. Not a starfish outfit. Al...',
|
||||
url: 'https://www.youtube.com/watch?v=qkdXAtO40Fo',
|
||||
|
||||
@ -8,6 +8,8 @@ import isEmpty from 'lodash/isEmpty'
|
||||
import isArray from 'lodash/isArray'
|
||||
import mergeWith from 'lodash/mergeWith'
|
||||
|
||||
const error = require('debug')('embed:error')
|
||||
|
||||
const metascraper = Metascraper([
|
||||
require('metascraper-author')(),
|
||||
require('metascraper-date')(),
|
||||
@ -45,10 +47,16 @@ const fetchEmbed = async url => {
|
||||
endpoints: [endpoint],
|
||||
} = provider
|
||||
const endpointUrl = new URL(endpoint.url)
|
||||
endpointUrl.searchParams.append('url', url)
|
||||
endpointUrl.searchParams.append('url', url.href)
|
||||
endpointUrl.searchParams.append('format', 'json')
|
||||
const response = await fetch(endpointUrl)
|
||||
const json = await response.json()
|
||||
let json
|
||||
try {
|
||||
const response = await fetch(endpointUrl)
|
||||
json = await response.json()
|
||||
} catch (err) {
|
||||
error(`Error fetching embed data: ${err.message}`)
|
||||
return {}
|
||||
}
|
||||
|
||||
return {
|
||||
type: json.type,
|
||||
@ -62,10 +70,10 @@ const fetchEmbed = async url => {
|
||||
const fetchResource = async url => {
|
||||
const response = await fetch(url)
|
||||
const html = await response.text()
|
||||
const resource = await metascraper({ html, url })
|
||||
const resource = await metascraper({ html, url: url.href })
|
||||
return {
|
||||
sources: ['resource'],
|
||||
...resource
|
||||
...resource,
|
||||
}
|
||||
}
|
||||
|
||||
@ -104,6 +112,6 @@ export default async function scrape(url) {
|
||||
|
||||
return {
|
||||
...defaults,
|
||||
...output
|
||||
...output,
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user