Example #1
0
 def test_render_internal_ip(self):
     req = HttpRequest()
     req.META['REMOTE_ADDR'] = '1.1.1.1'
     context = Context({'request': req})
     r = IntercomNode().render(context)
     self.assertTrue(r.startswith('<!-- Intercom disabled on internal IP address'), r)
     self.assertTrue(r.endswith('-->'), r)
 def test_render_internal_ip(self):
     req = HttpRequest()
     req.META['REMOTE_ADDR'] = '1.1.1.1'
     context = Context({'request': req})
     r = IntercomNode().render(context)
     self.assertTrue(r.startswith('<!-- Intercom disabled on internal IP address'), r)
     self.assertTrue(r.endswith('-->'), r)
 def test_custom(self):
     r = IntercomNode().render(
         Context({
             'intercom_var1': 'val1',
             'intercom_var2': 'val2'
         }))
     self.assertTrue('var1": "val1", "var2": "val2"' in r)
 def test_no_identify_when_explicit_name(self):
     r = IntercomNode().render(
         Context({
             'intercom_name': 'explicit',
             'user': User(username='******'),
         }))
     self.assertTrue('"name": "explicit"' in r, r)
 def test_user_hash__without_user_details(self):
     """
     No `user_hash` without `user_id` or `email`.
     """
     attrs = IntercomNode()._get_custom_attrs(Context())
     self.assertEqual({
         'created_at': None,
     }, attrs)
Example #6
0
 def test_identify_name_and_email(self):
     r = IntercomNode().render(Context({
             'user': User(username='******',
             first_name='Firstname',
             last_name='Lastname',
             email="*****@*****.**")
     }))
     self.assertTrue('"email": "*****@*****.**", "name": "Firstname Lastname"' in r)
Example #7
0
 def test_identify_name_email_and_created_at(self):
     now = datetime.datetime(2014, 4, 9, 15, 15, 0)
     r = IntercomNode().render(Context({'user': User(username='******',
             first_name='Firstname', last_name='Lastname',
             email="*****@*****.**", date_joined=now)}))
     self.assertTrue(
         """window.intercomSettings = {"app_id": "1234567890abcdef0123456789", "created_at": 1397074500, "email": "*****@*****.**", "name": "Firstname Lastname"};"""\
         in r
     )
Example #8
0
 def test_user_hash__with_explicit_email(self):
     """
     'user_hash' of context-provided `email`.
     """
     attrs = IntercomNode()._get_custom_attrs(Context({
         'intercom_email': '*****@*****.**',
     }))
     self.assertEqual({
         'created_at': None,
         'email': '*****@*****.**',
         # HMAC for email:
         'user_hash': '49e43229ee99dca2565241719b8341b04e71dd4de0628f991b5bea30a526e153',
     }, attrs)
Example #9
0
 def test_identify_name_email_and_created_at(self):
     now = datetime.datetime(2014, 4, 9, 15, 15, 0)
     r = IntercomNode().render(Context({
         'user': User(
             username='******',
             first_name='Firstname',
             last_name='Lastname',
             email="*****@*****.**",
             date_joined=now),
     }))
     self.assertTrue('window.intercomSettings = {'
                     '"app_id": "abc123xyz", "created_at": 1397074500, '
                     '"email": "*****@*****.**", "name": "Firstname Lastname"'
                     '};' in r)
 def test_user_hash__with_user(self):
     """
     'user_hash' of default `user_id`.
     """
     user = User.objects.create(email='*****@*****.**', )  # type: User
     attrs = IntercomNode()._get_custom_attrs(Context({'user': user}))
     self.assertEqual(
         {
             'created_at': int(user.date_joined.timestamp()),
             'email': '*****@*****.**',
             'name': '',
             'user_hash': intercom_user_hash(str(user.pk)),
             'user_id': user.pk,
         }, attrs)
