def load_config(self, raw_config): if 'groups' not in raw_config: raise InvalidConfig("'groups' not defined in config") if 'rules' not in raw_config: raise InvalidConfig("'rules' not defined in config") for raw_group in raw_config['groups']: group = parsers.parse_group(raw_group) self.groups_by_name[group.name] = group for member in group.members: self.group_names_by_member[member].append(group.name) for raw_rule in raw_config['rules']: rule = parsers.parse_rule(raw_rule) if rule.group not in self.groups_by_name: raise InvalidConfig( "Rule defined for group '{0}', but no such group is defined" .format(rule.group)) self.rules.append(rule) log.info("Successfully loaded %d groups: %s", len(self.groups_by_name), ", ".join(self.groups_by_name.keys())) log.info("Successfully loaded %d rules", len(self.rules)) self.has_been_initialized = True
def test_normal_group_parses_ok(group_data): group = parsers.parse_group(group_data) assert group.name == group_data['name'] assert group.members == group_data['members']
def test_missing_members_in_group_errors(group_data): del group_data['members'] with pytest.raises(exceptions.InvalidConfig): parsers.parse_group(group_data)