foreman_snapshot_management 1.6.1 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -2
  3. data/Rakefile +7 -2
  4. data/app/controllers/api/v2/snapshots_controller.rb +37 -7
  5. data/app/controllers/concerns/foreman/controller/parameters/snapshot.rb +1 -1
  6. data/app/controllers/foreman_snapshot_management/snapshots_controller.rb +5 -5
  7. data/app/models/concerns/fog_extensions/proxmox/snapshots/mock.rb +24 -0
  8. data/app/models/foreman_snapshot_management/proxmox_extensions.rb +101 -0
  9. data/app/models/foreman_snapshot_management/snapshot.rb +28 -28
  10. data/app/models/foreman_snapshot_management/vmware_extensions.rb +40 -13
  11. data/app/views/api/v2/snapshots/base.json.rabl +2 -0
  12. data/app/views/api/v2/snapshots/main.json.rabl +2 -2
  13. data/app/views/foreman_snapshot_management/snapshots/_index.html.erb +12 -74
  14. data/app/views/hosts/_snapshots_tab.html.erb +8 -0
  15. data/lib/foreman_snapshot_management/engine.rb +35 -16
  16. data/lib/foreman_snapshot_management/version.rb +1 -1
  17. data/lib/tasks/foreman_snapshot_management_tasks.rake +2 -2
  18. data/locale/de/LC_MESSAGES/foreman_snapshot_management.mo +0 -0
  19. data/locale/de/foreman_snapshot_management.po +195 -0
  20. data/locale/en/LC_MESSAGES/foreman_snapshot_management.mo +0 -0
  21. data/locale/en/foreman_snapshot_management.po +179 -11
  22. data/locale/foreman_snapshot_management.pot +259 -8
  23. data/locale/gemspec.rb +1 -1
  24. data/package.json +46 -0
  25. data/test/controllers/api/v2/snapshots_test.rb +250 -39
  26. data/test/controllers/foreman_snapshot_management/snapshots_controller_test.rb +61 -9
  27. data/test/factories/proxmox_factory.rb +18 -0
  28. data/test/test_plugin_helper.rb +3 -0
  29. data/webpack/components/SnapshotManagement/SnapshotManagement.js +84 -0
  30. data/webpack/components/SnapshotManagement/SnapshotManagementActions.js +212 -0
  31. data/webpack/components/SnapshotManagement/SnapshotManagementConstants.js +9 -0
  32. data/webpack/components/SnapshotManagement/SnapshotManagementReducer.js +100 -0
  33. data/webpack/components/SnapshotManagement/SnapshotManagementSelectors.js +8 -0
  34. data/webpack/components/SnapshotManagement/__tests__/SnapshotManagementActions.test.js +123 -0
  35. data/webpack/components/SnapshotManagement/__tests__/SnapshotManagementReducer.test.js +157 -0
  36. data/webpack/components/SnapshotManagement/__tests__/__snapshots__/SnapshotManagementActions.test.js.snap +314 -0
  37. data/webpack/components/SnapshotManagement/__tests__/__snapshots__/SnapshotManagementReducer.test.js.snap +214 -0
  38. data/webpack/components/SnapshotManagement/components/SnapshotForm/SnapshotForm.js +118 -0
  39. data/webpack/components/SnapshotManagement/components/SnapshotForm/SnapshotFormConstants.js +5 -0
  40. data/webpack/components/SnapshotManagement/components/SnapshotForm/__tests__/SnapshotForm.test.js +26 -0
  41. data/webpack/components/SnapshotManagement/components/SnapshotForm/__tests__/__snapshots__/SnapshotForm.test.js.snap +476 -0
  42. data/webpack/components/SnapshotManagement/components/SnapshotForm/index.js +19 -0
  43. data/webpack/components/SnapshotManagement/components/SnapshotForm/snapshotForm.scss +3 -0
  44. data/webpack/components/SnapshotManagement/components/SnapshotFormModal/SnapshotFormModal.js +37 -0
  45. data/webpack/components/SnapshotManagement/components/SnapshotFormModal/SnapshotFormModalConstants.js +1 -0
  46. data/webpack/components/SnapshotManagement/components/SnapshotFormModal/__tests__/SnapshotFormModal.test.js +19 -0
  47. data/webpack/components/SnapshotManagement/components/SnapshotFormModal/__tests__/__snapshots__/SnapshotFormModal.test.js.snap +19 -0
  48. data/webpack/components/SnapshotManagement/components/SnapshotFormModal/index.js +12 -0
  49. data/webpack/components/SnapshotManagement/components/SnapshotFormModal/useSnapshotFormModal.js +7 -0
  50. data/webpack/components/SnapshotManagement/components/SnapshotList/SnapshotList.js +314 -0
  51. data/webpack/components/SnapshotManagement/components/SnapshotList/SnapshotListHelper.js +70 -0
  52. data/webpack/components/SnapshotManagement/components/SnapshotList/__tests__/SnapshotList.test.js +88 -0
  53. data/webpack/components/SnapshotManagement/components/SnapshotList/__tests__/__snapshots__/SnapshotList.test.js.snap +1081 -0
  54. data/webpack/components/SnapshotManagement/components/SnapshotList/snapshotList.scss +13 -0
  55. data/webpack/components/SnapshotManagement/index.js +33 -0
  56. data/webpack/components/SnapshotManagement/snapshotManagement.scss +5 -0
  57. data/webpack/global_index.js +7 -0
  58. data/webpack/global_test_setup.js +11 -0
  59. data/webpack/index.js +8 -0
  60. data/webpack/reducers.js +7 -0
  61. data/webpack/test_setup.js +17 -0
  62. metadata +50 -37
