foreman_openscap 4.3.2 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/api/v2/compliance/arf_reports_controller.rb +0 -6
  3. data/app/controllers/api/v2/compliance/oval_policies_controller.rb +1 -1
  4. data/app/graphql/mutations/oval_contents/delete.rb +9 -0
  5. data/app/graphql/mutations/oval_policies/create.rb +33 -0
  6. data/app/graphql/mutations/oval_policies/delete.rb +9 -0
  7. data/app/graphql/mutations/oval_policies/update.rb +15 -0
  8. data/app/graphql/types/oval_check.rb +11 -0
  9. data/app/graphql/types/oval_content.rb +2 -0
  10. data/app/graphql/types/oval_policy.rb +3 -0
  11. data/app/helpers/arf_report_dashboard_helper.rb +2 -4
  12. data/app/helpers/compliance_hosts_helper.rb +1 -1
  13. data/app/helpers/policies_helper.rb +2 -2
  14. data/app/models/concerns/foreman_openscap/data_stream_content.rb +1 -1
  15. data/app/models/concerns/foreman_openscap/host_extensions.rb +0 -6
  16. data/app/models/concerns/foreman_openscap/oval_facet_hostgroup_extensions.rb +16 -0
  17. data/app/models/foreman_openscap/arf_report.rb +1 -1
  18. data/app/models/foreman_openscap/oval_content.rb +2 -0
  19. data/app/services/foreman_openscap/client_config/base.rb +1 -0
  20. data/app/services/foreman_openscap/client_config/puppet.rb +6 -2
  21. data/app/services/foreman_openscap/oval/configure.rb +16 -13
  22. data/app/services/foreman_openscap/oval/setup.rb +5 -5
  23. data/app/services/foreman_openscap/oval/setup_check.rb +5 -2
  24. data/app/views/api/v2/compliance/oval_contents/destroy.json.rabl +3 -0
  25. data/app/views/arf_reports/_metrics.html.erb +4 -4
  26. data/app/views/compliance_hosts/show.html.erb +4 -6
  27. data/app/views/dashboard/_compliance_reports_breakdown_widget.html.erb +4 -3
  28. data/app/views/policy_dashboard/_policy_chart_widget.html.erb +3 -2
  29. data/db/migrate/20200117135424_migrate_port_overrides_to_int.rb +2 -1
  30. data/db/migrate/20201202110213_update_puppet_port_param_type.rb +2 -1
  31. data/db/migrate/20210819143316_drop_unused_tables.rb +6 -0
  32. data/lib/foreman_openscap/engine.rb +8 -9
  33. data/lib/foreman_openscap/version.rb +1 -1
  34. data/package.json +3 -6
  35. data/test/functional/api/v2/compliance/oval_reports_controller_test.rb +1 -1
  36. data/test/functional/api/v2/compliance/policies_controller_test.rb +2 -0
  37. data/test/graphql/mutations/oval_policies/delete_mutation_test.rb +63 -0
  38. data/test/graphql/queries/oval_content_query_test.rb +29 -0
  39. data/test/helpers/arf_report_dashboard_helper_test.rb +9 -10
  40. data/test/helpers/policy_dashboard_helper_test.rb +1 -1
  41. data/test/test_plugin_helper.rb +9 -4
  42. data/test/unit/policy_test.rb +1 -1
  43. data/test/unit/services/config_name_service_test.rb +1 -0
  44. data/test/unit/services/hostgroup_overrider_test.rb +2 -1
  45. data/test/unit/services/lookup_key_overrider_test.rb +4 -1
  46. data/test/unit/services/oval/setup_check_test.rb +37 -0
  47. data/webpack/components/ConfirmModal.js +63 -0
  48. data/webpack/components/ConfirmModal.scss +3 -0
  49. data/webpack/components/EditableInput.js +163 -0
  50. data/webpack/components/EditableInput.scss +3 -0
  51. data/webpack/components/EmptyState.js +12 -3
  52. data/webpack/components/IndexLayout.js +11 -4
  53. data/webpack/components/IndexTable/index.js +21 -16
  54. data/webpack/components/LinkButton.js +38 -0
  55. data/webpack/components/withDeleteModal.js +51 -0
  56. data/webpack/components/withLoading.js +44 -5
  57. data/webpack/graphql/mutations/createOvalPolicy.gql +22 -0
  58. data/webpack/graphql/mutations/deleteOvalContent.gql +9 -0
  59. data/webpack/graphql/mutations/deleteOvalPolicy.gql +9 -0
  60. data/webpack/graphql/mutations/updateOvalPolicy.gql +14 -0
  61. data/webpack/graphql/queries/currentUserAttributes.gql +11 -0
  62. data/webpack/graphql/queries/cves.gql +5 -0
  63. data/webpack/graphql/queries/hostgroups.gql +14 -0
  64. data/webpack/graphql/queries/ovalContent.gql +8 -0
  65. data/webpack/graphql/queries/ovalContents.gql +8 -0
  66. data/webpack/graphql/queries/ovalPolicies.gql +8 -0
  67. data/webpack/graphql/queries/ovalPolicy.gql +8 -0
  68. data/webpack/helpers/formFieldsHelper.js +113 -0
  69. data/webpack/helpers/globalIdHelper.js +4 -2
  70. data/webpack/helpers/mutationHelper.js +68 -0
  71. data/webpack/helpers/pathsHelper.js +10 -3
  72. data/webpack/helpers/permissionsHelper.js +42 -0
  73. data/webpack/helpers/toastHelper.js +3 -0
  74. data/webpack/helpers/toastsHelper.js +3 -0
  75. data/webpack/routes/OvalContents/OvalContentsIndex/OvalContentsIndex.js +26 -0
  76. data/webpack/routes/OvalContents/OvalContentsIndex/OvalContentsTable.js +50 -5
  77. data/webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsDestroy.fixtures.js +105 -0
  78. data/webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsDestroy.test.js +124 -0
  79. data/webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsIndex.fixtures.js +98 -77
  80. data/webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsIndex.test.js +53 -6
  81. data/webpack/routes/OvalContents/OvalContentsIndex/index.js +7 -1
  82. data/webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.js +138 -0
  83. data/webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.scss +3 -0
  84. data/webpack/routes/OvalContents/OvalContentsNew/OvalContentsNewHelper.js +73 -0
  85. data/webpack/routes/OvalContents/OvalContentsNew/__tests__/OvalContentsNew.test.js +104 -0
  86. data/webpack/routes/OvalContents/OvalContentsNew/index.js +13 -0
  87. data/webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.js +62 -0
  88. data/webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.test.js +45 -0
  89. data/webpack/routes/OvalContents/OvalContentsShow/OvalContentsShowHelper.js +0 -0
  90. data/webpack/routes/OvalContents/OvalContentsShow/index.js +35 -0
  91. data/webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesIndex.js +18 -2
  92. data/webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesTable.js +34 -4
  93. data/webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesDestroy.fixtures.js +101 -0
  94. data/webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesDestroy.test.js +117 -0
  95. data/webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesIndex.fixtures.js +71 -21
  96. data/webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesIndex.test.js +34 -2
  97. data/webpack/routes/OvalPolicies/OvalPoliciesIndex/index.js +7 -1
  98. data/webpack/routes/OvalPolicies/OvalPoliciesNew/HostgroupSelect.js +135 -0
  99. data/webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyForm.js +119 -0
  100. data/webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyFormHelpers.js +107 -0
  101. data/webpack/routes/OvalPolicies/OvalPoliciesNew/OvalPoliciesNew.js +32 -0
  102. data/webpack/routes/OvalPolicies/OvalPoliciesNew/__tests__/OvalPoliciesNew.fixtures.js +147 -0
  103. data/webpack/routes/OvalPolicies/OvalPoliciesNew/__tests__/OvalPoliciesNew.test.js +172 -0
  104. data/webpack/routes/OvalPolicies/OvalPoliciesNew/index.js +11 -0
  105. data/webpack/routes/OvalPolicies/OvalPoliciesShow/CvesTab.js +1 -0
  106. data/webpack/routes/OvalPolicies/OvalPoliciesShow/CvesTable.js +2 -2
  107. data/webpack/routes/OvalPolicies/OvalPoliciesShow/DetailsTab.js +87 -0
  108. data/webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTab.js +49 -0
  109. data/webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTable.js +38 -0
  110. data/webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShow.js +15 -11
  111. data/webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShowHelper.js +80 -2
  112. data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesEdit.fixtures.js +48 -0
  113. data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesEdit.test.js +202 -0
  114. data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.fixtures.js +50 -4
  115. data/webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.test.js +64 -4
  116. data/webpack/routes/OvalPolicies/OvalPoliciesShow/index.js +4 -0
  117. data/webpack/routes/routes.js +21 -0
  118. data/webpack/testHelper.js +64 -2
  119. metadata +63 -7
