Skip to content
This repository has been archived by the owner on Oct 5, 2021. It is now read-only.

Commit

Permalink
raise 404 when service not found
Browse files Browse the repository at this point in the history
  • Loading branch information
FoxMaSk committed Nov 9, 2017
1 parent e5ef932 commit 098fadb
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 47 deletions.
6 changes: 2 additions & 4 deletions django_th/forms/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@ def save(self, user=None, service_name=''):
"""
self.myobject = super(UserServiceForm, self).save(commit=False)
self.myobject.user = user
self.myobject.name = ServicesActivated.objects.get(
name=self.initial['name'])
self.myobject.name = ServicesActivated.objects.get(name=self.initial['name'])
self.myobject.save()

def clean(self):
Expand All @@ -61,8 +60,7 @@ def clean(self):
cleaned_data.get('password') == '' or \
cleaned_data.get('client_id') == '' or \
cleaned_data.get('client_secret') == '':
self.add_error(
'username', 'All the five fields are altogether mandatory')
self.add_error('username', 'All the five fields are altogether mandatory')
elif cleaned_data.get('host').endswith('/'):
cleaned_data['host'] = cleaned_data['host'][:-1]

Expand Down
2 changes: 1 addition & 1 deletion django_th/templates/services/service_form.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ <h3>{% trans 'Adding of the service' %} {{ service_name_alone }}</h3>
<div class="col-sm-offset-2 col-sm-8">{{ form.duration.errors }}</div>
<div class="col-sm-12">{% trans 'Choose the duration of the retention for the digester of that service. After that duration, you will receive the complet bucket of the grabbed data to your email account. If you do not mind, leave None to disable that feature' %}</div>
</div>
{% if service_name == 'ServiceInstapush' %}
{% if service_name in SERVICES_WITH_TOKEN %}
<div class="form-group">
<div class="col-sm-12"><h4>Authentication</h4></div>
<label class="col-sm-2 control-label" for="id_token">{% trans 'User Token' %}</label>
Expand Down
37 changes: 0 additions & 37 deletions django_th/tests/test_models_and_services.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from django.test import RequestFactory

from django_th.forms.base import TriggerServiceForm
from django_th.forms.base import UserServiceForm
from django_th.models import TriggerService, Digest
from django_th.models import UserService, ServicesActivated, update_result
from django_th.services.services import ServicesMgr
Expand Down Expand Up @@ -50,42 +49,6 @@ def test_userservice(self):
u.name))
self.assertEqual(u.__str__(), u.name.name)

def test_valid_form(self):
u = self.create_userservice()
data = {'user': u.user, 'name': u.name, 'token': ''}
if u.name.auth_required and u.name.self_hosted:
data = {'user': u.user, 'name': u.name, 'token': u.token,
'host': 'http://localhost/',
'username': 'johndoe',
'password': 'password',
'client_id': 'the_id',
'client_secret': 'the_secret',
'duration': 'd',
}
data2 = {'user': u.user, 'name': u.name, 'token': u.token,
'host': 'http://localhost/',
'username': '',
'password': 'password',
'client_id': 'the_id',
'client_secret': 'the_secret'}
initial = {'user': self.user, 'name': 'ServiceRss'}
# create a second service to be able to cover the "else" in
# activated_services()
user = self.user
ServicesActivated.objects.create(name='ServiceRss',
status=True,
auth_required=True,
description='Service Rss')
form = UserServiceForm(data=data, initial=initial)
self.assertTrue(form.is_valid())
form.clean()
form.save(user=user, service_name='ServiceRss')
# form is not valid because auth +
# self_host are true but username is missing
form = UserServiceForm(data=data2, initial=initial)
self.assertFalse(form.is_valid())
form.clean()


class ServicesActivatedTest(TestCase):

Expand Down
23 changes: 22 additions & 1 deletion django_th/tests/test_views_userservices.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
# coding: utf-8
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from django.test import RequestFactory

from django_th.models import UserService

from django_th.forms.base import UserServiceForm
from django_th.models import UserService, ServicesActivated
from django_th.tests.test_main import MainTest, setup_view
from django_th.views_userservices import UserServiceListView, UserServiceCreateView, UserServiceUpdateView

Expand Down Expand Up @@ -36,6 +39,14 @@ def test_context_data(self):

class UserServiceCreateViewTestCase(MainTest):

def setUp(self):
try:
self.user = User.objects.get(username='john')
except User.DoesNotExist:
self.user = User.objects.create_user(
username='john', email='[email protected]', password='doe')
ServicesActivated.objects.create(name='ServiceRss', status=True, auth_required=False, description='Service RSS')

def test_get(self):
template_name = 'services/service_form.html'
# Setup request and view.
Expand All @@ -48,6 +59,16 @@ def test_get(self):
self.assertEqual(response.status_code, 200)
self.assertEqual(response.template_name[0], template_name)

def test_valid_form(self):
data = {'duration': 'n'}
form = UserServiceForm(data=data, initial={'user': self.user, 'name': 'ServiceRss'})
self.assertTrue(form.is_valid())

def test_invalid_form(self):
data = {'duration': 'x'}
form = UserServiceForm(data=data, initial={'user': self.user, 'name': 'ServiceRss'})
self.assertFalse(form.is_valid())


class UserServiceUpdateViewTestCase(MainTest):

Expand Down
2 changes: 2 additions & 0 deletions django_th/th_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@
'ServiceTaiga', 'ServiceTodoist', 'ServiceTrello',
'ServiceTumblr', 'ServiceTwitter',
)
# list of services that just use a token
SERVICES_WITH_TOKEN = ('ServiceInstapush',)

# list of services that require the auth (or not) of the service and are self hosted
SERVICES_HOSTED_WITH_AUTH = ('ServiceMastodon', 'ServiceWallabag',)
Expand Down
12 changes: 8 additions & 4 deletions django_th/views_userservices.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.core.urlresolvers import reverse_lazy, reverse
from django.http import HttpResponseRedirect
from django.http import HttpResponseRedirect, Http404
from django.shortcuts import redirect, get_object_or_404
from django.utils.translation import ugettext_lazy as _
from django.utils.decorators import method_decorator
Expand Down Expand Up @@ -93,9 +93,13 @@ class UserServiceCreateView(CreateView):

def get_context_data(self, **kwargs):
context = super(UserServiceCreateView, self).get_context_data(**kwargs)
context['service_name_alone'] = self.kwargs.get('service_name').rsplit(
'Service')[1]
context['service_name'] = self.kwargs.get('service_name')
service_name = self.kwargs.get('service_name')
services = settings.SERVICES_AUTH + settings.SERVICES_HOSTED_WITH_AUTH + \
settings.SERVICES_NEUTRAL + settings.SERVICES_WITH_TOKEN
if service_name not in services:
raise Http404("Service does not exist")
context['service_name_alone'] = service_name.rsplit('Service')[1]
context['service_name'] = service_name

context['SERVICES_AUTH'] = settings.SERVICES_AUTH
context['SERVICES_HOSTED_WITH_AUTH'] = \
Expand Down

0 comments on commit 098fadb

Please sign in to comment.