@@ -1,19 +1,270 @@
1
- # foreman_snapshot_management
2
- #
3
- # This file is distributed under the same license as foreman_snapshot_management.
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the foreman_snapshot_management package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
5
  #
5
6
  #, fuzzy
6
7
  msgid ""
7
8
  msgstr ""
8
- "Project-Id-Version: version 0.0.1\n"
9
+ "Project-Id-Version: foreman_snapshot_management 1.0.0\n"
9
10
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2014-08-20 08:46+0100\n"
11
- "PO-Revision-Date: 2014-08-20 08:46+0100\n"
12
- "Last-Translator: Foreman Team <foreman-dev@googlegroups.com>\n"
13
- "Language-Team: Foreman Team <foreman-dev@googlegroups.com>\n"
11
+ "POT-Creation-Date: 2021-05-07 09:44+0000\n"
12
+ "PO-Revision-Date: 2021-05-07 09:44+0000\n"
13
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
15
  "Language: \n"
15
16
  "MIME-Version: 1.0\n"
16
17
  "Content-Type: text/plain; charset=UTF-8\n"
17
18
  "Content-Transfer-Encoding: 8bit\n"
18
19
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
19
20
 
21
+ #: ../app/controllers/api/v2/snapshots_controller.rb:13
22
+ msgid "List all snapshots"
23
+ msgstr ""
24
+
25
+ #: ../app/controllers/api/v2/snapshots_controller.rb:41
26
+ msgid "Name of this snapshot"
27
+ msgstr ""
28
+
29
+ #: ../app/controllers/api/v2/snapshots_controller.rb:42
30
+ msgid "Description of this snapshot"
31
+ msgstr ""
32
+
33
+ #: ../app/controllers/api/v2/snapshots_controller.rb:46
34
+ msgid "Create a snapshot"
35
+ msgstr ""
36
+
37
+ #: ../app/controllers/api/v2/snapshots_controller.rb:48
38
+ msgid "Whether to include the RAM state in the snapshot"
39
+ msgstr ""
40
+
41
+ #: ../app/controllers/api/v2/snapshots_controller.rb:56
42
+ msgid "Update a snapshot"
43
+ msgstr ""
44
+
45
+ #: ../app/controllers/api/v2/snapshots_controller.rb:65
46
+ msgid "Delete a snapshot"
47
+ msgstr ""
48
+
49
+ #: ../app/controllers/api/v2/snapshots_controller.rb:73
50
+ msgid "Revert Host to a snapshot"
51
+ msgstr ""
52
+
53
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:36
54
+ msgid "Error occurred while creating Snapshot: %s"
55
+ msgstr ""
56
+
57
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:48
58
+ #: ../webpack/components/SnapshotManagement/SnapshotManagementActions.js:81
59
+ msgid "Error occurred while removing Snapshot: %s"
60
+ msgstr ""
61
+
62
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:58
63
+ msgid "VM successfully rolled back."
64
+ msgstr ""
65
+
66
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:60
67
+ #: ../webpack/components/SnapshotManagement/SnapshotManagementActions.js:199
68
+ msgid "Error occurred while rolling back VM: %s"
69
+ msgstr ""
70
+
71
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:72
72
+ msgid "Failed to update Snapshot: %s"
73
+ msgstr ""
74
+
75
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:92
76
+ msgid "Error occurred while creating Snapshot for:%s"
77
+ msgstr ""
78
+
79
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:94
80
+ msgid "Created %{snapshots} for %{num} %{hosts}"
81
+ msgstr ""
82
+
83
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:95
84
+ #: ../app/models/foreman_snapshot_management/snapshot.rb:52
85
+ #: ../app/views/foreman_snapshot_management/snapshots/select_multiple_host.html.erb:8
86
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotList.js:156
87
+ msgid "Snapshot"
88
+ msgid_plural "Snapshots"
89
+ msgstr[0] ""
90
+ msgstr[1] ""
91
+
92
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:97
93
+ msgid "host"
94
+ msgid_plural "hosts"
95
+ msgstr[0] ""
96
+ msgstr[1] ""
97
+
98
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:140
99
+ msgid "No hosts were found with that id, name or query filter"
100
+ msgstr ""
101
+
102
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:147
103
+ msgid "Something went wrong while selecting hosts - %s"
104
+ msgstr ""
105
+
106
+ #: ../app/controllers/foreman_snapshot_management/snapshots_controller.rb:166
107
+ msgid "No capable hosts found."
108
+ msgstr ""
109
+
110
+ #:
111
+ #: ../app/helpers/concerns/foreman_snapshot_management/hosts_helper_extension.rb:6
112
+ #: ../webpack/components/SnapshotManagement/SnapshotManagement.js:46
113
+ msgid "Create Snapshot"
114
+ msgstr ""
115
+
116
+ #: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:15
117
+ msgid ""
118
+ "Name must contain at least 2 characters starting with alphabet. Valid characte"
119
+ "rs are A-Z a-z 0-9 _"
120
+ msgstr ""
121
+
122
+ #: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:22
123
+ msgid "Unable to create Proxmox Snapshot"
124
+ msgstr ""
125
+
126
+ #: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:32
127
+ msgid "Unable to remove Proxmox Snapshot"
128
+ msgstr ""
129
+
130
+ #: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:42
131
+ msgid "Unable to revert Proxmox Snapshot"
132
+ msgstr ""
133
+
134
+ #: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:49
135
+ msgid "Snapshot name cannot be changed"
136
+ msgstr ""
137
+
138
+ #: ../app/models/foreman_snapshot_management/proxmox_extensions.rb:55
139
+ msgid "Unable to update Proxmox Snapshot"
140
+ msgstr ""
141
+
142
+ #: ../app/models/foreman_snapshot_management/vmware_extensions.rb:18
143
+ msgid "Unable to create VMWare Snapshot"
144
+ msgstr ""
145
+
146
+ #: ../app/models/foreman_snapshot_management/vmware_extensions.rb:29
147
+ msgid "Unable to remove VMWare Snapshot"
148
+ msgstr ""
149
+
150
+ #: ../app/models/foreman_snapshot_management/vmware_extensions.rb:40
151
+ msgid "Unable to revert VMWare Snapshot"
152
+ msgstr ""
153
+
154
+ #: ../app/models/foreman_snapshot_management/vmware_extensions.rb:51
155
+ msgid "Unable to update VMWare Snapshot"
156
+ msgstr ""
157
+
158
+ #:
159
+ #: ../app/views/foreman_snapshot_management/snapshots/select_multiple_host.html.erb:4
160
+ msgid "No capable hosts selected"
161
+ msgstr ""
162
+
163
+ #:
164
+ #: ../app/views/foreman_snapshot_management/snapshots/select_multiple_host.html.erb:11
165
+ #: ../webpack/components/SnapshotManagement/components/SnapshotForm/SnapshotForm.js:75
166
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotList.js:162
167
+ msgid "Description"
168
+ msgstr ""
169
+
170
+ #:
171
+ #: ../app/views/foreman_snapshot_management/snapshots/select_multiple_host.html.erb:14
172
+ #: ../webpack/components/SnapshotManagement/components/SnapshotForm/SnapshotForm.js:81
173
+ msgid "Include RAM"
174
+ msgstr ""
175
+
176
+ #: ../app/views/hosts/_snapshots_tab.html.erb:13
177
+ msgid "Loading Snapshots information ..."
178
+ msgstr ""
179
+
180
+ #: ../lib/foreman_snapshot_management/engine.rb:64
181
+ msgid "Snapshots"
182
+ msgstr ""
183
+
184
+ #: ../webpack/components/SnapshotManagement/SnapshotManagementActions.js:60
185
+ msgid "Successfully removed Snapshot \"%s\" from host %s"
186
+ msgstr ""
187
+
188
+ #: ../webpack/components/SnapshotManagement/SnapshotManagementActions.js:126
189
+ msgid "Successfully updated Snapshot \"%s\""
190
+ msgstr ""
191
+
192
+ #: ../webpack/components/SnapshotManagement/SnapshotManagementActions.js:145
193
+ msgid "Error occurred while updating Snapshot: %s"
194
+ msgstr ""
195
+
196
+ #: ../webpack/components/SnapshotManagement/SnapshotManagementActions.js:180
197
+ msgid "Successfully rolled back Snapshot \"%s\" on host %s"
198
+ msgstr ""
199
+
200
+ #:
201
+ #: ../webpack/components/SnapshotManagement/components/SnapshotForm/SnapshotForm.js:52
202
+ msgid "Snapshot successfully created!"
203
+ msgstr ""
204
+
205
+ #:
206
+ #: ../webpack/components/SnapshotManagement/components/SnapshotForm/SnapshotForm.js:69
207
+ msgid "Name"
208
+ msgstr ""
209
+
210
+ #:
211
+ #: ../webpack/components/SnapshotManagement/components/SnapshotFormModal/SnapshotFormModal.js:14
212
+ msgid "Create Snapshot for %s"
213
+ msgstr ""
214
+
215
+ #:
216
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotList.js:122
217
+ msgid "N/A"
218
+ msgstr ""
219
+
220
+ #:
221
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotList.js:171
222
+ msgid "Action"
223
+ msgstr ""
224
+
225
+ #:
226
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotList.js:203
227
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotList.js:205
228
+ msgid "Failed to load snapshot list"
229
+ msgstr ""
230
+
231
+ #:
232
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotListHelper.js:28
233
+ msgid "edit entry"
234
+ msgstr ""
235
+
236
+ #:
237
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotListHelper.js:42
238
+ msgid "Rollback to \"%s\"?"
239
+ msgstr ""
240
+
241
+ #:
242
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotListHelper.js:46
243
+ msgid "Rollback"
244
+ msgstr ""
245
+
246
+ #:
247
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotListHelper.js:60
248
+ msgid "Delete Snapshot \"%s\"?"
249
+ msgstr ""
250
+
251
+ #:
252
+ #: ../webpack/components/SnapshotManagement/components/SnapshotList/SnapshotListHelper.js:64
253
+ msgid "Delete"
254
+ msgstr ""
255
+
256
+ #: action_names.rb:2
257
+ msgid "Import Puppet classes"
258
+ msgstr ""
259
+
260
+ #: action_names.rb:3
261
+ msgid "Import facts"
262
+ msgstr ""
263
+
264
+ #: action_names.rb:4
265
+ msgid "Action with sub plans"
266
+ msgstr ""
267
+
268
+ #: gemspec.rb:4
269
+ msgid "Foreman-plugin to manage snapshots in a virtual-hardware environments."
270
+ msgstr ""
data/locale/gemspec.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Matches foreman_snapshot_management.gemspec
4
- _('Foreman-plugin to manage snapshots in a vSphere environment.')
4
+ _('Foreman-plugin to manage snapshots in a virtual-hardware environments.')
data/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "foreman_snapshot_management",
3
+ "version": "2.0.1",
4
+ "description": "Foreman-plugin to manage snapshots in a virtual-hardware environments.",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "lint": "tfm-lint --plugin -d /webpack",
8
+ "stylelint": "stylelint webpack/**/*.scss",
9
+ "test": "tfm-test --config jest.config.js",
10
+ "test:watch": "tfm-test --plugin --watchAll",
11
+ "test:current": "tfm-test --plugin --watch",
12
+ "publish-coverage": "tfm-publish-coverage",
13
+ "stories": "tfm-stories --plugin",
14
+ "stories:build": "tfm-build-stories --plugin",
15
+ "create-react-component": "yo react-domain"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/ATIX-AG/foreman_snapshot_management.git"
20
+ },
21
+ "bugs": {
22
+ "url": "http://projects.theforeman.org/projects/foreman_snapshot_management/issues"
23
+ },
24
+ "peerDependencies": {
25
+ "@theforeman/vendor": ">= 4.0.0"
26
+ },
27
+ "dependencies": {
28
+ "react-intl": "^2.8.0"
29
+ },
30
+ "devDependencies": {
31
+ "@babel/core": "^7.7.0",
32
+ "@sheerun/mutationobserver-shim": "^0.3.3",
33
+ "@theforeman/builder": "^4.0.0",
34
+ "@theforeman/eslint-plugin-foreman": "6.0.0",
35
+ "@theforeman/find-foreman": "^4.8.0",
36
+ "@theforeman/stories": "^7.0.0",
37
+ "@theforeman/test": "^8.0.0",
38
+ "@theforeman/vendor-dev": "^4.0.0",
39
+ "babel-eslint": "^10.0.3",
40
+ "eslint": "^6.7.2",
41
+ "prettier": "^1.19.1",
42
+ "react-redux-test-utils": "^0.2.0",
43
+ "stylelint": "^9.3.0",
44
+ "stylelint-config-standard": "^18.0.0"
45
+ }
46
+ }
@@ -1,61 +1,272 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'test_helper'
3
+ require 'test_plugin_helper'
4
4
 