@@ -12,17 +12,27 @@ import {
12
12
  resolvePath,
13
13
  } from '../../../../helpers/pathsHelper';
14
14
 
15
- import { withMockedProvider, tick, withRouter } from '../../../../testHelper';
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 = withRouter(withMockedProvider(OvalPoliciesShow));
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.getByText('Third policy')).toBeInTheDocument();
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
  };
@@ -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} />,
@@ -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} addTypename={false}>
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.3.2
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - slukasik@redhat.com
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-09 00:00:00.000000000 Z
11
+ date: 2021-11-29 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
@@ -386,6 +393,8 @@ files:
386
393
  - test/functional/arf_reports_controller_test.rb
387
394
  - test/functional/openscap_proxies_controller_test.rb
388
395
  - test/functional/tailoring_files_controller_test.rb
396
+ - test/graphql/mutations/oval_policies/delete_mutation_test.rb
397
+ - test/graphql/queries/oval_content_query_test.rb
389
398
  - test/graphql/queries/oval_contents_query_test.rb
390
399
  - test/graphql/queries/oval_policies_query_test.rb
391
400
  - test/helpers/arf_report_dashboard_helper_test.rb
@@ -409,15 +418,21 @@ files:
409
418
  - test/unit/services/hostgroup_overrider_test.rb
