+ describe('Twitter card', async function () {
+
+ describe('Not whitelisted', function () {
+
+ async function accountPageTest (path: string) {
+ const res = await makeGetRequest({ url: servers[0].url, path, accept: 'text/html', statusCodeExpected: HttpStatusCode.OK_200 })
+ const text = res.text
+
+ expect(text).to.contain('<meta property="twitter:card" content="summary" />')
+ expect(text).to.contain('<meta property="twitter:site" content="@Chocobozzz" />')
+ expect(text).to.contain(`<meta property="twitter:title" content="${account.name}" />`)
+ expect(text).to.contain(`<meta property="twitter:description" content="${account.description}" />`)
+ }
+
+ async function channelPageTest (path: string) {
+ const res = await makeGetRequest({ url: servers[0].url, path, accept: 'text/html', statusCodeExpected: HttpStatusCode.OK_200 })
+ const text = res.text
+
+ expect(text).to.contain('<meta property="twitter:card" content="summary" />')
+ expect(text).to.contain('<meta property="twitter:site" content="@Chocobozzz" />')
+ expect(text).to.contain(`<meta property="twitter:title" content="${servers[0].videoChannel.displayName}" />`)
+ expect(text).to.contain(`<meta property="twitter:description" content="${channelDescription}" />`)
+ }
+
+ async function watchVideoPageTest (path: string) {
+ const res = await makeGetRequest({ url: servers[0].url, path, accept: 'text/html', statusCodeExpected: HttpStatusCode.OK_200 })
+ const text = res.text
+
+ expect(text).to.contain('<meta property="twitter:card" content="summary_large_image" />')
+ expect(text).to.contain('<meta property="twitter:site" content="@Chocobozzz" />')
+ expect(text).to.contain(`<meta property="twitter:title" content="${videoName}" />`)
+ expect(text).to.contain(`<meta property="twitter:description" content="${videoDescriptionPlainText}" />`)
+ }
+
+ async function watchPlaylistPageTest (path: string) {
+ const res = await makeGetRequest({ url: servers[0].url, path, accept: 'text/html', statusCodeExpected: HttpStatusCode.OK_200 })
+ const text = res.text
+
+ expect(text).to.contain('<meta property="twitter:card" content="summary" />')
+ expect(text).to.contain('<meta property="twitter:site" content="@Chocobozzz" />')
+ expect(text).to.contain(`<meta property="twitter:title" content="${playlistName}" />`)
+ expect(text).to.contain(`<meta property="twitter:description" content="${playlistDescription}" />`)
+ }
+
+ it('Should have valid twitter card on the watch video page', async function () {
+ await watchVideoPageTest('/videos/watch/' + servers[0].video.id)
+ await watchVideoPageTest('/videos/watch/' + servers[0].video.uuid)
+ await watchVideoPageTest('/w/' + servers[0].video.uuid)
+ await watchVideoPageTest('/w/' + servers[0].video.id)
+ })
+
+ it('Should have valid twitter card on the watch playlist page', async function () {
+ await watchPlaylistPageTest('/videos/watch/playlist/' + playlistUUID)
+ await watchPlaylistPageTest('/w/p/' + playlistUUID)
+ })
+
+ it('Should have valid twitter card on the account page', async function () {
+ await accountPageTest('/accounts/' + account.name)
+ await accountPageTest('/a/' + account.name)
+ await accountPageTest('/@' + account.name)
+ })
+
+ it('Should have valid twitter card on the channel page', async function () {
+ await channelPageTest('/video-channels/' + servers[0].videoChannel.name)
+ await channelPageTest('/c/' + servers[0].videoChannel.name)
+ await channelPageTest('/@' + servers[0].videoChannel.name)
+ })
+ })
+
+ describe('Whitelisted', function () {
+
+ before(async function () {
+ const res = await getCustomConfig(servers[0].url, servers[0].accessToken)
+ const config = res.body as CustomConfig
+ config.services.twitter = {
+ username: '@Kuja',
+ whitelisted: true
+ }
+
+ await updateCustomConfig(servers[0].url, servers[0].accessToken, config)
+ })
+
+ async function accountPageTest (path: string) {
+ const res = await makeGetRequest({ url: servers[0].url, path, accept: 'text/html', statusCodeExpected: HttpStatusCode.OK_200 })
+ const text = res.text
+
+ expect(text).to.contain('<meta property="twitter:card" content="summary" />')
+ expect(text).to.contain('<meta property="twitter:site" content="@Kuja" />')
+ }