foreman_openscap 4.3.2 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
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