410
419
  - test/unit/services/lookup_key_overrider_test.rb
411
420
  - test/unit/services/oval/cves_test.rb
421
+ - test/unit/services/oval/setup_check_test.rb
412
422
  - test/unit/services/oval/setup_test.rb
413
423
  - test/unit/services/report_dashboard/data_test.rb
414
424
  - test/unit/services/tailoring_files_proxy_check_test.rb
415
425
  - test/unit/tailoring_file_test.rb
426
+ - webpack/components/ConfirmModal.js
427
+ - webpack/components/ConfirmModal.scss
428
+ - webpack/components/EditableInput.js
429
+ - webpack/components/EditableInput.scss
416
430
  - webpack/components/EmptyState.js
417
431
  - webpack/components/IndexLayout.js
418
432
  - webpack/components/IndexLayout.scss
419
433
  - webpack/components/IndexTable/IndexTableHelper.js
420
434
  - webpack/components/IndexTable/index.js
435
+ - webpack/components/LinkButton.js
421
436
  - webpack/components/RuleSeverity/RuleSeverity.scss
422
437
  - webpack/components/RuleSeverity/RuleSeverity.test.js
423
438
  - webpack/components/RuleSeverity/__snapshots__/RuleSeverity.test.js.snap
@@ -427,32 +442,70 @@ files:
427
442
  - webpack/components/RuleSeverity/i_severity-med.svg
428
443
  - webpack/components/RuleSeverity/i_unknown.svg
429
444
  - webpack/components/RuleSeverity/index.js