5
5
  class Api::V2::SnapshotsControllerTest < ActionController::TestCase
6
- let(:tax_location) { Location.find_by_name('Location 1') }
7
- let(:tax_organization) { Organization.find_by_name('Organization 1') }
6
+ let(:tax_location) { Location.find_by(name: 'Location 1') }
7
+ let(:tax_organization) { Organization.find_by(name: 'Organization 1') }
8
8
  let(:compute_resource) do
9
9
  cr = FactoryBot.create(:compute_resource, :vmware, :uuid => 'Solutions', :locations => [tax_location], organizations: [tax_organization])
10
- ComputeResource.find_by_id(cr.id)
10
+ ComputeResource.find_by(id: cr.id)
11
11
  end
12
12
  let(:uuid) { '5032c8a5-9c5e-ba7a-3804-832a03e16381' }
13
13
  let(:host) { FactoryBot.create(:host, :managed, :compute_resource => compute_resource, :uuid => uuid) }
14
14
  let(:snapshot_id) { 'snapshot-0101' }
15
+ let(:proxmox_compute_resource) do
16
+ cr = FactoryBot.create(:proxmox_cr)
17
+ ComputeResource.find_by(id: cr.id)
18
+ end
19
+ let(:vmid) { '100' }
20
+ let(:proxmox_host) { FactoryBot.create(:host, :managed, :compute_resource => proxmox_compute_resource, :uuid => "1_#{vmid}") }
21
+ let(:proxmox_snapshot) { 'snapshot1' }
22
+ let(:manager_user) do
23
+ roles = [Role.find_by(name: 'Snapshot Manager')]
24
+ FactoryBot.create(:user, :organizations => [tax_organization], :locations => [tax_location], :roles => roles)
25
+ end
26
+ let(:view_user) do
27
+ roles = [Role.find_by(name: 'Snapshot Viewer')]
28
+ FactoryBot.create(:user, :organizations => [tax_organization], :locations => [tax_location], :roles => roles)
29
+ end
15
30
  setup { ::Fog.mock! }
