You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					50 lines
				
				880 B
			
		
		
			
		
	
	
					50 lines
				
				880 B
			| 
								 
											3 years ago
										 
									 | 
							
								var safe = require('../')
							 | 
						||
| 
								 | 
							
								var test = require('tape')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var good = [
							 | 
						||
| 
								 | 
							
								  /\bOakland\b/,
							 | 
						||
| 
								 | 
							
								  /\b(Oakland|San Francisco)\b/i,
							 | 
						||
| 
								 | 
							
								  /^\d+1337\d+$/i,
							 | 
						||
| 
								 | 
							
								  /^\d+(1337|404)\d+$/i,
							 | 
						||
| 
								 | 
							
								  /^\d+(1337|404)*\d+$/i,
							 | 
						||
| 
								 | 
							
								  RegExp(Array(26).join('a?') + Array(26).join('a'))
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('safe regex', function (t) {
							 | 
						||
| 
								 | 
							
								  t.plan(good.length)
							 | 
						||
| 
								 | 
							
								  good.forEach(function (re) {
							 | 
						||
| 
								 | 
							
								    t.equal(safe(re), true)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var bad = [
							 | 
						||
| 
								 | 
							
								  /^(a?){25}(a){25}$/,
							 | 
						||
| 
								 | 
							
								  RegExp(Array(27).join('a?') + Array(27).join('a')),
							 | 
						||
| 
								 | 
							
								  /(x+x+)+y/,
							 | 
						||
| 
								 | 
							
								  /foo|(x+x+)+y/,
							 | 
						||
| 
								 | 
							
								  /(a+){10}y/,
							 | 
						||
| 
								 | 
							
								  /(a+){2}y/,
							 | 
						||
| 
								 | 
							
								  /(.*){1,32000}[bc]/
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('unsafe regex', function (t) {
							 | 
						||
| 
								 | 
							
								  t.plan(bad.length)
							 | 
						||
| 
								 | 
							
								  bad.forEach(function (re) {
							 | 
						||
| 
								 | 
							
								    t.equal(safe(re), false)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var invalid = [
							 | 
						||
| 
								 | 
							
								  '*Oakland*',
							 | 
						||
| 
								 | 
							
								  'hey(yoo))',
							 | 
						||
| 
								 | 
							
								  'abcde(?>hellow)',
							 | 
						||
| 
								 | 
							
								  '[abc'
							 | 
						||
| 
								 | 
							
								]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('invalid regex', function (t) {
							 | 
						||
| 
								 | 
							
								  t.plan(invalid.length)
							 | 
						||
| 
								 | 
							
								  invalid.forEach(function (re) {
							 | 
						||
| 
								 | 
							
								    t.equal(safe(re), false)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 |