445
+ - webpack/components/withDeleteModal.js
430
446
  - webpack/components/withLoading.js
431
447
  - webpack/global_index.js
448
+ - webpack/graphql/mutations/createOvalPolicy.gql
449
+ - webpack/graphql/mutations/deleteOvalContent.gql
450
+ - webpack/graphql/mutations/deleteOvalPolicy.gql
451
+ - webpack/graphql/mutations/updateOvalPolicy.gql
452
+ - webpack/graphql/queries/currentUserAttributes.gql
432
453
  - webpack/graphql/queries/cves.gql
454
+ - webpack/graphql/queries/hostgroups.gql
455
+ - webpack/graphql/queries/ovalContent.gql
433
456
  - webpack/graphql/queries/ovalContents.gql
434
457
  - webpack/graphql/queries/ovalPolicies.gql
435
458
  - webpack/graphql/queries/ovalPolicy.gql
436
459
  - webpack/helpers/commonHelper.js
460
+ - webpack/helpers/formFieldsHelper.js
437
461
  - webpack/helpers/globalIdHelper.js
462
+ - webpack/helpers/mutationHelper.js
438
463
  - webpack/helpers/pageParamsHelper.js
439
464
  - webpack/helpers/pathsHelper.js
465
+ - webpack/helpers/permissionsHelper.js
440
466
  - webpack/helpers/tableHelper.js
467
+ - webpack/helpers/toastHelper.js
468
+ - webpack/helpers/toastsHelper.js
441
469
  - webpack/index.js
442
470
  - webpack/routes/OvalContents/OvalContentsIndex/OvalContentsIndex.js
443
471
  - webpack/routes/OvalContents/OvalContentsIndex/OvalContentsTable.js
472
+ - webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsDestroy.fixtures.js
473
+ - webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsDestroy.test.js
444
474
  - webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsIndex.fixtures.js
445
475
  - webpack/routes/OvalContents/OvalContentsIndex/__tests__/OvalContentsIndex.test.js
446
476
  - webpack/routes/OvalContents/OvalContentsIndex/index.js
477
+ - webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.js
478
+ - webpack/routes/OvalContents/OvalContentsNew/OvalContentsNew.scss
479
+ - webpack/routes/OvalContents/OvalContentsNew/OvalContentsNewHelper.js
480
+ - webpack/routes/OvalContents/OvalContentsNew/__tests__/OvalContentsNew.test.js
481
+ - webpack/routes/OvalContents/OvalContentsNew/index.js
482
+ - webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.js
483
+ - webpack/routes/OvalContents/OvalContentsShow/OvalContentsShow.test.js
484
+ - webpack/routes/OvalContents/OvalContentsShow/OvalContentsShowHelper.js
485
+ - webpack/routes/OvalContents/OvalContentsShow/index.js
447
486
  - webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesIndex.js
448
487
  - webpack/routes/OvalPolicies/OvalPoliciesIndex/OvalPoliciesTable.js
488
+ - webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesDestroy.fixtures.js
489
+ - webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesDestroy.test.js
449
490
  - webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesIndex.fixtures.js
450
491
  - webpack/routes/OvalPolicies/OvalPoliciesIndex/__tests__/OvalPoliciesIndex.test.js
451
492
  - webpack/routes/OvalPolicies/OvalPoliciesIndex/index.js
493
+ - webpack/routes/OvalPolicies/OvalPoliciesNew/HostgroupSelect.js
494
+ - webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyForm.js
495
+ - webpack/routes/OvalPolicies/OvalPoliciesNew/NewOvalPolicyFormHelpers.js
496
+ - webpack/routes/OvalPolicies/OvalPoliciesNew/OvalPoliciesNew.js
497
+ - webpack/routes/OvalPolicies/OvalPoliciesNew/__tests__/OvalPoliciesNew.fixtures.js
498
+ - webpack/routes/OvalPolicies/OvalPoliciesNew/__tests__/OvalPoliciesNew.test.js
499
+ - webpack/routes/OvalPolicies/OvalPoliciesNew/index.js
452
500
  - webpack/routes/OvalPolicies/OvalPoliciesShow/CvesTab.js
