From deeda425a85f20a09cae226525b90ef42d0691c6 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Tue, 17 Mar 2020 18:22:13 +0100 Subject: [PATCH] added tests for storage edit --- cookbook/tests/edits/test_edits_storage.py | 39 ++++++++++++++++++++++ cookbook/tests/test_setup.py | 15 +++++++-- cookbook/views/edit.py | 8 ++--- 3 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 cookbook/tests/edits/test_edits_storage.py diff --git a/cookbook/tests/edits/test_edits_storage.py b/cookbook/tests/edits/test_edits_storage.py new file mode 100644 index 000000000..1893d77f9 --- /dev/null +++ b/cookbook/tests/edits/test_edits_storage.py @@ -0,0 +1,39 @@ +from django.contrib import auth +from django.urls import reverse + +from cookbook.models import Storage +from cookbook.tests.views.test_views import TestViews + + +class TestEditsRecipe(TestViews): + + def test_edit_storage(self): + storage = Storage.objects.create( + name='TestStorage', + method=Storage.DROPBOX, + created_by=auth.get_user(self.client), + token='test', + username='test', + password='test', + ) + + url = reverse('edit_storage', args=[storage.pk]) + r = self.anonymous_client.get(url) + self.assertEqual(r.status_code, 302) + + r = self.another_client.get(url) + self.assertEqual(r.status_code, 302) + + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + + r = self.superuser_client.get(url) + self.assertEqual(r.status_code, 200) + + r = self.client.post(url, {'name': 'NewStorage', 'password': '1234_pw', 'token': '1234_token', 'method': Storage.DROPBOX}) + storage.refresh_from_db() + self.assertEqual(storage.password, '1234_pw') + self.assertEqual(storage.token, '1234_token') + + r = self.client.post(url, {'name': 'NewStorage', 'password': '1234_pw', 'token': '1234_token', 'method': 'not_a_valid_method'}) + self.assertFormError(r, 'form', 'method', ['Select a valid choice. not_a_valid_method is not one of the available choices.']) diff --git a/cookbook/tests/test_setup.py b/cookbook/tests/test_setup.py index 5265d1317..290c5ae15 100644 --- a/cookbook/tests/test_setup.py +++ b/cookbook/tests/test_setup.py @@ -6,8 +6,19 @@ from django.test import TestCase, Client class TestBase(TestCase): def setUp(self): - self.client = Client() self.anonymous_client = Client() - self.client.force_login(User.objects.get_or_create(username='test')[0]) + + self.client = Client() + self.client.force_login(User.objects.get_or_create(username='client')[0]) user = auth.get_user(self.client) self.assertTrue(user.is_authenticated) + + self.another_client = Client() + self.another_client.force_login(User.objects.get_or_create(username='another_client')[0]) + user = auth.get_user(self.another_client) + self.assertTrue(user.is_authenticated) + + self.superuser_client = Client() + self.superuser_client.force_login(User.objects.get_or_create(username='superuser_client', is_superuser=True)[0]) + user = auth.get_user(self.superuser_client) + self.assertTrue(user.is_authenticated) diff --git a/cookbook/views/edit.py b/cookbook/views/edit.py index b933d7282..3ebc8629e 100644 --- a/cookbook/views/edit.py +++ b/cookbook/views/edit.py @@ -162,11 +162,11 @@ def edit_storage(request, pk): instance = get_object_or_404(Storage, pk=pk) if not (instance.created_by == request.user or request.user.is_superuser): - messages.add_message(request, messages.ERROR, _('You cannot edit this comment!')) + messages.add_message(request, messages.ERROR, _('You cannot edit this storage!')) return HttpResponseRedirect(reverse('list_storage')) if request.method == "POST": - form = StorageForm(request.POST) + form = StorageForm(request.POST, instance=instance) if form.is_valid(): instance.name = form.cleaned_data['name'] instance.method = form.cleaned_data['method'] @@ -182,7 +182,6 @@ def edit_storage(request, pk): instance.save() messages.add_message(request, messages.SUCCESS, _('Storage saved!')) - return HttpResponseRedirect(reverse('edit_storage', args=[pk])) else: messages.add_message(request, messages.ERROR, _('There was an error updating this storage backend.!')) else: @@ -191,8 +190,7 @@ def edit_storage(request, pk): pseudo_instance.token = '__NO__CHANGE__' form = StorageForm(instance=pseudo_instance) - return render(request, 'generic/edit_template.html', - {'form': form}) + return render(request, 'generic/edit_template.html', {'form': form}) class CommentUpdate(LoginRequiredMixin, UpdateView):