16
31
  teardown { ::Fog.unmock! }
17
32
 
18
- test 'should get index' do
19
- get :index, params: { :host_id => host.to_param }
20
- assert_response :success
21
- assert_not_nil assigns(:snapshots)
22
- body = ActiveSupport::JSON.decode(@response.body)
23
- refute_empty body
24
- refute_empty body['results']
25
- end
33
+ context 'view user' do
34
+ setup do
35
+ # Make sure that test-hosts are created here (by the admin-user)
36
+ host
37
+ proxmox_host
38
+ @orig_user = User.current
39
+ User.current = view_user
40
+ end
41
+ teardown do
42
+ User.current = @orig_user
43
+ end
26
44
 
27
- test 'should show snapshot' do
28
- get :show, params: { :host_id => host.to_param, :id => snapshot_id }
29
- assert_not_nil assigns(:snapshot)
30
- assert_response :success
31
- body = ActiveSupport::JSON.decode(@response.body)
32
- refute_empty body
33
- end
45
+ test 'should get index of Vmware Snapshots' do
46
+ get :index, params: { :host_id => host.to_param }
47
+ assert_response :success
48
+ assert_not_nil assigns(:snapshots)
49
+ body = ActiveSupport::JSON.decode(@response.body)
50
+ assert_not_empty body
51
+ assert_not_empty body['results']
52
+ end
34
53
 
