def test_update_user_with_invalid_request(self, LOGGER_error_mock,
                                              resquests_post_mock,
                                              COLAB_APPS_mock):
        resquests_post_mock.side_effect = Exception()

        COLAB_APPS_mock.return_value = {
            'colab_noosfero': {
                'private_token': "TestToken",
                'upstream': "https://testeurl.com/",
                'verify_ssl': True,
            },
        }

        user = Mock(
            email="*****@*****.**",
            username="******",
            get_full_name=lambda: "Full Name Test"
        )

        NoosferoUser.objects.get_or_create(id=1, username="******")

        update_basic_info_noosfero_user(None, user=user)

        error_msg = u'Error trying to update "{}"\'s '
        error_msg += u'basic info on Noosfero. Reason: {}'
        reason = 'Request to API failed ({})'.format(Exception())

        error_msg = error_msg.format(user.username, reason)
        LOGGER_error_mock.assert_called_with(error_msg)
    def test_update_user_with_invalid_remote_user(self, LOGGER_error_mock,
                                                  resquests_post_mock,
                                                  COLAB_APPS_mock):

        json_resulted = self.return_json
        resquests_post_mock.return_value = Mock(
            status_code=500,
            json=self.return_json
        )

        COLAB_APPS_mock.return_value = {
            'colab_noosfero': {
                'upstream': "https://testeurl.com/",
                'verify_ssl': True,
            },
        }

        user = Mock(
            email="*****@*****.**",
            username="******",
            get_full_name=lambda: "Full Name Test"
        )

        NoosferoUser.objects.get_or_create(id=1, username="******")

        update_basic_info_noosfero_user(None, user=user)

        error_msg = u'Error trying to update "{}"\'s '
        error_msg += u'basic info on Noosfero. Reason: {}. JSON={}'
        error_msg = error_msg.format(user.username, 'Unknown', json_resulted())
        LOGGER_error_mock.assert_called_with(error_msg)
    def test_update_user_with_valid_remote_user(self, LOGGER_info_mock,
                                                resquests_post_mock,
                                                COLAB_APPS_mock):

        resquests_post_mock.return_value = Mock(
            status_code=201,
            json=lambda: {'message': 'Unauthorized'}
        )

        COLAB_APPS_mock.return_value = {
            'colab_noosfero': {
                'private_token': "TestToken",
                'upstream': "https://testeurl.com/",
                'verify_ssl': True,
            },
        }

        user = Mock(
            email="*****@*****.**",
            username="******",
            get_full_name=lambda: "Full Name Test"
        )
        NoosferoUser.objects.get_or_create(id=1, username="******")

        update_basic_info_noosfero_user(None, user=user, password="******")

        msg = ('Noosfero user\'s basic info "%s" updated')
        LOGGER_info_mock.assert_called_with(msg, user.username)