2020-12-18 06:30:03 +01:00
'use strict' ;
2020-06-05 23:18:58 +02:00
/ *
* ACHTUNG : there is a copied & modified version of this file in
* < basedir > / t e s t s / c o n t a i n e r / s p a c s / a p i / p a d . j s
*
* TODO : unify those two files , and merge in a single one .
* /
2020-12-18 06:30:03 +01:00
/* eslint-disable max-len */
2020-10-08 07:37:17 +02:00
const common = require ( '../../common' ) ;
2020-11-23 19:21:51 +01:00
const supertest = require ( ` ${ _ _dirname } /../../../../src/node_modules/supertest ` ) ;
const settings = require ( ` ${ _ _dirname } /../../../../tests/container/loadSettings.js ` ) . loadSettings ( ) ;
const api = supertest ( ` http:// ${ settings . ip } : ${ settings . port } ` ) ;
2020-06-05 23:18:58 +02:00
2020-10-08 07:37:17 +02:00
const apiKey = common . apiKey ;
2020-11-23 19:21:51 +01:00
const apiVersion = 1 ;
2020-06-05 23:18:58 +02:00
2020-11-23 19:21:51 +01:00
const testImports = {
'malformed' : {
2020-06-05 23:18:58 +02:00
input : '<html><body><li>wtf</ul></body></html>' ,
expectedHTML : '<!DOCTYPE HTML><html><body>wtf<br><br></body></html>' ,
2020-11-23 19:21:51 +01:00
expectedText : 'wtf\n\n' ,
2020-06-05 23:18:58 +02:00
} ,
2020-11-23 19:21:51 +01:00
'nonelistiteminlist #3620' : {
2020-06-05 23:18:58 +02:00
input : '<html><body><ul>test<li>FOO</li></ul></body></html>' ,
expectedHTML : '<!DOCTYPE HTML><html><body><ul class="bullet">test<li>FOO</ul><br></body></html>' ,
2020-11-23 19:21:51 +01:00
expectedText : '\ttest\n\t* FOO\n\n' ,
2020-06-05 23:18:58 +02:00
} ,
2020-11-23 19:21:51 +01:00
'whitespaceinlist #3620' : {
2020-06-05 23:18:58 +02:00
input : '<html><body><ul> <li>FOO</li></ul></body></html>' ,
expectedHTML : '<!DOCTYPE HTML><html><body><ul class="bullet"><li>FOO</ul><br></body></html>' ,
2020-11-23 19:21:51 +01:00
expectedText : '\t* FOO\n\n' ,
2020-06-05 23:18:58 +02:00
} ,
2020-11-23 19:21:51 +01:00
'prefixcorrectlinenumber' : {
2020-06-06 15:30:13 +02:00
input : '<html><body><ol><li>should be 1</li><li>should be 2</li></ol></body></html>' ,
expectedHTML : '<!DOCTYPE HTML><html><body><ol start="1" class="number"><li>should be 1</li><li>should be 2</ol><br></body></html>' ,
2020-11-23 19:21:51 +01:00
expectedText : '\t1. should be 1\n\t2. should be 2\n\n' ,
2020-06-06 15:30:13 +02:00
} ,
2020-11-23 19:21:51 +01:00
'prefixcorrectlinenumbernested' : {
2020-06-06 15:30:13 +02:00
input : '<html><body><ol><li>should be 1</li><ol><li>foo</li></ol><li>should be 2</li></ol></body></html>' ,
expectedHTML : '<!DOCTYPE HTML><html><body><ol start="1" class="number"><li>should be 1<ol start="2" class="number"><li>foo</ol><li>should be 2</ol><br></body></html>' ,
2020-11-23 19:21:51 +01:00
expectedText : '\t1. should be 1\n\t\t1.1. foo\n\t2. should be 2\n\n' ,
2020-06-06 15:30:13 +02:00
} ,
2020-06-05 23:18:58 +02:00
/ *
2020-06-06 15:30:13 +02:00
"prefixcorrectlinenumber when introduced none list item - currently not supported see #3450" : {
2020-06-05 23:18:58 +02:00
input : '<html><body><ol><li>should be 1</li>test<li>should be 2</li></ol></body></html>' ,
expectedHTML : '<!DOCTYPE HTML><html><body><ol start="1" class="number"><li>should be 1</li>test<li>should be 2</li></ol><br></body></html>' ,
expectedText : '\t1. should be 1\n\ttest\n\t2. should be 2\n\n'
}
,
"newlinesshouldntresetlinenumber #2194" : {
input : '<html><body><ol><li>should be 1</li>test<li>should be 2</li></ol></body></html>' ,
expectedHTML : '<!DOCTYPE HTML><html><body><ol class="number"><li>should be 1</li>test<li>should be 2</li></ol><br></body></html>' ,
expectedText : '\t1. should be 1\n\ttest\n\t2. should be 2\n\n'
}
* /
2020-11-23 19:21:51 +01:00
} ;
2020-06-05 23:18:58 +02:00
2020-11-23 19:21:51 +01:00
describe ( _ _filename , function ( ) {
Object . keys ( testImports ) . forEach ( ( testName ) => {
const testPadId = makeid ( ) ;
2020-12-18 06:30:03 +01:00
const test = testImports [ testName ] ;
if ( test . disabled ) {
return xit ( ` DISABLED: ${ testName } ` , function ( done ) {
done ( ) ;
} ) ;
}
describe ( ` createPad ${ testName } ` , function ( ) {
2020-11-23 19:21:51 +01:00
it ( 'creates a new Pad' , function ( done ) {
api . get ( ` ${ endPoint ( 'createPad' ) } &padID= ${ testPadId } ` )
. expect ( ( res ) => {
if ( res . body . code !== 0 ) throw new Error ( 'Unable to create new Pad' ) ;
2020-10-10 00:19:46 +02:00
} )
. expect ( 'Content-Type' , /json/ )
2020-11-23 19:21:51 +01:00
. expect ( 200 , done ) ;
2020-10-10 00:19:46 +02:00
} ) ;
2020-11-23 19:21:51 +01:00
} ) ;
2020-10-10 00:19:46 +02:00
2020-12-18 06:30:03 +01:00
describe ( ` setHTML ${ testName } ` , function ( ) {
2020-11-23 19:21:51 +01:00
it ( 'Sets the HTML' , function ( done ) {
2020-12-18 06:30:03 +01:00
api . get ( ` ${ endPoint ( 'setHTML' ) } &padID= ${ testPadId } &html= ${ encodeURIComponent ( test . input ) } ` )
2020-11-23 19:21:51 +01:00
. expect ( ( res ) => {
if ( res . body . code !== 0 ) throw new Error ( ` Error: ${ testName } ` ) ;
2020-10-10 00:19:46 +02:00
} )
. expect ( 'Content-Type' , /json/ )
2020-11-23 19:21:51 +01:00
. expect ( 200 , done ) ;
2020-10-10 00:19:46 +02:00
} ) ;
2020-11-23 19:21:51 +01:00
} ) ;
2020-10-10 00:19:46 +02:00
2020-12-18 06:30:03 +01:00
describe ( ` getHTML ${ testName } ` , function ( ) {
2020-11-23 19:21:51 +01:00
it ( 'Gets back the HTML of a Pad' , function ( done ) {
api . get ( ` ${ endPoint ( 'getHTML' ) } &padID= ${ testPadId } ` )
. expect ( ( res ) => {
const receivedHtml = res . body . data . html ;
2020-10-10 00:19:46 +02:00
if ( receivedHtml !== test . expectedHTML ) {
throw new Error ( ` HTML received from export is not the one we were expecting.
2020-06-05 23:18:58 +02:00
Test Name :
$ { testName }
Received :
2020-12-18 06:30:03 +01:00
$ { JSON . stringify ( receivedHtml ) }
2020-06-05 23:18:58 +02:00
Expected :
2020-12-18 06:30:03 +01:00
$ { JSON . stringify ( test . expectedHTML ) }
2020-06-05 23:18:58 +02:00
Which is a different version of the originally imported one :
$ { test . input } ` );
2020-10-10 00:19:46 +02:00
}
} )
. expect ( 'Content-Type' , /json/ )
2020-11-23 19:21:51 +01:00
. expect ( 200 , done ) ;
2020-10-10 00:19:46 +02:00
} ) ;
2020-11-23 19:21:51 +01:00
} ) ;
2020-10-10 00:19:46 +02:00
2020-12-18 06:30:03 +01:00
describe ( ` getText ${ testName } ` , function ( ) {
2020-11-23 19:21:51 +01:00
it ( 'Gets back the Text of a Pad' , function ( done ) {
api . get ( ` ${ endPoint ( 'getText' ) } &padID= ${ testPadId } ` )
. expect ( ( res ) => {
const receivedText = res . body . data . text ;
2020-10-10 00:19:46 +02:00
if ( receivedText !== test . expectedText ) {
throw new Error ( ` Text received from export is not the one we were expecting.
2020-06-05 23:18:58 +02:00
Test Name :
$ { testName }
Received :
2020-12-18 06:30:03 +01:00
$ { JSON . stringify ( receivedText ) }
2020-06-05 23:18:58 +02:00
Expected :
2020-12-18 06:30:03 +01:00
$ { JSON . stringify ( test . expectedText ) }
2020-06-05 23:18:58 +02:00
Which is a different version of the originally imported one :
$ { test . input } ` );
2020-10-10 00:19:46 +02:00
}
} )
. expect ( 'Content-Type' , /json/ )
2020-11-23 19:21:51 +01:00
. expect ( 200 , done ) ;
2020-10-10 00:19:46 +02:00
} ) ;
2020-11-23 19:21:51 +01:00
} ) ;
2020-10-10 00:19:46 +02:00
} ) ;
2020-06-05 23:18:58 +02:00
} ) ;
2020-12-18 06:30:03 +01:00
function endPoint ( point , version ) {
2020-06-05 23:18:58 +02:00
version = version || apiVersion ;
2020-11-23 19:21:51 +01:00
return ` /api/ ${ version } / ${ point } ?apikey= ${ apiKey } ` ;
} ;
2020-06-05 23:18:58 +02:00
2020-11-21 19:37:57 +01:00
function makeid ( ) {
2020-11-23 19:21:51 +01:00
let text = '' ;
const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' ;
2020-06-05 23:18:58 +02:00
2020-11-23 19:21:51 +01:00
for ( let i = 0 ; i < 5 ; i ++ ) {
2020-06-05 23:18:58 +02:00
text += possible . charAt ( Math . floor ( Math . random ( ) * possible . length ) ) ;
}
return text ;
}