[Collect] Question : quelle librairie utiliser pour "mocker" request


#1

J’ai essayé déjà :

  • nock : fonctionne avec request mais pas avec request-promise utilisé par Collect

  • mockery : fonctionne avec request-promise mais pas avec le Konnector qui étend ce dernier

Une suggestion ?


#2

@guenam Tout dépend de ce que tu veux faire avec. Si tu veux simplement stocker une suite de réponses à des url données, il y a replay qui est d’ailleurs déjà intégré à cozy-konnector-libs.

Si c’est pour du test unitaire, je n’ai essayé ni nock ou mockery mais, un petit détail, le connecteur n’étend pas request-promise: la fonction cozy-konnector-libs.request renvoie une instance de request-promise avec des options par défaut favorables à ce dont a besoin un connecteur. Donc il me semble que rien ne t’empêche de mocker le résultat d’un appel à cozy-konnector-libs.request() avec mockery, non?


#3

Il s’agit de contourner le limit rate qu’Amazon impose aux sign-in : très vite, ils envoient des 403. Du coup, j’ai récupéré et mis dans un fichier le html de la page des commandes que l’utilisateur a faites sur Amazon.

Je vais essayer replay, il me semble que c’est bien ce dont j’ai besoin.

Concernant mockery: effectivement, ça devrait marcher => j’ai une erreur qq part. Le truc, c’est que j’ai fait un test à part avec request et cheerio (ie sans konnector-libs) et j’arrive à faire marcher le scrapping des commandes…

=> j’essaie d’abord avec replay et te dis.

Merci pour ton retour super rapide !


#4

Replay fonctionne très bien. Et sans doute aussi mockery, car il s’est avéré entre temps que le pb était ailleurs : non pas un pb de limit rate, mais un pb d’authentification plus général.

Je vais continuer ce w-e à essayer de trouver comment faire pour se logger sur Amazon, mais cela s’avère bien plus complexe que celui de voyages-sncf par ex. C’est un open-id avec un jeu de redirection conditionnelle via un 302 (qui n’est en rien temporaire).

Je vais faire le tour des connecteurs existants pour chercher de l’inspiration.