Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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'])
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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')