def test_new_list_none(self): ''' try to create a valid new list with action none ''' self.args.new = True self.args.delete = False self.args.list = ['a_new_list'] self.args.type = 'block' self.args.action = 'none' self.args.match = None self.args.variable = None self.args.block_length = None # create a new environment env = Environment(self.args) # create a new list Lists(self.args, env) self.assertEqual(len(env.config['lists']), 1) self.assertEqual(env.config['lists'][0]['name'], 'a_new_list') self.assertEqual(env.config['lists'][0]['type'], 'block') self.assertEqual(env.config['lists'][0]['action_none'], True) self.assertEqual(env.config['lists'][0]['action_block'], False)
def test_commit(self): ''' test local portion of commit operations (create env.to_remote) ''' self.args.new = True self.args.delete = False self.args.list = ['a_new_list'] self.args.type = 'block' self.args.action = 'block' self.args.match = 'exact' self.args.variable = None self.args.block_length = None # create a new environment, populate it with our list env = Environment(self.args) env.mock_remote = True Lists(self.args, env) # add items to the list self.args.add = True self.args.remove = False self.args.clean = False self.args.removeall = False self.args.item = ['!10.0.0.0/8'] self.args.file = None Items(self.args, env) self.args.item = ['2a04:4e42:10::313/128'] Items(self.args, env) # commit to 'remote' service State().commit(env, 'remote') # ensure SERVICEID is copied into env.to_remote self.assertEqual(env.to_remote['service_id'], 'SERVICEID') # ensure snippet contains config block and logic for our list self.assertRegex( env.to_remote['snippet']['content'], r'\n#fastlyblocklist_list {"name": "a_new_list".*"items": \[\]}\n') self.assertRegex( env.to_remote['snippet']['content'], r'\n\s*if \(var\.ip ~ fastlyblocklist_a_new_list\) {\n') # ensure our list is converted to ACL self.assertEqual(env.to_remote['acls'][0]['name'], 'fastlyblocklist_a_new_list') self.assertEqual(env.to_remote['acls'][0]['items'][0]['ip'], '10.0.0.0') self.assertEqual(env.to_remote['acls'][0]['items'][0]['negated'], '1') self.assertEqual(env.to_remote['acls'][0]['items'][0]['subnet'], 8) self.assertEqual(env.to_remote['acls'][0]['items'][1]['ip'], '2a04:4e42:10::313') self.assertEqual(env.to_remote['acls'][0]['items'][1]['negated'], '0') self.assertEqual(env.to_remote['acls'][0]['items'][1]['subnet'], 128)
def test_delete_list_bad(self): ''' try to delete a list where no args.list provided ''' self.args.new = True self.args.delete = False self.args.list = ['a_new_list'] self.args.type = 'var' self.args.action = 'block' self.args.match = 'exact' self.args.variable = 'req.whatever' self.args.block_length = None # create a new environment env = Environment(self.args) Lists(self.args, env) self.args.new = False self.args.delete = True self.args.list = [] with self.assertRaisesRegex(SystemExit, r"no list name\(s\) defined"): Lists(self.args, env)
def test_delete_list(self): ''' try to create and delete a valid list ''' self.args.new = True self.args.delete = False self.args.list = ['a_new_list'] self.args.type = 'var' self.args.action = 'block' self.args.match = 'exact' self.args.variable = 'req.whatever' self.args.block_length = None # create a new environment env = Environment(self.args) Lists(self.args, env) self.args.new = False self.args.delete = True Lists(self.args, env) self.assertFalse(env.config['lists'])
def test_new_list_var_bad(self): ''' try to create a new var list where no args.variable provided ''' self.args.new = True self.args.delete = False self.args.list = ['a_new_list'] self.args.type = 'var' self.args.action = 'block' self.args.match = 'exact' self.args.variable = None self.args.block_length = None # create a new environment env = Environment(self.args) with self.assertRaisesRegex(SystemExit, "no list variable defined"): Lists(self.args, env)
def test_new_list_temp(self): ''' try to create a valid new temp list ''' self.args.new = True self.args.delete = False self.args.list = ['a_new_list'] self.args.type = 'temp' self.args.action = 'block' self.args.match = None self.args.variable = None self.args.block_length = 600 # create a new environment env = Environment(self.args) Lists(self.args, env) self.assertEqual(len(env.config['lists']), 1) self.assertEqual(env.config['lists'][0]['type'], 'temp') self.assertEqual(env.config['lists'][0]['block_length'], 600)
def test_new_list_var(self): ''' try to create a valid new var list ''' self.args.new = True self.args.delete = False self.args.list = ['a_new_list'] self.args.type = 'var' self.args.action = 'block' self.args.match = 'exact' self.args.variable = 'req.whatever' self.args.block_length = None # create a new environment env = Environment(self.args) Lists(self.args, env) self.assertEqual(len(env.config['lists']), 1) self.assertEqual(env.config['lists'][0]['type'], 'var') self.assertEqual(env.config['lists'][0]['match'], 'exact') self.assertEqual(env.config['lists'][0]['variable'], 'req.whatever')