Skip to content

Commit

Permalink
Add client.ts tests for account, channel and playlist tags
Browse files Browse the repository at this point in the history
  • Loading branch information
kimsible committed Jul 26, 2020
1 parent 2587bc4 commit ae174d8
Show file tree
Hide file tree
Showing 2 changed files with 174 additions and 23 deletions.
16 changes: 8 additions & 8 deletions server/lib/client-html.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ export class ClientHtml {
}

const list = {
'numberOfItems': videoPlaylist.get('videosLength')
numberOfItems: videoPlaylist.get('videosLength')
}

const ogType = 'video'
Expand Down Expand Up @@ -284,10 +284,10 @@ export class ClientHtml {
metaTags['og:description'] = tags.description

if (tags.embed) {
metaTags['og:video:url'] = tags.embed.url,
metaTags['og:video:secure_url'] = tags.embed.url,
metaTags['og:video:type'] = 'text/html',
metaTags['og:video:width'] = EMBED_SIZE.width,
metaTags['og:video:url'] = tags.embed.url
metaTags['og:video:secure_url'] = tags.embed.url
metaTags['og:video:type'] = 'text/html'
metaTags['og:video:width'] = EMBED_SIZE.width
metaTags['og:video:height'] = EMBED_SIZE.height
}

Expand All @@ -296,9 +296,9 @@ export class ClientHtml {

private static generateStandardMetaTags (tags) {
return {
'name': tags.title,
'description': tags.description,
'image': tags.image.url
name: tags.title,
description: tags.description,
image: tags.image.url
}
}

Expand Down
181 changes: 166 additions & 15 deletions server/tests/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,15 @@ import {
serverLogin,
updateCustomConfig,
updateCustomSubConfig,
uploadVideo
uploadVideo,
createVideoPlaylist,
addVideoInPlaylist,
getAccount,
addVideoChannel
} from '../../shared/extra-utils'
import { VideoPlaylistPrivacy } from '@shared/models'
import { MVideoPlaylist, MAccount, MChannel } from '@server/types/models'


const expect = chai.expect

Expand All @@ -26,25 +33,67 @@ function checkIndexTags (html: string, title: string, description: string, css:

describe('Test a client controllers', function () {
let server: ServerInfo
let videoPlaylist: MVideoPlaylist
let account: MAccount
let videoChannel: MChannel
const name = 'my super name for server 1'
const description = 'my super description for server 1'

before(async function () {
this.timeout(120000)

server = await flushAndRunServer(1)
server.accessToken = await serverLogin(server)

const videoAttributes = {
name: 'my super name for server 1',
description: 'my super description for server 1'
}

// Video

const videoAttributes = { name, description }

await uploadVideo(server.url, server.accessToken, videoAttributes)

const res = await getVideosList(server.url)
const videos = res.body.data
const resVideosRequest = await getVideosList(server.url)

const videos = resVideosRequest.body.data.videos

expect(videos.length).to.equal(1)

server.video = videos[0]


// Playlist

const playlistAttrs = {
displayName: name,
description,
privacy: VideoPlaylistPrivacy.PUBLIC
}

const resVideoPlaylistRequest = await createVideoPlaylist({ url: server.url, token: server.accessToken, playlistAttrs })

videoPlaylist = resVideoPlaylistRequest.body.videoPlaylist

await addVideoInPlaylist({ url: server.url, token: server.accessToken, playlistId: videoPlaylist.id, elementAttrs: { videoId: server.video.id } })


// Account

const resAccountRequest = await getAccount(server.url, `${server.user.username}@${server.host}:${server.port}`)

account = resAccountRequest.body.account


// Channel

const videoChannelAttributesArg = {
name: `${server.user.username}_channel`,
displayName: name,
description
}

const resChannelRequest = await addVideoChannel(server.url, server.accessToken, videoChannelAttributesArg)

videoChannel = resChannelRequest.body.videoChannel
})

it('Should have valid Open Graph tags on the watch page with video id', async function () {
Expand All @@ -53,8 +102,10 @@ describe('Test a client controllers', function () {
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain('<meta property="og:title" content="my super name for server 1" />')
expect(res.text).to.contain('<meta property="og:description" content="my super description for server 1" />')
expect(res.text).to.contain(`<meta property="og:title" content="${name}" />`)
expect(res.text).to.contain(`<meta property="og:description" content="${description}" />`)
expect(res.text).to.contain('<meta property="og:type" content="video" />')
expect(res.text).to.contain(`<meta property="og:url" content="${server.url}/videos/watch/${server.video.uuid}" />`)
})

it('Should have valid Open Graph tags on the watch page with video uuid', async function () {
Expand All @@ -63,8 +114,46 @@ describe('Test a client controllers', function () {
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain('<meta property="og:title" content="my super name for server 1" />')
expect(res.text).to.contain('<meta property="og:description" content="my super description for server 1" />')
expect(res.text).to.contain(`<meta property="og:title" content="${name}" />`)
expect(res.text).to.contain(`<meta property="og:description" content="${description}" />`)
expect(res.text).to.contain('<meta property="og:type" content="video" />')
expect(res.text).to.contain(`<meta property="og:url" content="${server.url}/videos/watch/${server.video.uuid}" />`)
})

it('Should have valid Open Graph tags on the watch playlist page', async function () {
const res = await request(server.url)
.get('/videos/watch/playlist/' + videoPlaylist.uuid)
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain(`<meta property="og:title" content="${videoPlaylist.name}" />`)
expect(res.text).to.contain(`<meta property="og:description" content="${videoPlaylist.description}" />`)
expect(res.text).to.contain('<meta property="og:type" content="video" />')
expect(res.text).to.contain(`<meta property="og:url" content="${server.url}/videos/watch/playlist/${videoPlaylist.uuid}" />`)
})

it('Should have valid Open Graph tags on the account page', async function () {
const res = await request(server.url)
.get('/accounts/' + server.user.username)
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain(`<meta property="og:title" content="${account.getDisplayName()}" />`)
expect(res.text).to.contain(`<meta property="og:description" content="${account.description}" />`)
expect(res.text).to.contain('<meta property="og:type" content="website" />')
expect(res.text).to.contain(`<meta property="og:url" content="${server.url}/accounts/${server.user.username}" />`)
})

it('Should have valid Open Graph tags on the channel page', async function () {
const res = await request(server.url)
.get('/video-channels/' + videoChannel.name)
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain(`<meta property="og:title" content="${videoChannel.getDisplayName()}" />`)
expect(res.text).to.contain(`<meta property="og:description" content="${videoChannel.description}" />`)
expect(res.text).to.contain('<meta property="og:type" content="website" />')
expect(res.text).to.contain(`<meta property="og:url" content="${server.url}/video-channels/${videoChannel.name}" />`)
})

it('Should have valid oEmbed discovery tags', async function () {
Expand All @@ -81,14 +170,52 @@ describe('Test a client controllers', function () {
expect(res.text).to.contain(expectedLink)
})

it('Should have valid twitter card', async function () {
it('Should have valid twitter card on the whatch video page', async function () {
const res = await request(server.url)
.get('/videos/watch/' + server.video.uuid)
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain('<meta property="twitter:card" content="summary_large_image" />')
expect(res.text).to.contain('<meta property="twitter:site" content="@Chocobozzz" />')
expect(res.text).to.contain(`<meta property="twitter:title" content="${name}" />`)
expect(res.text).to.contain(`<meta property="twitter:description" content="${description}" />`)
})

it('Should have valid twitter card on the watch playlist page', async function () {
const res = await request(server.url)
.get('/videos/watch/playlist/' + videoPlaylist.uuid)
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain('<meta property="twitter:card" content="summary" />')
expect(res.text).to.contain('<meta property="twitter:site" content="@Chocobozzz" />')
expect(res.text).to.contain(`<meta property="twitter:title" content="${videoPlaylist.name}" />`)
expect(res.text).to.contain(`<meta property="twitter:description" content="${videoPlaylist.description}" />`)
})

it('Should have valid twitter card on the account page', async function () {
const res = await request(server.url)
.get('/accounts/' + account.name)
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain('<meta property="twitter:card" content="summary" />')
expect(res.text).to.contain('<meta property="twitter:site" content="@Chocobozzz" />')
expect(res.text).to.contain(`<meta property="twitter:title" content="${account.name}" />`)
expect(res.text).to.contain(`<meta property="twitter:description" content="${account.description}" />`)
})

it('Should have valid twitter card on the channel page', async function () {
const res = await request(server.url)
.get('/video-channels/' + videoChannel.name)
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain('<meta property="twitter:card" content="summary" />')
expect(res.text).to.contain('<meta property="twitter:site" content="@Chocobozzz" />')
expect(res.text).to.contain(`<meta property="twitter:title" content="${videoChannel.name}" />`)
expect(res.text).to.contain(`<meta property="twitter:description" content="${videoChannel.description}" />`)
})

it('Should have valid twitter card if Twitter is whitelisted', async function () {
Expand All @@ -100,13 +227,37 @@ describe('Test a client controllers', function () {
}
await updateCustomConfig(server.url, server.accessToken, config)

const res = await request(server.url)
const resVideoRequest = await request(server.url)
.get('/videos/watch/' + server.video.uuid)
.set('Accept', 'text/html')
.expect(200)

expect(res.text).to.contain('<meta property="twitter:card" content="player" />')
expect(res.text).to.contain('<meta property="twitter:site" content="@Kuja" />')
expect(resVideoRequest.text).to.contain('<meta property="twitter:card" content="player" />')
expect(resVideoRequest.text).to.contain('<meta property="twitter:site" content="@Kuja" />')

const resVideoPlaylistRequest = await request(server.url)
.get('/videos/watch/playlist/' + videoPlaylist.uuid)
.set('Accept', 'text/html')
.expect(200)

expect(resVideoPlaylistRequest.text).to.contain('<meta property="twitter:card" content="player" />')
expect(resVideoPlaylistRequest.text).to.contain('<meta property="twitter:site" content="@Kuja" />')

const resAccountRequest = await request(server.url)
.get('/accounts/' + account.name)
.set('Accept', 'text/html')
.expect(200)

expect(resAccountRequest.text).to.contain('<meta property="twitter:card" content="player" />')
expect(resAccountRequest.text).to.contain('<meta property="twitter:site" content="@Kuja" />')

const resChannelRequest = await request(server.url)
.get('/video-channels/' + videoChannel.name)
.set('Accept', 'text/html')
.expect(200)

expect(resChannelRequest.text).to.contain('<meta property="twitter:card" content="player" />')
expect(resChannelRequest.text).to.contain('<meta property="twitter:site" content="@Kuja" />')
})

it('Should have valid index html tags (title, description...)', async function () {
Expand Down

0 comments on commit ae174d8

Please sign in to comment.