caldav: add SEQUENCE field when missing on event update (#88417) #500
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/88417-caldav-SEQUENCE-handling"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
WIP: wip/88417-caldav-SEQUENCE-handlingto WIP: caldav: add SEQUENCE field when missing on event update (#88417)20a214bbec
to96a1caf4aa
96a1caf4aa
tocc19f8db39
cc19f8db39
to6fc0551d86
WIP: caldav: add SEQUENCE field when missing on event update (#88417)to caldav: add SEQUENCE field when missing on event update (#88417)caldav: add SEQUENCE field when missing on event update (#88417)to WIP: caldav: add SEQUENCE field when missing on event update (#88417)6fc0551d86
tofd153460e3
WIP: caldav: add SEQUENCE field when missing on event update (#88417)to caldav: add SEQUENCE field when missing on event update (#88417)fd153460e3
to4db7ad5694
@ -446,0 +451,4 @@
def test_ics(request):
calendar = icalendar.Calendar.from_ical(request.body.decode('utf-8'))
vevent = calendar.walk('VEVENT')[0]
assert vevent['SEQUENCE'] == expt_sequence
Si le but ici c'est de vérifier que le connecteur envoie bien le bon numéro, pourquoi le test ne va pas plus haut dans test_caldav_event_update_ok qui il me semble contient la partie vérification de ce qui est envoyé ?
C'est pas exactement ça :
test_caldav_event_update_ok
) mock la lib caldav. On vérifie que la modification de l'objeticalendar
fonctionne : on vérifie les arguments envoyés àcaldav...save()
, mais ça ne nous permet pas de vérifier ce que caldav envoie réelementtest_caldav_event_update_ok_nomock
) utiliseresponses
pour récupérer l'ICS envoyé finalement par caldav (c'est donc ici qu'on peut vérifier si caldav incrémente bien automatiquement l'objet icalendar qu'on file en argument àcaldav...save()
)Et, en réalité, le test
test_caldav_event_update_ok_nomock
a été implémenté car, dans certain cas, les modifications effectués sur l'instanceicalendar
provoque une erreur dans la méthodecaldav...save()
Oui dac et dans notre cas l'incrémentation est fait par caldav. En tout cas je trouve cette manière de tester préférable aux mocks, sûrement qu'on pourrait nettoyer un peu tout ça, mais ça serait pour un autre ticket :)
Par contre toujours à propos de cette ligne, plutôt qu'un callback il faudrait effectuer la vérification à partir de
responses.calls[1].request
Ouaip, je suis d'accord ! De base j'avais pas prévu de mettre les doigts dans les échanges entre la lib et EGW, mais comme j'ai finis avec du tcpdump j'étais plus à ça pret :P Après il faudra voir, je ne suis pas certain que la création soit aussi simple à mocker avec
responses
. Je créé le ticket à ce propos !Ah ben oui ! Je suis bête, je me suis laissé emporté par les derniers patch que j'avais fais pour remplacer httmock (ou l'utilisation des callbacks est généralisée). Merci !
4db7ad5694
to3834a6b136
3834a6b136
to12592397d8
12592397d8
to02cda13d92
@ -423,2 +436,3 @@
@pytest.mark.parametrize('sequence,expt_sequence', [('', 1), ('SEQUENCE:41', 42)])
@responses.activate
def test_caldav_event_update_ok_nomock(app, caldav_conn):
def test_caldav_event_update_ok_nomock(app, caldav_conn, sequence, expt_sequence, event_update):
C'est un peu dommage de passer par la machinerie de paramétrisation pour deux valeurs, pour tester la même chose on pourrait juste faire une deuxième requête après la première et vérifier que la séquence passe à 2 :
bonus ça permet de se passer du %(vevent_extra)s dans l'ICS. Tu en penses quoi ?
Ca m'ennuie un peu dans le sens ou ça serait tester qu'on ne respecte pas la RFC .
L'idée serait de reconfiguré
responses
pour que le prochainGET
renvoie l'ics qu'on a envoyé lors de notrePUT
. Hors, à ce moment, le test serait : est-ce qu'on a bien incrémenté SEQUENCE alors qu'on a apporté aucune modification à l'évènement .Ca me donne presque envie de vérifier si la lib est bien foutu et gère ce cas ou il ne faudrait pas toucher à SEQUENCE ;)
Si ce n'est que ça alors envoyer une modif genre
{'DTSTART': '2020-02-21'}
au lieu deevent_update
, sans toucher au reste du code que je suggère(mais ça peut aussi pointer que cette histoire de vérif de sequence vivrait mieux dans son propre test)
Yep, je pense que c'est plutôt ça le problème en fait :) Au final ce test avait été écrit pour une raison totalement différente et se retrouve à tester 50 choses en même temps, c'est pas ouf !
02cda13d92
to923125e786