Commit 366f1337 authored by samdbeckham's avatar samdbeckham

Adds a "resolved" key to resolved vulnerabilities and conditionally displays...

Adds a "resolved" key to resolved vulnerabilities and conditionally displays action button based on that key
parent e6f21f01
...@@ -203,6 +203,7 @@ export default { ...@@ -203,6 +203,7 @@ export default {
{{ __('Cancel' ) }} {{ __('Cancel' ) }}
</button> </button>
<template v-if="!modal.vulnerability.resolved">
<loading-button <loading-button
:loading="modal.isDismissingIssue" :loading="modal.isDismissingIssue"
:disabled="modal.isDismissingIssue" :disabled="modal.isDismissingIssue"
...@@ -220,13 +221,13 @@ export default { ...@@ -220,13 +221,13 @@ export default {
{{ __('View issue' ) }} {{ __('View issue' ) }}
</a> </a>
<loading-button <loading-button
v-else
:loading="modal.isCreatingNewIssue" :loading="modal.isCreatingNewIssue"
:disabled="modal.isCreatingNewIssue" :disabled="modal.isCreatingNewIssue"
:label="__('Create issue')" :label="__('Create issue')"
container-class="btn btn-success btn-inverted" container-class="btn btn-success btn-inverted"
@click="createNewIssue" @click="createNewIssue"
/> />
</template>
</div> </div>
</modal> </modal>
</template> </template>
...@@ -67,7 +67,8 @@ export default { ...@@ -67,7 +67,8 @@ export default {
const parsedBase = parseSastIssues(reports.base, reports.enrichData, state.blobPath.base); const parsedBase = parseSastIssues(reports.base, reports.enrichData, state.blobPath.base);
const newIssues = filterByKey(parsedHead, parsedBase, filterKey); const newIssues = filterByKey(parsedHead, parsedBase, filterKey);
const resolvedIssues = filterByKey(parsedBase, parsedHead, filterKey); const resolvedIssues = filterByKey(parsedBase, parsedHead, filterKey)
.map(issue => ({ ...issue, resolved: true }));
const allIssues = filterByKey(parsedHead, newIssues.concat(resolvedIssues), filterKey); const allIssues = filterByKey(parsedHead, newIssues.concat(resolvedIssues), filterKey);
state.sast.newIssues = newIssues; state.sast.newIssues = newIssues;
...@@ -222,7 +223,8 @@ export default { ...@@ -222,7 +223,8 @@ export default {
state.blobPath.base); state.blobPath.base);
const newIssues = filterByKey(parsedHead, parsedBase, filterKey); const newIssues = filterByKey(parsedHead, parsedBase, filterKey);
const resolvedIssues = filterByKey(parsedBase, parsedHead, filterKey); const resolvedIssues = filterByKey(parsedBase, parsedHead, filterKey)
.map(issue => ({ ...issue, resolved: true }));
const allIssues = filterByKey(parsedHead, newIssues.concat(resolvedIssues), filterKey); const allIssues = filterByKey(parsedHead, newIssues.concat(resolvedIssues), filterKey);
state.dependencyScanning.newIssues = newIssues; state.dependencyScanning.newIssues = newIssues;
......
...@@ -190,4 +190,29 @@ describe('Security Reports modal', () => { ...@@ -190,4 +190,29 @@ describe('Security Reports modal', () => {
expect(vm.$el.querySelector('.js-link-vulnerabilityFeedbackHelpPath').getAttribute('href')).toEqual('feedbacksHelpPath'); expect(vm.$el.querySelector('.js-link-vulnerabilityFeedbackHelpPath').getAttribute('href')).toEqual('feedbacksHelpPath');
}); });
}); });
describe('with a resolved issue', () => {
beforeEach(() => {
store.dispatch('setModalData', {
tool: 'bundler_audit',
message: 'Arbitrary file existence disclosure in Action Pack',
url: 'https://groups.google.com/forum/#!topic/rubyonrails-security/rMTQy4oRCGk',
cve: 'CVE-2014-9999',
file: 'Gemfile.lock',
solution: 'upgrade to ~> 3.2.21, ~> 4.0.11.1, ~> 4.0.12, ~> 4.1.7.1, >= 4.1.8',
title: 'Arbitrary file existence disclosure in Action Pack',
path: 'Gemfile.lock',
urlPath: 'path/Gemfile.lock',
resolved: true,
});
vm = mountComponentWithStore(Component, {
store,
});
});
it('does not render a button to dismiss issue', () => {
expect(vm.$el.querySelector('.js-dismiss-btn')).toBeFalsy();
});
});
}); });
...@@ -312,6 +312,7 @@ export const parsedSastBaseStore = [ ...@@ -312,6 +312,7 @@ export const parsedSastBaseStore = [
value: 'CVE-2016-9999', value: 'CVE-2016-9999',
link: 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9999', link: 'https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-9999',
}], }],
resolved: true,
}, },
]; ];
...@@ -498,6 +499,7 @@ export const parsedDependencyScanningBaseStore = [ ...@@ -498,6 +499,7 @@ export const parsedDependencyScanningBaseStore = [
links: [{ links: [{
url: 'https://groups.google.com/forum/#!topic/rubyonrails-security/335P1DcLG00', url: 'https://groups.google.com/forum/#!topic/rubyonrails-security/335P1DcLG00',
}], }],
resolved: true,
}, },
]; ];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment