[#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()