eiffel-community / eiffel-community/eiffel-pythonlib

`EiffelBaseEvent.rebuild` mutate the input json object

Ouverte
#44 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
8
Forks
12
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

### Description
Can be reproduced with below code, the `original_event` is mutated after passing in to `rebuild` method.

```python
import eiffellib.events
from pprint import pprint

original_event = {
'data': {'customData': [{'key': 'name', 'value': 'TCF4'},
{'key': 'iteration', 'value': 4}],
'outcome': {'conclusion': 'SUCCESSFUL', 'verdict': 'PASSED'}},
'links': [{'target': 'ea44d3ed-0c22-4833-8bc4-139a17fe93b0',
'type': 'TEST_CASE_EXECUTION'}],
'meta': {'id': '39420db3-69fa-4786-a521-420357e5665d',
'source': {'domainId': 'example.domain'},
'time': 1533635195805,
'type': 'EiffelTestCaseFinishedEvent',
'version': '1.0.0'}
}

meta_type = original_event.get("meta", {}).get("type")
new_event = getattr(eiffellib.events, meta_type)(original_event.get("meta", {}).get("version"))
new_event.rebuild(original_event) # FIXME: rebuild method mutate the input object!

pprint(original_event)
```

The print output is as below. The propertities in `meta` are removed except the `source`
```
{'data': {'customData': [{'key': 'name', 'value': 'TCF4'},
{'key': 'iteration', 'value': 4}],
'outcome': {'conclusion': 'SUCCESSFUL', 'verdict': 'PASSED'}},
'links': [{'target': 'ea44d3ed-0c22-4833-8bc4-139a17fe93b0',
'type': 'TEST_CASE_EXECUTION'}],
'meta': {'source': {'domainId': 'example.domain'}}}
```

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez au point d’entrée EiffelBaseEvent.rebuild et exécutez la reproduction présentée dans l’issue afin d’observer quels champs sont supprimés de original_event. Suivez la manière dont rebuild traite le dictionnaire d’entrée ; le travail est terminé lorsque la reconstruction préserve le contenu de original_event tout en conservant le comportement attendu de l’événement.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
backend-api-design
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.