71 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								import test from 'tape';
							 | 
						||
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  encodeScriptTags,
							 | 
						||
| 
								 | 
							
								  decodeScriptTags,
							 | 
						||
| 
								 | 
							
								  encodeFormAction,
							 | 
						||
| 
								 | 
							
								  decodeFormAction,
							 | 
						||
| 
								 | 
							
								  encodeFcc,
							 | 
						||
| 
								 | 
							
								  decodeFcc
							 | 
						||
| 
								 | 
							
								} from './encode-decode.js';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const scriptDecoded = `
							 | 
						||
| 
								 | 
							
								  <script>console.log('foo')</script>
							 | 
						||
| 
								 | 
							
								`;
							 | 
						||
| 
								 | 
							
								const scriptEncoded = `
							 | 
						||
| 
								 | 
							
								  fccssconsole.log('foo')fcces
							 | 
						||
| 
								 | 
							
								`;
							 | 
						||
| 
								 | 
							
								test('encodeScriptTags', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1);
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    encodeScriptTags(scriptDecoded),
							 | 
						||
| 
								 | 
							
								    scriptEncoded
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('decodeScriptTags', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1);
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    decodeScriptTags(scriptEncoded),
							 | 
						||
| 
								 | 
							
								    scriptDecoded
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const formDecoded = `
							 | 
						||
| 
								 | 
							
								  <form action ='path'>foo</form>
							 | 
						||
| 
								 | 
							
								`;
							 | 
						||
| 
								 | 
							
								const formEncoded = `
							 | 
						||
| 
								 | 
							
								  <form fccfaa ='path'>foo</form>
							 | 
						||
| 
								 | 
							
								`;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('encodeFormAction', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1);
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    encodeFormAction(formDecoded),
							 | 
						||
| 
								 | 
							
								    formEncoded
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('decodeFormAction', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1);
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    decodeFormAction(formEncoded),
							 | 
						||
| 
								 | 
							
								    formDecoded
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('encodeFcc', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1);
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    encodeFcc('//noprotect' + scriptDecoded + formDecoded),
							 | 
						||
| 
								 | 
							
								    '//' + scriptEncoded + formEncoded
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('decodeFcc', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1);
							 | 
						||
| 
								 | 
							
								  t.equal(
							 | 
						||
| 
								 | 
							
								    decodeFcc(scriptEncoded + formEncoded),
							 | 
						||
| 
								 | 
							
								    scriptDecoded + formDecoded
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								});
							 |