35
- test 'should 404 for unknown snapshot' do
36
- get :show, params: { :host_id => host.to_param, :id => 'does-not-exist' }
37
- assert_response :not_found
38
- end
54
+ test 'should get index of Proxmox Snapshots' do
55
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
56
+ get :index, params: { :host_id => proxmox_host.to_param }
57
+ assert_response :success
58
+ assert_not_nil assigns(:snapshots)
59
+ body = ActiveSupport::JSON.decode(@response.body)
60
+ assert_not_empty body
61
+ assert_not_empty body['results']
62
+ end
39
63
 
40
- test 'should create snapshot' do
41
- post :create, params: { :host_id => host.to_param, :name => 'test' }
42
- assert_response :created
43
- assert_not_nil assigns(:snapshot)
44
- end
64
+ test 'should search VMware snapshot' do
65
+ get :index, params: { :host_id => host.to_param, :search => 'name= clean' }
66
+ assert_response :success
67
+ assert_not_nil assigns(:snapshots)
68
+ body = ActiveSupport::JSON.decode(@response.body)
69
+ assert_not_empty body
70
+ assert_not_empty body['results']
71
+ assert_equal body['results'].count, 1
72
+ end
45
73
 
46
- test 'should update snapshot' do
47
- name = 'test'
48
- put :update, params: { :host_id => host.to_param, :id => snapshot_id.to_param, :name => name.to_param }
49
- assert_response :success
50
- end
74
+ test 'should search Proxmox snapshot' do
75
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
76
+ get :index, params: { :host_id => proxmox_host.to_param, :search => 'name= snapshot1' }
77
+ assert_response :success
78
+ assert_not_nil assigns(:snapshots)
79
+ body = ActiveSupport::JSON.decode(@response.body)
80
+ assert_not_empty body
81
+ assert_not_empty body['results']
82
+ assert_equal body['results'].count, 1
83
+ end
51
84
 
