import { expect } from 'chai' ; import { pathExists , readFile } from 'fs-extra' ; import { join } from 'path' ; import { root } from '@shared/core-utils' ; import { HttpStatusCode } from '@shared/models' ; import { makeGetRequest , PeerTubeServer } from '@shared/server-commands' ; function dateIsValid ( dateString , interval = 300000 ) { const dateToCheck = new Date ( dateString ) ; const now = new Date ( ) ; return Math . abs ( now . getTime ( ) - dateToCheck . getTime ( ) ) <= interval ; } function expectStartWith ( str , start ) { expect ( str . startsWith ( start ) , `${ str } does not start with ${ start }` ) . to . be . true ; } async function expectLogDoesNotContain ( server , str ) { const content = await server . servers . getLogContent ( ) ; expect ( content . toString ( ) ) . to . not . contain ( str ) ; } async function testImage ( url , imageName , imagePath , extension = '.jpg' ) { const res = await makeGetRequest ( { url , path : imagePath , expectedStatus : HttpStatusCode . OK_200 } ) ; const body = res . body ; const data = await readFile ( join ( root ( ) , 'server' , 'tests' , 'fixtures' , imageName + extension ) ) ; const minLength = body . length - ( ( 30 * body . length ) / 100 ) ; const maxLength = body . length + ( ( 30 * body . length ) / 100 ) ; expect ( data . length ) . to . be . above ( minLength , 'the generated image is way smaller than the recorded fixture' ) ; expect ( data . length ) . to . be . below ( maxLength , 'the generated image is way larger than the recorded fixture' ) ; } async function testFileExistsOrNot ( server , directory , filePath , exist ) { const base = server . servers . buildDirectory ( directory ) ; expect ( await pathExists ( join ( base , filePath ) ) ) . to . equal ( exist ) ; } function checkBadStartPagination ( url , path , token ? , query = { } ) { return makeGetRequest ( { url , path , token , query : { ... query , start : 'hello' } , expectedStatus : HttpStatusCode . BAD_REQUEST_400 } ) ; } async function checkBadCountPagination ( url , path , token ? , query = { } ) { await makeGetRequest ( { url , path , token , query : { ... query , count : 'hello' } , expectedStatus : HttpStatusCode . BAD_REQUEST_400 } ) ; await makeGetRequest ( { url , path , token , query : { ... query , count : 2000 } , expectedStatus : HttpStatusCode . BAD_REQUEST_400 } ) ; } function checkBadSortPagination ( url , path , token ? , query = { } ) { return makeGetRequest ( { url , path , token , query : { ... query , sort : 'hello' } , expectedStatus : HttpStatusCode . BAD_REQUEST_400 } ) ; } export { dateIsValid , testImage , expectLogDoesNotContain , testFileExistsOrNot , expectStartWith , checkBadStartPagination , checkBadCountPagination , checkBadSortPagination } ;