foreman_openscap 4.3.2 → 5.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/api/v2/compliance/arf_reports_controller.rb +0 -6
- data/app/controllers/api/v2/compliance/oval_policies_controller.rb +1 -1
- data/app/graphql/mutations/oval_contents/delete.rb +9 -0
- data/app/graphql/mutations/oval_policies/create.rb +33 -0
- data/app/graphql/mutations/oval_policies/delete.rb +9 -0
- data/app/graphql/mutations/oval_policies/update.rb +15 -0
- data/app/graphql/types/oval_check.rb +11 -0
- data/app/graphql/types/oval_content.rb +2 -0
- data/app/graphql/types/oval_policy.rb +3 -0
- data/app/helpers/arf_report_dashboard_helper.rb +2 -4
- data/app/helpers/compliance_hosts_helper.rb +1 -1
- data/app/helpers/policies_helper.rb +2 -2
- data/app/models/concerns/foreman_openscap/host_extensions.rb +0 -6
- data/app/models/concerns/foreman_openscap/oval_facet_hostgroup_extensions.rb +16 -0
- data/app/models/concerns/foreman_openscap/policy_common.rb +1 -1
- data/app/models/foreman_openscap/oval_content.rb +2 -0
- data/app/services/foreman_openscap/client_config/base.rb +1 -0
- data/app/services/foreman_openscap/client_config/puppet.rb +6 -2
- data/app/services/foreman_openscap/oval/configure.rb +16 -13
- data/app/services/foreman_openscap/oval/setup.rb +5 -5
- data/app/services/foreman_openscap/oval/setup_check.rb +5 -2
- data/app/views/api/v2/compliance/oval_contents/destroy.json.rabl +3 -0
- data/app/views/arf_reports/_metrics.html.erb +4 -4
- data/app/views/compliance_hosts/show.html.erb +4 -6
- data/app/views/dashboard/_compliance_reports_breakdown_widget.html.erb +4 -3
- data/app/views/policy_dashboard/_policy_chart_widget.html.erb +3 -2
- data/db/migrate/20200117135424_migrate_port_overrides_to_int.rb +2 -1
- data/db/migrate/20201202110213_update_puppet_port_param_type.rb +2 -1
- data/db/migrate/20210819143316_drop_unused_tables.rb +6 -0
- data/lib/foreman_openscap/engine.rb +6 -7
- data/lib/foreman_openscap/version.rb +1 -1
- data/package.json +3 -6
- data/test/functional/api/v2/compliance/oval_reports_controller_test.rb +1 -1
- data/test/functional/api/v2/compliance/policies_controller_test.rb +2 -0
- data/test/graphql/mutations/oval_policies/delete_mutation_test.rb +63 -0
- data/test/graphql/queries/oval_content_query_test.rb +29 -0
- data/test/helpers/arf_report_dashboard_helper_test.rb +9 -10
- data/test/helpers/policy_dashboard_helper_test.rb +1 -1
- data/test/test_plugin_helper.rb +9 -4
- data/test/unit/policy_test.rb +1 -1
- data/test/unit/services/config_name_service_test.rb +1 -0
- data/test/unit/services/hostgroup_overrider_test.rb +2 -1
- data/test/unit/services/lookup_key_overrider_test.rb +4 -1
- data/test/unit/services/oval/setup_check_test.rb +37 -0
- data/webpack/components/ConfirmModal.js +63 -0
- data/webpack/components/ConfirmModal.scss +3 -0
- data/webpack/components/EditableInput.js +163 -0
- data/webpack/components/EditableInput.scss +3 -0
- data/webpack/components/EmptyState.js +12 -3
- data/webpack/components/IndexLayout.js +11 -4
- data/webpack/components/IndexTable/index.js +21 -16
- data/webpack/components/LinkButton.js +38 -0
- data/webpack/components/withDeleteModal.js +51 -0
- data/webpack/components/withLoading.js +44 -5
- data/webpack/graphql/mutations/createOvalPolicy.gql +22 -0
- data/webpack/graphql/mutations/deleteOvalContent.gql +9 -0
- data/webpack/graphql/mutations/deleteOvalPolicy.gql +9 -0
- data/webpack/graphql/mutations/updateOvalPolicy.gql +14 -0
- data/webpack/graphql/queries/currentUserAttributes.gql +11 -0
- data/webpack/graphql/queries/cves.gql +5 -0
- data/webpack/graphql/queries/hostgroups.gql +14 -0
- data/webpack/graphql/queries/ovalContent.gql +8 -0
- data/webpack/graphql/queries/ovalContents.gql +8 -0
- data/webpack/graphql/queries/ovalPolicies.gql +8 -0
- data/webpack/graphql/queries/ovalPolicy.gql +8 -0
- data/webpack/helpers/formFieldsHelper.js +113 -0
- data/webpack/helpers/globalIdHelper.js +4 -2
- data/webpack/helpers/mutationHelper.js +68 -0
- data/webpack/helpers/pathsHelper.js +10 -3
- data/webpack/helpers/permissionsHelper.js +42 -0
- data/webpack/helpers/toastHelper.js +3 -0
- data/webpack/helpers/toastsHelper.js +3 -0
- data/webpack/routes/OvalContents/OvalContentsIndex/OvalContentsIndex.js +26 -0
- data/webpack/routes/OvalContents/OvalContentsIndex/OvalContentsTable.js +50 -5
- data/webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsDestroy.fixtures.js +105 -0
- data/webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsDestroy.test.js +124 -0
- data/webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsIndex.fixtures.js +98 -77
- data/webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsIndex.test.js +53 -6
- data/webpack/routes/OvalContents/OvalContentsIndex/index.js +7 -1
- data/webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.js +138 -0
- data/webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.scss +3 -0
- data/webpack/routes/OvalContents/OvalContentsNew/OvalContentsNewHelper.js +73 -0
- data/webpack/routes/OvalContents/OvalContentsNew/__tests__/OvalContentsNew.test.js +104 -0
- data/webpack/routes/OvalContents/OvalContentsNew/index.js +13 -0
- data/webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.js +62 -0
- data/webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.test.js +45 -0
- data/{locale/de/foreman_openscap.edit.po → webpack/routes/OvalContents/OvalContentsShow/OvalContentsShowHelper.js} +0 -0
- data/webpack/routes/OvalContents/OvalContentsShow/index.js +35 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesIndex.js +18 -2
- data/webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesTable.js +34 -4
- data/webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesDestroy.fixtures.js +101 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesDestroy.test.js +117 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesIndex.fixtures.js +71 -21
- data/webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesIndex.test.js +34 -2
- data/webpack/routes/OvalPolicies/OvalPoliciesIndex/index.js +7 -1
- data/webpack/routes/OvalPolicies/OvalPoliciesNew/HostgroupSelect.js +135 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyForm.js +119 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyFormHelpers.js +107 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesNew/OvalPoliciesNew.js +32 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesNew/__tests__/OvalPoliciesNew.fixtures.js +147 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesNew/__tests__/OvalPoliciesNew.test.js +172 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesNew/index.js +11 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/CvesTab.js +1 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/CvesTable.js +2 -2
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/DetailsTab.js +87 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTab.js +49 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTable.js +38 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShow.js +15 -11
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShowHelper.js +80 -2
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesEdit.fixtures.js +48 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesEdit.test.js +202 -0
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.fixtures.js +50 -4
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.test.js +64 -4
- data/webpack/routes/OvalPolicies/OvalPoliciesShow/index.js +4 -0
- data/webpack/routes/routes.js +21 -0
- data/webpack/testHelper.js +64 -2
- metadata +80 -37
- data/locale/en_GB/foreman_openscap.edit.po +0 -0
- data/locale/es/foreman_openscap.edit.po +0 -0
- data/locale/fr/foreman_openscap.edit.po +0 -0
- data/locale/gl/foreman_openscap.edit.po +0 -0
- data/locale/it/foreman_openscap.edit.po +0 -0
- data/locale/ja/foreman_openscap.edit.po +0 -0
- data/locale/ko/foreman_openscap.edit.po +0 -0
- data/locale/pt_BR/foreman_openscap.edit.po +0 -0
- data/locale/ru/foreman_openscap.edit.po +0 -0
- data/locale/sv_SE/foreman_openscap.edit.po +0 -0
- data/locale/zh_CN/foreman_openscap.edit.po +0 -0
- data/locale/zh_TW/foreman_openscap.edit.po +0 -0
@@ -12,17 +12,27 @@ import {
|
|
12
12
|
resolvePath,
|
13
13
|
} from '../../../../helpers/pathsHelper';
|
14
14
|
|
15
|
-
import {
|
15
|
+
import {
|
16
|
+
withRedux,
|
17
|
+
withMockedProvider,
|
18
|
+
tick,
|
19
|
+
withRouter,
|
20
|
+
} from '../../../../testHelper';
|
16
21
|
import {
|
17
22
|
policyDetailMock,
|
18
23
|
historyMock,
|
19
24
|
historyWithSearch,
|
20
25
|
pushMock,
|
21
26
|
policyCvesMock,
|
27
|
+
policyHostgroupsMock,
|
28
|
+
policyHostgroupsDeniedMock,
|
22
29
|
ovalPolicyId,
|
30
|
+
policyUnauthorizedMock,
|
23
31
|
} from './OvalPoliciesShow.fixtures';
|
24
32
|
|
25
|
-
const TestComponent =
|
33
|
+
const TestComponent = withRedux(
|
34
|
+
withRouter(withMockedProvider(OvalPoliciesShow))
|
35
|
+
);
|
26
36
|
|
27
37
|
describe('OvalPoliciesShow', () => {
|
28
38
|
it('should load details by default and handle tab change', async () => {
|
@@ -36,7 +46,7 @@ describe('OvalPoliciesShow', () => {
|
|
36
46
|
expect(screen.getByText('Loading')).toBeInTheDocument();
|
37
47
|
await waitFor(tick);
|
38
48
|
expect(screen.queryByText('Loading')).not.toBeInTheDocument();
|
39
|
-
expect(screen.
|
49
|
+
expect(screen.getAllByText('Third policy').pop()).toBeInTheDocument();
|
40
50
|
expect(screen.getByText('Weekly, on tuesday')).toBeInTheDocument();
|
41
51
|
expect(screen.getByText('A very strict policy')).toBeInTheDocument();
|
42
52
|
const activeTabHeader = container.querySelector(
|
@@ -67,6 +77,22 @@ describe('OvalPoliciesShow', () => {
|
|
67
77
|
expect(screen.queryByText('Loading')).not.toBeInTheDocument();
|
68
78
|
expect(screen.getByText('Weekly, on tuesday')).toBeInTheDocument();
|
69
79
|
});
|
80
|
+
it('should not load the page when user does not have permissions', async () => {
|
81
|
+
render(
|
82
|
+
<TestComponent
|
83
|
+
history={historyMock}
|
84
|
+
match={{ params: { id: ovalPolicyId }, path: ovalPoliciesShowPath }}
|
85
|
+
mocks={policyUnauthorizedMock}
|
86
|
+
/>
|
87
|
+
);
|
88
|
+
await waitFor(tick);
|
89
|
+
expect(screen.queryByText('Loading')).not.toBeInTheDocument();
|
90
|
+
expect(
|
91
|
+
screen.getByText(
|
92
|
+
'You are not authorized to view the page. Request the following permissions from administrator: view_oval_policies.'
|
93
|
+
)
|
94
|
+
).toBeInTheDocument();
|
95
|
+
});
|
70
96
|
it('should load CVEs tab when specified in URL', async () => {
|
71
97
|
const mocks = policyDetailMock.concat(policyCvesMock);
|
72
98
|
render(
|
@@ -88,7 +114,7 @@ describe('OvalPoliciesShow', () => {
|
|
88
114
|
it('should have button for scanning all hostgroups', async () => {
|
89
115
|
const btnText = 'Scan All Hostgroups';
|
90
116
|
|
91
|
-
const WithProvider = withMockedProvider(OvalPoliciesShow);
|
117
|
+
const WithProvider = withRedux(withMockedProvider(OvalPoliciesShow));
|
92
118
|
const history = createMemoryHistory();
|
93
119
|
history.push = jest.fn();
|
94
120
|
|
@@ -109,4 +135,38 @@ describe('OvalPoliciesShow', () => {
|
|
109
135
|
'/job_invocations/new?feature=foreman_openscap_run_oval_scans&host_ids=hostgroup_id+%5E+%284+10+12+11%29&inputs%5Boval_policies%5D=3'
|
110
136
|
);
|
111
137
|
});
|
138
|
+
it('should load hostgroups tab when specified in URL', async () => {
|
139
|
+
const mocks = policyDetailMock.concat(policyHostgroupsMock);
|
140
|
+
render(
|
141
|
+
<TestComponent
|
142
|
+
history={historyWithSearch}
|
143
|
+
match={{
|
144
|
+
params: { id: ovalPolicyId, tab: 'hostgroups' },
|
145
|
+
path: ovalPoliciesShowPath,
|
146
|
+
}}
|
147
|
+
mocks={mocks}
|
148
|
+
/>
|
149
|
+
);
|
150
|
+
expect(screen.getByText('Loading')).toBeInTheDocument();
|
151
|
+
await waitFor(tick);
|
152
|
+
await waitFor(tick);
|
153
|
+
expect(screen.queryByText('Loading')).not.toBeInTheDocument();
|
154
|
+
expect(screen.getByText('first hostgroup')).toBeInTheDocument();
|
155
|
+
});
|
156
|
+
it('should not show hostgroups for a user without permissions', async () => {
|
157
|
+
const mocks = policyDetailMock.concat(policyHostgroupsDeniedMock);
|
158
|
+
render(
|
159
|
+
<TestComponent
|
160
|
+
history={historyWithSearch}
|
161
|
+
match={{
|
162
|
+
params: { id: ovalPolicyId, tab: 'hostgroups' },
|
163
|
+
path: ovalPoliciesShowPath,
|
164
|
+
}}
|
165
|
+
mocks={mocks}
|
166
|
+
/>
|
167
|
+
);
|
168
|
+
await waitFor(tick);
|
169
|
+
await waitFor(tick);
|
170
|
+
expect(screen.getByText('Permission denied')).toBeInTheDocument();
|
171
|
+
});
|
112
172
|
});
|
@@ -1,8 +1,10 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import PropTypes from 'prop-types';
|
3
3
|
import { useQuery } from '@apollo/client';
|
4
|
+
import { useDispatch } from 'react-redux';
|
4
5
|
|
5
6
|
import { translate as __ } from 'foremanReact/common/I18n';
|
7
|
+
import { showToast } from '../../../helpers/toastHelper';
|
6
8
|
|
7
9
|
import OvalPoliciesShow from './OvalPoliciesShow';
|
8
10
|
import { encodeId } from '../../../helpers/globalIdHelper';
|
@@ -24,6 +26,8 @@ const WrappedOvalPoliciesShow = props => {
|
|
24
26
|
renameData={renameData}
|
25
27
|
resultPath="ovalPolicy"
|
26
28
|
emptyStateTitle={__('No OVAL Policy found')}
|
29
|
+
permissions={['view_oval_policies']}
|
30
|
+
showToast={showToast(useDispatch())}
|
27
31
|
/>
|
28
32
|
);
|
29
33
|
};
|
data/webpack/routes/routes.js
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import OvalContentsIndex from './OvalContents/OvalContentsIndex';
|
3
|
+
import OvalContentsShow from './OvalContents/OvalContentsShow';
|
4
|
+
import OvalContentsNew from './OvalContents/OvalContentsNew';
|
3
5
|
import OvalPoliciesIndex from './OvalPolicies/OvalPoliciesIndex';
|
6
|
+
import OvalPoliciesNew from './OvalPolicies/OvalPoliciesNew';
|
4
7
|
import OvalPoliciesShow from './OvalPolicies/OvalPoliciesShow';
|
5
8
|
|
6
9
|
import {
|
7
10
|
ovalContentsPath,
|
11
|
+
ovalContentsShowPath,
|
12
|
+
ovalContentsNewPath,
|
8
13
|
ovalPoliciesPath,
|
9
14
|
ovalPoliciesShowPath,
|
15
|
+
ovalPoliciesNewPath,
|
10
16
|
} from '../helpers/pathsHelper';
|
11
17
|
|
12
18
|
export default [
|
@@ -15,11 +21,26 @@ export default [
|
|
15
21
|
render: props => <OvalContentsIndex {...props} />,
|
16
22
|
exact: true,
|
17
23
|
},
|
24
|
+
{
|
25
|
+
path: ovalContentsNewPath,
|
26
|
+
render: props => <OvalContentsNew {...props} />,
|
27
|
+
exact: true,
|
28
|
+
},
|
29
|
+
{
|
30
|
+
path: ovalContentsShowPath,
|
31
|
+
render: props => <OvalContentsShow {...props} />,
|
32
|
+
exact: true,
|
33
|
+
},
|
18
34
|
{
|
19
35
|
path: ovalPoliciesPath,
|
20
36
|
render: props => <OvalPoliciesIndex {...props} />,
|
21
37
|
exact: true,
|
22
38
|
},
|
39
|
+
{
|
40
|
+
path: ovalPoliciesNewPath,
|
41
|
+
render: props => <OvalPoliciesNew {...props} />,
|
42
|
+
exact: true,
|
43
|
+
},
|
23
44
|
{
|
24
45
|
path: ovalPoliciesShowPath,
|
25
46
|
render: props => <OvalPoliciesShow {...props} />,
|
data/webpack/testHelper.js
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
import React from 'react';
|
2
|
+
import { Provider } from 'react-redux';
|
3
|
+
import store from 'foremanReact/redux';
|
2
4
|
import { MockedProvider } from '@apollo/react-testing';
|
3
5
|
import { MemoryRouter } from 'react-router-dom';
|
4
6
|
import { getForemanContext } from 'foremanReact/Root/Context/ForemanContext';
|
7
|
+
import { waitFor } from '@testing-library/react';
|
8
|
+
|
9
|
+
export const withRedux = Component => props => (
|
10
|
+
<Provider store={store}>
|
11
|
+
<Component {...props} />
|
12
|
+
</Provider>
|
13
|
+
);
|
5
14
|
|
6
15
|
export const withRouter = Component => props => (
|
7
16
|
<MemoryRouter>
|
@@ -24,7 +33,7 @@ export const withMockedProvider = Component => props => {
|
|
24
33
|
|
25
34
|
return (
|
26
35
|
<ForemanContext.Provider value={ctx}>
|
27
|
-
<MockedProvider mocks={mocks}
|
36
|
+
<MockedProvider mocks={mocks}>
|
28
37
|
<Component {...rest} />
|
29
38
|
</MockedProvider>
|
30
39
|
</ForemanContext.Provider>
|
@@ -34,16 +43,65 @@ export const withMockedProvider = Component => props => {
|
|
34
43
|
// use to resolve async mock requests for apollo MockedProvider
|
35
44
|
export const tick = () => new Promise(resolve => setTimeout(resolve, 0));
|
36
45
|
|
46
|
+
export const wait = async (tickCount = 1) => {
|
47
|
+
for (let i = 1; i < tickCount; i++) {
|
48
|
+
// eslint-disable-next-line no-await-in-loop
|
49
|
+
await waitFor(tick);
|
50
|
+
}
|
51
|
+
return waitFor(tick);
|
52
|
+
};
|
53
|
+
|
37
54
|
export const historyMock = {
|
38
55
|
location: {
|
39
56
|
search: '',
|
40
57
|
},
|
41
58
|
};
|
42
59
|
|
60
|
+
export const admin = {
|
61
|
+
__typename: 'User',
|
62
|
+
id: 'MDE6VXNlci00',
|
63
|
+
login: 'admin',
|
64
|
+
admin: true,
|
65
|
+
permissions: {
|
66
|
+
nodes: [],
|
67
|
+
},
|
68
|
+
};
|
69
|
+
|
70
|
+
export const userFactory = (login, permissions = []) => ({
|
71
|
+
__typename: 'User',
|
72
|
+
id: 'MDE6VXNlci01',
|
73
|
+
login,
|
74
|
+
admin: false,
|
75
|
+
permissions: {
|
76
|
+
nodes: permissions,
|
77
|
+
},
|
78
|
+
});
|
79
|
+
|
80
|
+
export const intruder = userFactory('intruder', [
|
81
|
+
{
|
82
|
+
__typename: 'Permission',
|
83
|
+
id: 'MDE6UGVybWlzc2lvbi0x',
|
84
|
+
name: 'view_architectures',
|
85
|
+
},
|
86
|
+
]);
|
87
|
+
|
88
|
+
export const viewer = userFactory('viewer', [
|
89
|
+
{
|
90
|
+
__typename: 'Permission',
|
91
|
+
id: 'MDE6UGVybWlzc2lvbi0yOTY=',
|
92
|
+
name: 'view_oval_contents',
|
93
|
+
},
|
94
|
+
{
|
95
|
+
__typename: 'Permission',
|
96
|
+
id: 'MDE6UGVybWlzc2lvbi0yNzU=',
|
97
|
+
name: 'view_oval_policies',
|
98
|
+
},
|
99
|
+
]);
|
100
|
+
|
43
101
|
export const mockFactory = (resultName, query) => (
|
44
102
|
variables,
|
45
103
|
modelResults,
|
46
|
-
errors = []
|
104
|
+
{ errors = [], currentUser = null } = {}
|
47
105
|
) => {
|
48
106
|
const mock = {
|
49
107
|
request: {
|
@@ -60,5 +118,9 @@ export const mockFactory = (resultName, query) => (
|
|
60
118
|
if (errors.length !== 0) {
|
61
119
|
mock.result.errors = errors;
|
62
120
|
}
|
121
|
+
|
122
|
+
if (currentUser) {
|
123
|
+
mock.result.data.currentUser = currentUser;
|
124
|
+
}
|
63
125
|
return [mock];
|
64
126
|
};
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreman_openscap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- slukasik@redhat.com
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -72,7 +72,12 @@ files:
|
|
72
72
|
- app/controllers/policy_dashboard_controller.rb
|
73
73
|
- app/controllers/scap_contents_controller.rb
|
74
74
|
- app/controllers/tailoring_files_controller.rb
|
75
|
+
- app/graphql/mutations/oval_contents/delete.rb
|
76
|
+
- app/graphql/mutations/oval_policies/create.rb
|
77
|
+
- app/graphql/mutations/oval_policies/delete.rb
|
78
|
+
- app/graphql/mutations/oval_policies/update.rb
|
75
79
|
- app/graphql/types/cve.rb
|
80
|
+
- app/graphql/types/oval_check.rb
|
76
81
|
- app/graphql/types/oval_content.rb
|
77
82
|
- app/graphql/types/oval_policy.rb
|
78
83
|
- app/helpers/arf_report_dashboard_helper.rb
|
@@ -152,6 +157,7 @@ files:
|
|
152
157
|
- app/views/api/v2/compliance/common/_org.json.rabl
|
153
158
|
- app/views/api/v2/compliance/oval_contents/base.json.rabl
|
154
159
|
- app/views/api/v2/compliance/oval_contents/create.json.rabl
|
160
|
+
- app/views/api/v2/compliance/oval_contents/destroy.json.rabl
|
155
161
|
- app/views/api/v2/compliance/oval_contents/index.json.rabl
|
156
162
|
- app/views/api/v2/compliance/oval_contents/show.json.rabl
|
157
163
|
- app/views/api/v2/compliance/oval_contents/sync.json.rabl
|
@@ -300,6 +306,7 @@ files:
|
|
300
306
|
- db/migrate/20201217130800_add_has_errata_to_cve.rb
|
301
307
|
- db/migrate/20201217161511_add_url_to_oval_content.rb
|
302
308
|
- db/migrate/20210409095625_add_oval_policy_reference_to_cve.rb
|
309
|
+
- db/migrate/20210819143316_drop_unused_tables.rb
|
303
310
|
- db/seeds.d/75-job_templates.rb
|
304
311
|
- db/seeds.d/openscap_feature.rb
|
305
312
|
- db/seeds.d/openscap_policy_notification.rb
|
@@ -314,45 +321,32 @@ files:
|
|
314
321
|
- locale/Makefile
|
315
322
|
- locale/action_names.rb
|
316
323
|
- locale/de/LC_MESSAGES/foreman_openscap.mo
|
317
|
-
- locale/de/foreman_openscap.edit.po
|
318
324
|
- locale/de/foreman_openscap.po
|
319
325
|
- locale/en_GB/LC_MESSAGES/foreman_openscap.mo
|
320
|
-
- locale/en_GB/foreman_openscap.edit.po
|
321
326
|
- locale/en_GB/foreman_openscap.po
|
322
327
|
- locale/es/LC_MESSAGES/foreman_openscap.mo
|
323
|
-
- locale/es/foreman_openscap.edit.po
|
324
328
|
- locale/es/foreman_openscap.po
|
325
329
|
- locale/foreman_openscap.pot
|
326
330
|
- locale/fr/LC_MESSAGES/foreman_openscap.mo
|
327
|
-
- locale/fr/foreman_openscap.edit.po
|
328
331
|
- locale/fr/foreman_openscap.po
|
329
332
|
- locale/gl/LC_MESSAGES/foreman_openscap.mo
|
330
|
-
- locale/gl/foreman_openscap.edit.po
|
331
333
|
- locale/gl/foreman_openscap.po
|
332
334
|
- locale/it/LC_MESSAGES/foreman_openscap.mo
|
333
|
-
- locale/it/foreman_openscap.edit.po
|
334
335
|
- locale/it/foreman_openscap.po
|
335
336
|
- locale/ja/LC_MESSAGES/foreman_openscap.mo
|
336
|
-
- locale/ja/foreman_openscap.edit.po
|
337
337
|
- locale/ja/foreman_openscap.po
|
338
338
|
- locale/ko/LC_MESSAGES/foreman_openscap.mo
|
339
|
-
- locale/ko/foreman_openscap.edit.po
|
340
339
|
- locale/ko/foreman_openscap.po
|
341
340
|
- locale/pt_BR/LC_MESSAGES/foreman_openscap.mo
|
342
|
-
- locale/pt_BR/foreman_openscap.edit.po
|
343
341
|
- locale/pt_BR/foreman_openscap.po
|
344
342
|
- locale/ru/LC_MESSAGES/foreman_openscap.mo
|
345
|
-
- locale/ru/foreman_openscap.edit.po
|
346
343
|
- locale/ru/foreman_openscap.po
|
347
344
|
- locale/sv_SE/LC_MESSAGES/foreman_openscap.mo
|
348
|
-
- locale/sv_SE/foreman_openscap.edit.po
|
349
345
|
- locale/sv_SE/foreman_openscap.po
|
350
346
|
- locale/zanata.xml
|
351
347
|
- locale/zh_CN/LC_MESSAGES/foreman_openscap.mo
|
352
|
-
- locale/zh_CN/foreman_openscap.edit.po
|
353
348
|
- locale/zh_CN/foreman_openscap.po
|
354
349
|
- locale/zh_TW/LC_MESSAGES/foreman_openscap.mo
|
355
|
-
- locale/zh_TW/foreman_openscap.edit.po
|
356
350
|
- locale/zh_TW/foreman_openscap.po
|
357
351
|
- package.json
|
358
352
|
- test/factories/arf_report_factory.rb
|
@@ -386,6 +380,8 @@ files:
|
|
386
380
|
- test/functional/arf_reports_controller_test.rb
|
387
381
|
- test/functional/openscap_proxies_controller_test.rb
|
388
382
|
- test/functional/tailoring_files_controller_test.rb
|
383
|
+
- test/graphql/mutations/oval_policies/delete_mutation_test.rb
|
384
|
+
- test/graphql/queries/oval_content_query_test.rb
|
389
385
|
- test/graphql/queries/oval_contents_query_test.rb
|
390
386
|
- test/graphql/queries/oval_policies_query_test.rb
|
391
387
|
- test/helpers/arf_report_dashboard_helper_test.rb
|
@@ -409,15 +405,21 @@ files:
|
|
409
405
|
- test/unit/services/hostgroup_overrider_test.rb
|
410
406
|
- test/unit/services/lookup_key_overrider_test.rb
|
411
407
|
- test/unit/services/oval/cves_test.rb
|
408
|
+
- test/unit/services/oval/setup_check_test.rb
|
412
409
|
- test/unit/services/oval/setup_test.rb
|
413
410
|
- test/unit/services/report_dashboard/data_test.rb
|
414
411
|
- test/unit/services/tailoring_files_proxy_check_test.rb
|
415
412
|
- test/unit/tailoring_file_test.rb
|
413
|
+
- webpack/components/ConfirmModal.js
|
414
|
+
- webpack/components/ConfirmModal.scss
|
415
|
+
- webpack/components/EditableInput.js
|
416
|
+
- webpack/components/EditableInput.scss
|
416
417
|
- webpack/components/EmptyState.js
|
417
418
|
- webpack/components/IndexLayout.js
|
418
419
|
- webpack/components/IndexLayout.scss
|
419
420
|
- webpack/components/IndexTable/IndexTableHelper.js
|
420
421
|
- webpack/components/IndexTable/index.js
|
422
|
+
- webpack/components/LinkButton.js
|
421
423
|
- webpack/components/RuleSeverity/RuleSeverity.scss
|
422
424
|
- webpack/components/RuleSeverity/RuleSeverity.test.js
|
423
425
|
- webpack/components/RuleSeverity/__snapshots__/RuleSeverity.test.js.snap
|
@@ -427,32 +429,70 @@ files:
|
|
427
429
|
- webpack/components/RuleSeverity/i_severity-med.svg
|
428
430
|
- webpack/components/RuleSeverity/i_unknown.svg
|
429
431
|
- webpack/components/RuleSeverity/index.js
|
432
|
+
- webpack/components/withDeleteModal.js
|
430
433
|
- webpack/components/withLoading.js
|
431
434
|
- webpack/global_index.js
|
435
|
+
- webpack/graphql/mutations/createOvalPolicy.gql
|
436
|
+
- webpack/graphql/mutations/deleteOvalContent.gql
|
437
|
+
- webpack/graphql/mutations/deleteOvalPolicy.gql
|
438
|
+
- webpack/graphql/mutations/updateOvalPolicy.gql
|
439
|
+
- webpack/graphql/queries/currentUserAttributes.gql
|
432
440
|
- webpack/graphql/queries/cves.gql
|
441
|
+
- webpack/graphql/queries/hostgroups.gql
|
442
|
+
- webpack/graphql/queries/ovalContent.gql
|
433
443
|
- webpack/graphql/queries/ovalContents.gql
|
434
444
|
- webpack/graphql/queries/ovalPolicies.gql
|
435
445
|
- webpack/graphql/queries/ovalPolicy.gql
|
436
446
|
- webpack/helpers/commonHelper.js
|
447
|
+
- webpack/helpers/formFieldsHelper.js
|
437
448
|
- webpack/helpers/globalIdHelper.js
|
449
|
+
- webpack/helpers/mutationHelper.js
|
438
450
|
- webpack/helpers/pageParamsHelper.js
|
439
451
|
- webpack/helpers/pathsHelper.js
|
452
|
+
- webpack/helpers/permissionsHelper.js
|
440
453
|
- webpack/helpers/tableHelper.js
|
454
|
+
- webpack/helpers/toastHelper.js
|
455
|
+
- webpack/helpers/toastsHelper.js
|
441
456
|
- webpack/index.js
|
442
457
|
- webpack/routes/OvalContents/OvalContentsIndex/OvalContentsIndex.js
|
443
458
|
- webpack/routes/OvalContents/OvalContentsIndex/OvalContentsTable.js
|
459
|
+
- webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsDestroy.fixtures.js
|
460
|
+
- webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsDestroy.test.js
|
444
461
|
- webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsIndex.fixtures.js
|
445
462
|
- webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsIndex.test.js
|
446
463
|
- webpack/routes/OvalContents/OvalContentsIndex/index.js
|
464
|
+
- webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.js
|
465
|
+
- webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.scss
|
466
|
+
- webpack/routes/OvalContents/OvalContentsNew/OvalContentsNewHelper.js
|
467
|
+
- webpack/routes/OvalContents/OvalContentsNew/__tests__/OvalContentsNew.test.js
|
468
|
+
- webpack/routes/OvalContents/OvalContentsNew/index.js
|
469
|
+
- webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.js
|
470
|
+
- webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.test.js
|
471
|
+
- webpack/routes/OvalContents/OvalContentsShow/OvalContentsShowHelper.js
|
472
|
+
- webpack/routes/OvalContents/OvalContentsShow/index.js
|
447
473
|
- webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesIndex.js
|
448
474
|
- webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesTable.js
|
475
|
+
- webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesDestroy.fixtures.js
|
476
|
+
- webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesDestroy.test.js
|
449
477
|
- webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesIndex.fixtures.js
|
450
478
|
- webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesIndex.test.js
|
451
479
|
- webpack/routes/OvalPolicies/OvalPoliciesIndex/index.js
|
480
|
+
- webpack/routes/OvalPolicies/OvalPoliciesNew/HostgroupSelect.js
|
481
|
+
- webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyForm.js
|
482
|
+
- webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyFormHelpers.js
|
483
|
+
- webpack/routes/OvalPolicies/OvalPoliciesNew/OvalPoliciesNew.js
|
484
|
+
- webpack/routes/OvalPolicies/OvalPoliciesNew/__tests__/OvalPoliciesNew.fixtures.js
|
485
|
+
- webpack/routes/OvalPolicies/OvalPoliciesNew/__tests__/OvalPoliciesNew.test.js
|
486
|
+
- webpack/routes/OvalPolicies/OvalPoliciesNew/index.js
|
452
487
|
- webpack/routes/OvalPolicies/OvalPoliciesShow/CvesTab.js
|
453
488
|
- webpack/routes/OvalPolicies/OvalPoliciesShow/CvesTable.js
|
489
|
+
- webpack/routes/OvalPolicies/OvalPoliciesShow/DetailsTab.js
|
490
|
+
- webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTab.js
|
491
|
+
- webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTable.js
|
454
492
|
- webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShow.js
|
455
493
|
- webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShowHelper.js
|
494
|
+
- webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesEdit.fixtures.js
|
495
|
+
- webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesEdit.test.js
|
456
496
|
- webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.fixtures.js
|
457
497
|
- webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.test.js
|
458
498
|
- webpack/routes/OvalPolicies/OvalPoliciesShow/index.js
|
@@ -462,7 +502,7 @@ homepage: https://github.com/theforeman/foreman_openscap
|
|
462
502
|
licenses:
|
463
503
|
- GPL-3.0
|
464
504
|
metadata: {}
|
465
|
-
post_install_message:
|
505
|
+
post_install_message:
|
466
506
|
rdoc_options: []
|
467
507
|
require_paths:
|
468
508
|
- lib
|
@@ -477,41 +517,46 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
477
517
|
- !ruby/object:Gem::Version
|
478
518
|
version: '0'
|
479
519
|
requirements: []
|
480
|
-
rubygems_version: 3.1.
|
481
|
-
signing_key:
|
520
|
+
rubygems_version: 3.1.6
|
521
|
+
signing_key:
|
482
522
|
specification_version: 4
|
483
523
|
summary: Foreman plug-in for displaying OpenSCAP audit reports
|
484
524
|
test_files:
|
485
525
|
- test/factories/arf_report_factory.rb
|
486
526
|
- test/factories/asset_factory.rb
|
487
|
-
- test/factories/policy_arf_report_factory.rb
|
488
|
-
- test/factories/policy_factory.rb
|
489
|
-
- test/factories/scap_content_related.rb
|
490
|
-
- test/factories/compliance_log_factory.rb
|
491
527
|
- test/factories/compliance_host_factory.rb
|
528
|
+
- test/factories/compliance_log_factory.rb
|
492
529
|
- test/factories/oval_content_factory.rb
|
493
530
|
- test/factories/oval_policy_factory.rb
|
531
|
+
- test/factories/policy_arf_report_factory.rb
|
532
|
+
- test/factories/policy_factory.rb
|
533
|
+
- test/factories/scap_content_related.rb
|
494
534
|
- test/files/arf_report/arf_report.bz2
|
495
535
|
- test/files/arf_report/arf_report.html
|
496
536
|
- test/files/arf_report/arf_report.json
|
497
537
|
- test/files/arf_report/arf_report_msg_desc_changed.json
|
498
538
|
- test/files/arf_report/arf_report_msg_value_changed.json
|
539
|
+
- test/files/oval_contents/ansible-2.9.oval.xml.bz2
|
499
540
|
- test/files/scap_contents/ssg-fedora-ds.xml
|
500
541
|
- test/files/tailoring_files/ssg-firefox-ds-tailoring-2.xml
|
501
542
|
- test/files/tailoring_files/ssg-firefox-ds-tailoring.xml
|
502
|
-
- test/
|
503
|
-
- test/functional/api/v2/compliance/policies_controller_test.rb
|
504
|
-
- test/functional/api/v2/compliance/scap_content_profiles_controller_test.rb
|
505
|
-
- test/functional/api/v2/compliance/scap_contents_controller_test.rb
|
506
|
-
- test/functional/api/v2/compliance/tailoring_files_controller_test.rb
|
543
|
+
- test/fixtures/cve_fixtures.rb
|
507
544
|
- test/functional/api/v2/compliance/arf_reports_controller_test.rb
|
508
545
|
- test/functional/api/v2/compliance/oval_contents_controller_test.rb
|
509
546
|
- test/functional/api/v2/compliance/oval_policies_controller_test.rb
|
510
547
|
- test/functional/api/v2/compliance/oval_reports_controller_test.rb
|
548
|
+
- test/functional/api/v2/compliance/policies_controller_test.rb
|
549
|
+
- test/functional/api/v2/compliance/scap_content_profiles_controller_test.rb
|
550
|
+
- test/functional/api/v2/compliance/scap_contents_controller_test.rb
|
551
|
+
- test/functional/api/v2/compliance/tailoring_files_controller_test.rb
|
511
552
|
- test/functional/api/v2/hosts_controller_test.rb
|
512
553
|
- test/functional/arf_reports_controller_test.rb
|
513
554
|
- test/functional/openscap_proxies_controller_test.rb
|
514
555
|
- test/functional/tailoring_files_controller_test.rb
|
556
|
+
- test/graphql/mutations/oval_policies/delete_mutation_test.rb
|
557
|
+
- test/graphql/queries/oval_content_query_test.rb
|
558
|
+
- test/graphql/queries/oval_contents_query_test.rb
|
559
|
+
- test/graphql/queries/oval_policies_query_test.rb
|
515
560
|
- test/helpers/arf_report_dashboard_helper_test.rb
|
516
561
|
- test/helpers/policy_dashboard_helper_test.rb
|
517
562
|
- test/lib/foreman_openscap/bulk_upload_test.rb
|
@@ -522,21 +567,19 @@ test_files:
|
|
522
567
|
- test/unit/concerns/openscap_proxy_extenstions_test.rb
|
523
568
|
- test/unit/message_cleaner_test.rb
|
524
569
|
- test/unit/openscap_host_test.rb
|
570
|
+
- test/unit/oval_host_test.rb
|
571
|
+
- test/unit/oval_policy_test.rb
|
572
|
+
- test/unit/oval_status_test.rb
|
525
573
|
- test/unit/policy_mailer_test.rb
|
574
|
+
- test/unit/policy_test.rb
|
526
575
|
- test/unit/scap_content_test.rb
|
527
576
|
- test/unit/services/config_name_service_test.rb
|
528
577
|
- test/unit/services/hostgroup_overrider_test.rb
|
529
578
|
- test/unit/services/lookup_key_overrider_test.rb
|
530
|
-
- test/unit/services/report_dashboard/data_test.rb
|
531
|
-
- test/unit/services/tailoring_files_proxy_check_test.rb
|
532
579
|
- test/unit/services/oval/cves_test.rb
|
580
|
+
- test/unit/services/oval/setup_check_test.rb
|
533
581
|
- test/unit/services/oval/setup_test.rb
|
582
|
+
- test/unit/services/report_dashboard/data_test.rb
|
583
|
+
- test/unit/services/tailoring_files_proxy_check_test.rb
|
534
584
|
- test/unit/tailoring_file_test.rb
|
535
|
-
- test/unit/policy_test.rb
|
536
|
-
- test/unit/oval_host_test.rb
|
537
|
-
- test/unit/oval_policy_test.rb
|
538
|
-
- test/unit/oval_status_test.rb
|
539
|
-
- test/fixtures/cve_fixtures.rb
|
540
|
-
- test/graphql/queries/oval_contents_query_test.rb
|
541
|
-
- test/graphql/queries/oval_policies_query_test.rb
|
542
585
|
- test/test_plugin_helper.rb
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|