52
- test 'should destroy snapshot' do
53
- delete :destroy, params: { :host_id => host.to_param, :id => snapshot_id.to_param }
54
- assert_response :success
85
+ test 'should refute search Vmware snapshot' do
86
+ get :index, params: { :host_id => host.to_param, :search => 'name != clean' }
87
+ assert_response :internal_server_error
88
+ end
89
+
90
+ test 'should show Vmware snapshot' do
91
+ get :show, params: { :host_id => host.to_param, :id => snapshot_id }
92
+ assert_not_nil assigns(:snapshot)
93
+ assert_response :success
94
+ body = ActiveSupport::JSON.decode(@response.body)
95
+ assert_not_empty body
96
+ end
97
+
98
+ test 'should show Proxmox snapshot' do
99
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
100
+ get :show, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot }
101
+ assert_not_nil assigns(:snapshot)
102
+ assert_response :success
103
+ body = ActiveSupport::JSON.decode(@response.body)
104
+ assert_not_empty body
105
+ end
106
+
107
+ test 'should 404 for unknown Vmware snapshot' do
108
+ get :show, params: { :host_id => host.to_param, :id => 'does-not-exist' }
109
+ assert_response :not_found
110
+ end
111
+
112
+ test 'should refute create Vmware snapshot' do
113
+ post :create, params: { :host_id => host.to_param, :name => 'test' }
114
+ assert_response :forbidden
115
+ end
116
+
117
+ test 'should refute update Vmware snapshot' do
118
+ name = 'test'
119
+ put :update, params: { :host_id => host.to_param, :id => snapshot_id.to_param, :name => name.to_param }
120
+ assert_response :forbidden
121
+ end
122
+
123
+ test 'should refute destroy Vmware snapshot' do
124
+ delete :destroy, params: { :host_id => host.to_param, :id => snapshot_id.to_param }
125
+ assert_response :forbidden
126
+ end
127
+
128
+ test 'should refute revert Proxmox snapshot' do
129
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
130
+ put :revert, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot.to_param }
131
+ assert_response :forbidden
132
+ end
55
133
  end
