cartads cs: add endpoint to unsubscribe from dossier (#36692)
This commit is contained in:
parent
e153f5c6c8
commit
918e4b40cf
|
@ -1058,6 +1058,33 @@ class AbstractCartaDSCS(BaseResource):
|
|||
return {'err': 0, 'dossier_id': dossier.id, 'formdata_url': dossier.formdata_url}
|
||||
|
||||
|
||||
@endpoint(perm='can_access',
|
||||
description=_('Unsubscribe from dossier'),
|
||||
parameters={
|
||||
'name_id': {
|
||||
'description': _('UUID of requester'),
|
||||
'example_value': '3eb56fc'
|
||||
},
|
||||
'dossier_number': {
|
||||
'description': _('Dossier Number'),
|
||||
'example_value': 'PC 069 012 23 45678',
|
||||
},
|
||||
})
|
||||
def unsubscribe(self, request, name_id, dossier_number):
|
||||
try:
|
||||
dossier = CartaDSDossier.objects.get(cartads_numero_dossier=dossier_number)
|
||||
except CartaDSDossier.DoesNotExist:
|
||||
raise APIError('dossier does not exist')
|
||||
try:
|
||||
subscriber = CartaDSSubscriber.objects.get(name_id=name_id)
|
||||
except CartaDSSubscriber.DoesNotExist:
|
||||
raise APIError('subscriber does not exist')
|
||||
if subscriber not in dossier.subscribers.all():
|
||||
raise APIError('subscriber not subscribed to that dossier')
|
||||
dossier.subscribers.remove(subscriber)
|
||||
return {'err': 0, 'dossier_id': dossier.id}
|
||||
|
||||
|
||||
class CartaDSCS(AbstractCartaDSCS):
|
||||
category = _('Misc')
|
||||
class Meta:
|
||||
|
|
|
@ -616,3 +616,23 @@ def test_join(connector, app, cached_data):
|
|||
assert len(resp.json['data']) == 1
|
||||
resp = app.get('/cartads-cs/test/files?name_id=3456')
|
||||
assert len(resp.json['data']) == 1
|
||||
|
||||
|
||||
def test_unsubscribe(connector, app, cached_data):
|
||||
test_join(connector, app, cached_data)
|
||||
|
||||
with mock.patch('passerelle.apps.cartads_cs.models.CartaDSCS.soap_client') as client:
|
||||
client.return_value = mock.Mock(service=FakeService())
|
||||
resp = app.get('/cartads-cs/test/files?name_id=3456')
|
||||
assert len(resp.json['data']) == 1
|
||||
resp = app.get('/cartads-cs/test/unsubscribe?name_id=3456&dossier_number=123')
|
||||
resp = app.get('/cartads-cs/test/files?name_id=3456')
|
||||
assert len(resp.json['data']) == 0
|
||||
|
||||
# error cases
|
||||
resp = app.get('/cartads-cs/test/unsubscribe?name_id=3456&dossier_number=123')
|
||||
assert resp.json['err'] == 1
|
||||
resp = app.get('/cartads-cs/test/unsubscribe?name_id=4567&dossier_number=123')
|
||||
assert resp.json['err'] == 1
|
||||
resp = app.get('/cartads-cs/test/unsubscribe?name_id=4567&dossier_number=434')
|
||||
assert resp.json['err'] == 1
|
||||
|
|
Loading…
Reference in New Issue