[#8212] handle case where github event can have a null user
diff --git a/ForgeImporters/forgeimporters/github/tracker.py b/ForgeImporters/forgeimporters/github/tracker.py
index cbc017d..1f8d186 100644
--- a/ForgeImporters/forgeimporters/github/tracker.py
+++ b/ForgeImporters/forgeimporters/github/tracker.py
@@ -200,16 +200,17 @@
def process_events(self, extractor, ticket, issue):
for event in extractor.iter_events(issue):
prefix = text = ''
+ actor = event['actor']
if event['event'] in ('reopened', 'closed'):
prefix = '*Ticket changed by:* {}\n\n'.format(
- self.get_user_link(event['actor']['login']))
+ self.get_user_link(actor['login'] if actor else 'ghost'))
if event['event'] == 'reopened':
text = '- **status**: closed --> open'
elif event['event'] == 'closed':
text = '- **status**: open --> closed'
elif event['event'] == 'assigned':
text = '- **assigned_to**: {}'.format(
- self.get_user_link(event['actor']['login']))
+ self.get_user_link(actor['login'] if actor else 'ghost'))
text = prefix + text
if not text:
diff --git a/ForgeImporters/forgeimporters/tests/github/test_tracker.py b/ForgeImporters/forgeimporters/tests/github/test_tracker.py
index d37f901..da6460b 100644
--- a/ForgeImporters/forgeimporters/tests/github/test_tracker.py
+++ b/ForgeImporters/forgeimporters/tests/github/test_tracker.py
@@ -200,6 +200,11 @@
'created_at': '2013-09-12T10:14:00Z',
'event': 'assigned',
},
+ {
+ 'actor': None, # aka "ghost" user, when an account is removed from github
+ 'created_at': '2013-09-12T10:14:00Z',
+ 'event': 'assigned',
+ },
]
importer = tracker.GitHubTrackerImporter()
importer.process_events(extractor, ticket, issue)
@@ -218,6 +223,10 @@
text='- **assigned_to**: [luke](https://github.com/luke)',
timestamp=datetime(2013, 9, 12, 10, 14, 0),
ignore_security=True))
+ self.assertEqual(args[3], mock.call(
+ text='- **assigned_to**: [ghost](https://github.com/ghost)',
+ timestamp=datetime(2013, 9, 12, 10, 14, 0),
+ ignore_security=True))
def test_github_markdown_converted_in_description(self):
ticket = mock.Mock()