Projet

Général

Profil

0001-teamnet-axel-return-400-when-nameid-is-missing-23607.patch

Josué Kouka, 04 mai 2018 15:55

Télécharger (3,14 ko)

Voir les différences:

Subject: [PATCH] teamnet axel: return 400 when nameid is missing (#23607)

 passerelle/contrib/teamnet_axel/views.py | 19 ++++++++++---------
 tests/test_teamnet_axel.py               |  7 ++++++-
 2 files changed, 16 insertions(+), 10 deletions(-)
passerelle/contrib/teamnet_axel/views.py
22 22
from django.http import HttpResponse, HttpResponseNotFound
23 23

  
24 24
from passerelle import utils
25
from passerelle.views import WrongParameter
25 26

  
26 27
from .models import TeamnetAxel, Link, APIError
27 28
from . import soap
28 29

  
29 30

  
31
def get_name_id(request):
32
    if 'nameid' not in request.GET:
33
        raise WrongParameter(['nameid'], [])
34
    return request.GET['nameid']
35

  
36

  
30 37
class DetailView(GenericDetailView):
31 38
    model = TeamnetAxel
32 39

  
......
61 68

  
62 69
class LinkView(DetailView):
63 70
    def get_data(self, request, *args, **kwargs):
64
        nameid = request.GET.get('NameID')
65
        if not nameid:
66
            raise APIError('NameID required')
71
        nameid = get_name_id(request)
67 72
        login = request.GET.get('login')
68 73
        pwd = request.GET.get('password')
69 74
        user = self.object.auth(login, pwd)
......
81 86

  
82 87
class UnlinkView(DetailView):
83 88
    def get_data(self, request, *args, **kwargs):
84
        nameid = request.GET.get('NameID')
85
        if not nameid:
86
            raise APIError('NameID required')
89
        nameid = get_name_id(request)
87 90
        logins = [v['login'] for v in Link.objects.filter(resource=self.object, nameid=nameid).values('login')]
88 91
        Link.objects.filter(resource=self.object, nameid=nameid).delete()
89 92
        if logins:
......
94 97

  
95 98
class FamilyView(DetailView):
96 99
    def get_family_id(self, request):
97
        nameid = request.GET.get('NameID')
98
        if not nameid:
99
            raise APIError('NameID required')
100
        nameid = get_name_id(request)
100 101
        links = Link.objects.filter(resource=self.object, nameid=nameid)
101 102
        if len(links) > 1:
102 103
            raise APIError('multiple links')
tests/test_teamnet_axel.py
1 1
import mock
2 2
import pytest
3
from requests.exceptions import ConnectionError
4 3

  
5 4
import utils
6 5

  
......
21 20
        resp = app.get('/teamnet-axel/test/family/', params={'nameid': nameid})
22 21
        assert resp.json['err'] == 1
23 22
        assert resp.json['err_desc'] == 'authentication failed'
23

  
24

  
25
def test_missing_name_id(app, setup):
26
    resp = app.get('/teamnet-axel/test/family/', params={}, status=400)
27
    assert resp.json['err'] == 1
28
    assert resp.json['err_desc'] == "missing parameters: 'nameid'."
24
-