453
501
  - webpack/routes/OvalPolicies/OvalPoliciesShow/CvesTable.js
502
+ - webpack/routes/OvalPolicies/OvalPoliciesShow/DetailsTab.js
503
+ - webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTab.js
504
+ - webpack/routes/OvalPolicies/OvalPoliciesShow/HostgroupsTable.js
454
505
  - webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShow.js
455
506
  - webpack/routes/OvalPolicies/OvalPoliciesShow/OvalPoliciesShowHelper.js
507
+ - webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesEdit.fixtures.js
508
+ - webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesEdit.test.js
456
509
  - webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.fixtures.js
457
510
  - webpack/routes/OvalPolicies/OvalPoliciesShow/__tests__/OvalPoliciesShow.test.js
458
511
  - webpack/routes/OvalPolicies/OvalPoliciesShow/index.js
@@ -500,7 +553,6 @@ test_files:
500
553
  - test/files/tailoring_files/ssg-firefox-ds-tailoring-2.xml
501
554
  - test/files/tailoring_files/ssg-firefox-ds-tailoring.xml
502
555
  - test/files/oval_contents/ansible-2.9.oval.xml.bz2
503
- - test/functional/api/v2/compliance/policies_controller_test.rb
504
556
  - test/functional/api/v2/compliance/scap_content_profiles_controller_test.rb
505
557
  - test/functional/api/v2/compliance/scap_contents_controller_test.rb
506
558
  - test/functional/api/v2/compliance/tailoring_files_controller_test.rb
@@ -508,6 +560,7 @@ test_files:
508
560
  - test/functional/api/v2/compliance/oval_contents_controller_test.rb
509
561
  - test/functional/api/v2/compliance/oval_policies_controller_test.rb
510
562
  - test/functional/api/v2/compliance/oval_reports_controller_test.rb
563
+ - test/functional/api/v2/compliance/policies_controller_test.rb
511
564
  - test/functional/api/v2/hosts_controller_test.rb
512
565
  - test/functional/arf_reports_controller_test.rb
513
566
  - test/functional/openscap_proxies_controller_test.rb
@@ -524,19 +577,22 @@ test_files:
524
577
  - test/unit/openscap_host_test.rb
525
578
  - test/unit/policy_mailer_test.rb
526
579
  - test/unit/scap_content_test.rb
527
- - test/unit/services/config_name_service_test.rb
528
- - test/unit/services/hostgroup_overrider_test.rb
529
- - test/unit/services/lookup_key_overrider_test.rb
530
580
  - test/unit/services/report_dashboard/data_test.rb
531
581
  - test/unit/services/tailoring_files_proxy_check_test.rb
532
582
  - test/unit/services/oval/cves_test.rb
533
583
  - test/unit/services/oval/setup_test.rb
584
+ - test/unit/services/oval/setup_check_test.rb
585
+ - test/unit/services/config_name_service_test.rb
586
+ - test/unit/services/lookup_key_overrider_test.rb
587
+ - test/unit/services/hostgroup_overrider_test.rb
534
588
  - test/unit/tailoring_file_test.rb
535
- - test/unit/policy_test.rb
536
589
  - test/unit/oval_host_test.rb
537
590
  - test/unit/oval_policy_test.rb
538
591
  - test/unit/oval_status_test.rb
592
+ - test/unit/policy_test.rb
539
593
  - test/fixtures/cve_fixtures.rb
540
594
  - test/graphql/queries/oval_contents_query_test.rb
541
595
  - test/graphql/queries/oval_policies_query_test.rb
596
+ - test/graphql/queries/oval_content_query_test.rb
597
+ - test/graphql/mutations/oval_policies/delete_mutation_test.rb
542
598
  - test/test_plugin_helper.rb