56
134
 
57
- test 'should revert snapshot' do
58
- put :revert, params: { :host_id => host.to_param, :id => snapshot_id.to_param }
59
- assert_response :success
135
+ context 'manager user' do
136
+ setup do
137
+ # Make sure that test-hosts are created here (by the admin-user)
138
+ host
139
+ proxmox_host
140
+ @orig_user = User.current
141
+ User.current = manager_user
142
+ end
143
+ teardown do
144
+ User.current = @orig_user
145
+ end
146
+
147
+ test 'should get index of Vmware Snapshots' do
148
+ get :index, params: { :host_id => host.to_param }
149
+ assert_response :success
150
+ assert_not_nil assigns(:snapshots)
151
+ body = ActiveSupport::JSON.decode(@response.body)
152
+ assert_not_empty body
153
+ assert_not_empty body['results']
154
+ end
155
+
156
+ test 'should get index of Proxmox Snapshots' do
157
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
158
+ get :index, params: { :host_id => proxmox_host.to_param }
159
+ assert_response :success
160
+ assert_not_nil assigns(:snapshots)
161
+ body = ActiveSupport::JSON.decode(@response.body)
162
+ assert_not_empty body
163
+ assert_not_empty body['results']
164
+ end
165
+
166
+ test 'should search VMware snapshot' do
167
+ get :index, params: { :host_id => host.to_param, :search => 'name= clean' }
168
+ assert_response :success
169
+ assert_not_nil assigns(:snapshots)
170
+ body = ActiveSupport::JSON.decode(@response.body)
171
+ assert_not_empty body
172
+ assert_not_empty body['results']
173
+ assert_equal body['results'].count, 1
174
+ end
175
+
176
+ test 'should search Proxmox snapshot' do
177
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
178
+ get :index, params: { :host_id => proxmox_host.to_param, :search => 'name= snapshot1' }
179
+ assert_response :success
180
+ assert_not_nil assigns(:snapshots)
181
+ body = ActiveSupport::JSON.decode(@response.body)
182
+ assert_not_empty body
183
+ assert_not_empty body['results']
184
+ assert_equal body['results'].count, 1
185
+ end
186
+
187
+ test 'should refute search Vmware snapshot' do
188
+ get :index, params: { :host_id => host.to_param, :search => 'name != clean' }
189
+ assert_response :internal_server_error
190
+ end
191
+
192
+ test 'should show Vmware snapshot' do
193
+ get :show, params: { :host_id => host.to_param, :id => snapshot_id }
194
+ assert_not_nil assigns(:snapshot)
195
+ assert_response :success
196
+ body = ActiveSupport::JSON.decode(@response.body)
197
+ assert_not_empty body
198
+ end
199
+
200
+ test 'should show Proxmox snapshot' do
201
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
202
+ get :show, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot }
203
+ assert_not_nil assigns(:snapshot)
204
+ assert_response :success
205
+ body = ActiveSupport::JSON.decode(@response.body)
206
+ assert_not_empty body
207
+ end
208
+
209
+ test 'should 404 for unknown Vmware snapshot' do
210
+ get :show, params: { :host_id => host.to_param, :id => 'does-not-exist' }
211
+ assert_response :not_found
212
+ end
213
+
214
+ test 'should create Vmware snapshot' do
215
+ post :create, params: { :host_id => host.to_param, :name => 'test' }
216
+ assert_response :created
217
+ assert_not_nil assigns(:snapshot)
218
+ end
219
+
220
+ test 'should create Proxmox snapshot' do
221
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
222
+ post :create, params: { :host_id => proxmox_host.to_param, :name => 'test' }
223
+ assert_response :created
224
+ assert_not_nil assigns(:snapshot)
225
+ end
226
+
227
+ test 'should update Vmware snapshot' do
228
+ name = 'test'
229
+ put :update, params: { :host_id => host.to_param, :id => snapshot_id.to_param, :name => name.to_param }
230
+ assert_response :success
231
+ end
232
+
233
+ test 'should update Proxmox snapshot' do
234
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
235
+ description = 'snapshot1 updated'
236
+ put :update, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot.to_param, :description => description.to_param }
237
+ assert_response :success
238
+ end
239
+
240
+ test 'should refute update Proxmox snapshot name' do
241
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
242
+ name = 'test'
243
+ put :update, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot.to_param, :name => name.to_param }
244
+ assert_response :unprocessable_entity
245
+ end
246
+
247
+ test 'should destroy Vmware snapshot' do
248
+ delete :destroy, params: { :host_id => host.to_param, :id => snapshot_id.to_param }
249
+ assert_response :success
250
+ end
251
+
252
+ test 'should destroy Proxmox snapshot' do
253
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
254
+ delete :destroy, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot.to_param }
255
+ assert_response :success
256
+ body = ActiveSupport::JSON.decode(@response.body)
257
+ assert_not_nil body['name']
258
+ assert_nil body['id']
259
+ end
260
+
261
+ test 'should revert Vmware snapshot' do
262
+ put :revert, params: { :host_id => host.to_param, :id => snapshot_id.to_param }
263
+ assert_response :success
264
+ end
265
+
266
+ test 'should revert Proxmox snapshot' do
267
+ Host::Managed.any_instance.stubs(:vm_exists?).returns(false)
268
+ put :revert, params: { :host_id => proxmox_host.to_param, :id => proxmox_snapshot.to_param }
269
+ assert_response :success
270
+ end
60
271
  end
61
272
  end