Example #11
0
 def test_user_hash__with_explicit_user_id(self):
     """
     'user_hash' of context-provided `user_id`.
     """
     attrs = IntercomNode()._get_custom_attrs(Context({
         'intercom_email': '*****@*****.**',
         'intercom_user_id': '5',
     }))
     self.assertEqual({
         'created_at': None,
         'email': '*****@*****.**',
         # HMAC for user_id:
         'user_hash': 'd3123a7052b42272d9b520235008c248a5aff3221cc0c530b754702ad91ab102',
         'user_id': '5',
     }, attrs)
 def test_identify_name_email_and_created_at(self):
     now = datetime.datetime(2014, 4, 9, 15, 15, 0)
     user = User.objects.create(
         username='******',
         first_name='Firstname',
         last_name='Lastname',
         email="*****@*****.**",
         date_joined=now,
     )
     r = IntercomNode().render(Context({
         'user': user,
     }))
     assert (
         'window.intercomSettings = {"app_id": "abc123xyz", "created_at": 1397074500, '
         f'"email": "*****@*****.**", "name": "Firstname Lastname", "user_id": {user.pk}}};'
     ) in r
    def test_node(self):
        now = datetime.datetime(2014, 4, 9, 15, 15, 0)
        user = User.objects.create(
            username='******',
            first_name='Firstname',
            last_name='Lastname',
            email="*****@*****.**",
            date_joined=now,
        )
        rendered_tag = IntercomNode().render(Context({'user': user}))
        # Because the json isn't predictably ordered, we can't just test the whole thing verbatim.
        self.assertEqual("""
<script id="IntercomSettingsScriptTag">
  window.intercomSettings = {"app_id": "abc123xyz", "created_at": 1397074500, "email": "*****@*****.**", "name": "Firstname Lastname", "user_id": %(user_id)s};
</script>
<script>(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){ic('reattach_activator');ic('update',intercomSettings);}else{var d=document;var i=function(){i.c(arguments)};i.q=[];i.c=function(args){i.q.push(args)};w.Intercom=i;function l(){var s=d.createElement('script');s.type='text/javascript';s.async=true;s.src='https://static.intercomcdn.com/intercom.v1.js';var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);}if(w.attachEvent){w.attachEvent('onload',l);}else{w.addEventListener('load',l,false);}}})()</script>
""" % {'user_id': user.pk}, rendered_tag)  # noqa
 def test_identify_name_email_and_created_at(self):
     now = datetime.datetime(2014, 4, 9, 15, 15, 0)
     user = User.objects.create(
         username='******',
         first_name='Firstname',
         last_name='Lastname',
         email="*****@*****.**",
         date_joined=now,
     )
     r = IntercomNode().render(Context({
         'user': user,
     }))
     self.assertTrue(
         'window.intercomSettings = {'
         # 1397074500, '
         '"app_id": "abc123xyz", "created_at": %(ts)s, '
         '"email": "*****@*****.**", "name": "Firstname Lastname", '
         '"user_id": %(user_id)s'
         '};' % {
             'user_id': user.pk,
             'ts': int(now.timestamp())
         } in r,
         msg=r)
 def test_identify_username_no_email(self):
     r = IntercomNode().render(Context({'user': User(username='******')}))
     self.assertTrue('"name": "test"' in r, r)
 def test_disable_for_anonymous_users(self):
     r = IntercomNode().render(Context({'user': AnonymousUser()}))
     self.assertTrue(
         r.startswith('<!-- Intercom disabled on internal IP address'), r)
 def test_disable_for_anonymous_users(self):
     r = IntercomNode().render(Context({'user': AnonymousUser()}))
     self.assertTrue(r.startswith('<!-- Intercom disabled on internal IP address'), r)
 def test_wrong_account_number(self):
     with pytest.raises(AnalyticalException):
         IntercomNode()
 def test_no_identify_when_explicit_email(self):
     r = IntercomNode().render(Context({
         'intercom_email': 'explicit',
         'user': User(username='******'),
     }))
     assert '"email": "explicit"' in r, r