def mutate(self,
               info,
               finding_id: str,
               approval_status: str,
               uuid: str = '') -> object:
        project_name = get_finding_project_name(finding_id)
        success = False
        if uuid:
            success = update_approval_status(finding_id, uuid, approval_status)
        else:
            success = update_all_pending_vulns(finding_id, approval_status)
        if success:
            update_last_vuln_date(finding_id)
            util.invalidate_cache(finding_id)
            util.invalidate_cache(project_name)
            util.cloudwatch_log(
                info.context, 'Security: Approve vulnerability from {project}\
                    project succesfully'.format(project=project_name))
        else:
            util.cloudwatch_log(
                info.context, 'Security: Attempted to approve\
                vulnerability from {project} project'.format(
                    project=project_name))

        ret = ApproveVulnerability(success=success)
        return ret
    def mutate(_, info, finding_id: str, vulnerabilities: List) -> object:
        project_name = get_finding_project_name(finding_id)
        success = delete_tags(finding_id, cast(_List[str], vulnerabilities))
        if success:
            util.invalidate_cache(finding_id)
            util.invalidate_cache(project_name)
            util.cloudwatch_log(info.context, f'Delete tags from {finding_id}')

        return DeleteTags(success=success)
 def mutate(self, info, finding_id, justification):
     project_name = project_domain.get_finding_project_name(finding_id)
     user_info = util.get_jwt_content(info.context)
     success = finding_domain.verify_finding(
         finding_id, user_info['user_email'], justification,
         str.join(' ', [user_info['first_name'], user_info['last_name']]))
     if success:
         util.invalidate_cache(finding_id)
         util.invalidate_cache(project_name)
         util.cloudwatch_log(
             info.context, 'Security: Verified the '
             f'finding_id: {finding_id}')
     ret = VerifyFinding(success=success)
     return ret
 def mutate(self, info, **parameters):
     finding_id = parameters.get('finding_id')
     project_name = get_finding_project_name(finding_id)
     user_info = util.get_jwt_content(info.context)
     success = verify_vulnerabilities(
         finding_id, user_info['user_email'],
         str.join(' ', [
             user_info.get('first_name', ''),
             user_info.get('last_name', '')
         ]), info, parameters)
     if success:
         util.invalidate_cache(finding_id)
         util.invalidate_cache(project_name)
         util.cloudwatch_log(
             info.context, 'Security: Verified a request '
             f'in finding_id: {finding_id}')
     return VerifyRequestVuln(success=success)
 def mutate(self, info, finding_id: str, justification: str,
            vulnerabilities: List) -> object:
     project_name = get_finding_project_name(finding_id)
     user_info = util.get_jwt_content(info.context)
     success = request_verification(
         finding_id, user_info['user_email'],
         str.join(' ', [
             user_info.get('first_name', ''),
             user_info.get('last_name', '')
         ]), justification, cast(_List[str], vulnerabilities))
     if success:
         util.invalidate_cache(finding_id)
         util.invalidate_cache(project_name)
         util.cloudwatch_log(
             info.context, 'Security: Verified a request '
             f'in finding_id: {finding_id}')
     return RequestVerificationVuln(success=success)
    def mutate(self, info, **kwargs):
        """Delete vulnerability from database."""
        finding_id = kwargs.get('finding_id')
        uuid = kwargs.get('id')
        justification = kwargs.get('justification')
        project = get_finding_project_name(finding_id)
        user_email = util.get_jwt_content(info.context)['user_email']
        success = delete_vulnerability(finding_id, uuid, justification,
                                       user_email)

        if success:
            util.invalidate_cache(finding_id)
            util.invalidate_cache(project)
            util.cloudwatch_log(
                info.context, f'Security: Deleted vulnerability: {uuid} '
                f'from {project} project succesfully')
        else:
            util.cloudwatch_log(
                info.context, 'Security: Attempted to delete vulnerability: '
                f'{uuid} from {project} project')
        ret = DeleteVulnerability(success=success)
        return ret
 def test_get_finding_project_name(self):
     finding_id = '475041513'
     test_data = get_finding_project_name(finding_id)
     assert test_data == 'unittesting'