Example #1
0
def receive_task(payload, guid=None):
    """Process received payload."""
    profile = None
    if guid:
        try:
            profile = Profile.objects.get(guid=guid, user__isnull=False)
        except Profile.DoesNotExist:
            logger.warning("No local profile found with guid")
            return
    try:
        sender, protocol_name, entities = handle_receive(
            payload, user=profile, sender_key_fetcher=sender_key_fetcher)
        logger.debug("sender=%s, protocol_name=%s, entities=%s" %
                     (sender, protocol_name, entities))
    except NoSuitableProtocolFoundError:
        logger.warning("No suitable protocol found for payload")
        return
    except NoSenderKeyFoundError:
        logger.warning(
            "Could not find a public key for the sender - skipping payload")
        return
    except AssertionError:
        logger.warning("Signature validation failed - skipping payload")
        return
    if not entities:
        logger.warning("No entities in payload")
        return
    sender_profile = get_sender_profile(sender)
    if not sender_profile:
        return
    process_entities(entities, profile=sender_profile)
Example #2
0
 def test_fetches_remote_profile_if_not_found(self, mock_retrieve):
     mock_retrieve.return_value = entities.ProfileFactory(
         name="foobar", raw_content="barfoo", public_key="xyz",
         id="https:/example.com/foo/bar",
     )
     sender_profile = get_sender_profile("https:/example.com/foo/bar")
     assert isinstance(sender_profile, Profile)
     assert sender_profile.name == "foobar"
     assert sender_profile.visibility == Visibility.PUBLIC
     assert sender_profile.rsa_public_key == "xyz"
     assert not sender_profile.rsa_private_key
Example #3
0
 def test_fetches_remote_profile_if_not_found(self, mock_retrieve):
     mock_retrieve.return_value = entities.ProfileFactory(
         name="foobar",
         raw_content="barfoo",
         public_key="xyz",
         id="https:/example.com/foo/bar",
     )
     sender_profile = get_sender_profile("https:/example.com/foo/bar")
     assert isinstance(sender_profile, Profile)
     assert sender_profile.name == "foobar"
     assert sender_profile.visibility == Visibility.PUBLIC
     assert sender_profile.rsa_public_key == "xyz"
     assert not sender_profile.rsa_private_key
Example #4
0
 def test_fetches_remote_profile_if_not_found(self, mock_retrieve):
     mock_retrieve.return_value = entities.ProfileFactory(
         name="foobar", raw_content="barfoo", public_key="xyz",
         handle="*****@*****.**", guid="123456"
     )
     sender_profile = get_sender_profile("*****@*****.**")
     assert isinstance(sender_profile, Profile)
     assert sender_profile.name == "foobar"
     assert sender_profile.guid == "123456"
     assert sender_profile.handle == "*****@*****.**"
     assert sender_profile.visibility == Visibility.LIMITED
     assert sender_profile.rsa_public_key == "xyz"
     assert not sender_profile.rsa_private_key
Example #5
0
 def test_cleans_text_fields_in_profile(self, mock_retrieve):
     mock_retrieve.return_value = entities.ProfileFactory(
         name="<script>alert('yup');</script>", raw_content="<script>alert('yup');</script>",
         public_key="<script>alert('yup');</script>",
         id="https:/example.com/foo/bar",
         image_urls={
             "small": "<script>alert('yup');</script>",
             "medium": "<script>alert('yup');</script>",
             "large": "<script>alert('yup');</script>",
         },
         location="<script>alert('yup');</script>",
     )
     sender_profile = get_sender_profile("https:/example.com/foo/bar")
     assert isinstance(sender_profile, Profile)
     assert sender_profile.name == "alert('yup');"
     assert sender_profile.rsa_public_key == "alert('yup');"
     assert sender_profile.image_url_small == "alert('yup');"
     assert sender_profile.image_url_medium == "alert('yup');"
     assert sender_profile.image_url_large == "alert('yup');"
     assert sender_profile.location == "alert('yup');"
Example #6
0
 def test_cleans_text_fields_in_profile(self, mock_retrieve):
     mock_retrieve.return_value = entities.ProfileFactory(
         name="<script>alert('yup');</script>",
         raw_content="<script>alert('yup');</script>",
         public_key="<script>alert('yup');</script>",
         id="https:/example.com/foo/bar",
         image_urls={
             "small": "<script>alert('yup');</script>",
             "medium": "<script>alert('yup');</script>",
             "large": "<script>alert('yup');</script>",
         },
         location="<script>alert('yup');</script>",
     )
     sender_profile = get_sender_profile("https:/example.com/foo/bar")
     assert isinstance(sender_profile, Profile)
     assert sender_profile.name == "alert('yup');"
     assert sender_profile.rsa_public_key == "alert('yup');"
     assert sender_profile.image_url_small == "alert('yup');"
     assert sender_profile.image_url_medium == "alert('yup');"
     assert sender_profile.image_url_large == "alert('yup');"
     assert sender_profile.location == "alert('yup');"
Example #7
0
 def test_returns_none_if_no_remote_profile_found(self, mock_retrieve):
     mock_retrieve.return_value = None
     assert not get_sender_profile("*****@*****.**")
Example #8
0
 def test_returns_none_on_existing_local_profile(self):
     self.assertIsNone(get_sender_profile(self.profile.handle))
Example #9
0
 def test_returns_existing_profile(self):
     self.assertEqual(get_sender_profile(self.remote_profile.handle),
                      self.remote_profile)
Example #10
0
 def test_returns_none_if_no_remote_profile_found(self, mock_retrieve):
     mock_retrieve.return_value = None
     assert not get_sender_profile("https:/example.com/foo/bar")
Example #11
0
 def test_returns_none_on_existing_local_profile(self):
     self.assertIsNone(get_sender_profile(self.profile.fid))
Example #12
0
 def test_returns_existing_profile(self):
     self.assertEqual(get_sender_profile(self.remote_profile.fid), self.remote_profile)
Example #13
0
 def test_returns_existing_profile(self):
     profile = ProfileFactory(handle="*****@*****.**")
     assert get_sender_profile("*****@*****.**") == profile