def test_send_passwords(self):
        preferences_link = 'http://localhost/preferences'
        backups_link = 'http://localhost/backups'
        user_id = self.db.users.insert({
                'first_name': 'John',
                'last_name': 'Doe',
                'email': '*****@*****.**',
                }, safe=True)
        user = self.db.users.find_one({'_id': user_id})

        request = DummyRequest()
        request.db = self.db
        mailer = get_mailer(request)

        self.assertFalse(send_passwords(request, user,
                                        preferences_link, backups_link))
        self.assertEqual(len(mailer.outbox), 0)

        # add some passwords
        self.db.passwords.insert({
                'owner': user_id,
                'password': '******',
                })
        self.db.passwords.insert({
                'owner': user_id,
                'password': '******',
                })

        request = DummyRequest()
        request.db = self.db
        request.date_service = FakeDateService(request)
        mailer = get_mailer(request)

        os.environ['YITH_FAKE_DATE'] = '2012-1-10'

        self.assertTrue(send_passwords(request, user,
                                       preferences_link, backups_link))
        self.assertEqual(len(mailer.outbox), 1)
        message = mailer.outbox[0]
        self.assertEqual(message.subject, "Your Yith Library's passwords")
        self.assertEqual(message.recipients, ['*****@*****.**'])
        self.assertTrue(preferences_link in message.body)
        self.assertTrue(backups_link in message.body)
        self.assertEqual(len(message.attachments), 1)
        attachment = message.attachments[0]
        self.assertEqual(attachment.content_type, 'application/yith')
        self.assertEqual(attachment.filename,
                         'yith-library-backup-2012-01-10.yith')

        del os.environ['YITH_FAKE_DATE']
Пример #2
0
def send_backups_via_email():
    result = setup_simple_command(
        "send_backups_via_email",
        "Send a password backup to users.",
    )
    if isinstance(result, int):
        return result
    else:
        settings, closer, env, args = result

    try:
        request = env['request']

        if len(args) == 0:
            now = datetime.datetime.utcnow()
            if now.day == 1:
                user_iterator = get_all_users(request.db, now)
            else:
                user_iterator = tuple()
        else:
            user_iterator = get_selected_users(request.db, *args)

        tx = transaction.begin()

        public_url_root = settings['public_url_root']
        preferences_link = urlparse.urljoin(
            public_url_root,
            request.route_path('user_preferences'))
        backups_link = urlparse.urljoin(
            public_url_root,
            request.route_path('backups_index'))

        for user in user_iterator:
            if user['email']:
                sent = send_passwords(request, user,
                                      preferences_link, backups_link)
                if sent:
                    safe_print('Passwords sent to %s' %
                               get_user_display_name(user))

        tx.commit()

    finally:
        closer()
Пример #3
0
    def test_send_passwords_user_has_some_passwords(self):
        preferences_link = 'http://localhost/preferences'
        backups_link = 'http://localhost/backups'

        user = User(first_name='John',
                    last_name='Doe',
                    email='*****@*****.**')

        # add some passwords
        password1 = Password(service='testing1',
                             secret='s3cr3t1',
                             user=user)
        password2 = Password(service='testing2',
                             secret='s3cr3t2',
                             user=user)

        with transaction.manager:
            Session.add(user)
            Session.add(password1)
            Session.add(password2)
            Session.flush()
            user_id = user.id

        user = Session.query(User).filter(User.id == user_id).one()

        request = DummyRequest()
        mailer = get_mailer(request)

        with freeze_time('2012-01-10'):
            self.assertTrue(send_passwords(request, user,
                                           preferences_link, backups_link))
            self.assertEqual(len(mailer.outbox), 1)
            message = mailer.outbox[0]
            self.assertEqual(message.subject, "Your Yith Library's passwords")
            self.assertEqual(message.recipients, ['*****@*****.**'])
            self.assertTrue(preferences_link in message.body)
            self.assertTrue(backups_link in message.body)
            self.assertEqual(len(message.attachments), 1)
            attachment = message.attachments[0]
            self.assertEqual(attachment.content_type, 'application/yith')
            self.assertEqual(attachment.filename,
                             'yith-library-backup-2012-01-10.yith')
Пример #4
0
def send_backups_via_email():
    result = setup_simple_command(
        "send_backups_via_email",
        "Send a password backup to users.",
    )
    if isinstance(result, int):
        return result
    else:
        settings, closer, env, args = result

    try:
        request = env['request']

        if len(args) == 0:
            now = datetime.datetime.utcnow()
            if now.day == 1:
                user_iterator = get_all_users(now)
            else:
                user_iterator = tuple()
        else:
            user_iterator = get_selected_users(*args)

        tx = transaction.begin()

        public_url_root = settings['public_url_root']
        preferences_link = urlparse.urljoin(
            public_url_root, request.route_path('user_preferences'))
        backups_link = urlparse.urljoin(public_url_root,
                                        request.route_path('backups_index'))

        for user in user_iterator:
            if user.email:
                sent = send_passwords(request, user, preferences_link,
                                      backups_link)
                if sent:
                    safe_print('Passwords sent to %s' %
                               get_user_display_name(user))

        tx.commit()

    finally:
        closer()
Пример #5
0
    def test_send_passwords_user_has_no_passwords(self):
        preferences_link = 'http://localhost/preferences'
        backups_link = 'http://localhost/backups'

        user = User(first_name='John',
                    last_name='Doe',
                    email='*****@*****.**')

        with transaction.manager:
            Session.add(user)
            Session.flush()
            user_id = user.id

        user = Session.query(User).filter(User.id == user_id).one()

        request = DummyRequest()
        mailer = get_mailer(request)

        self.assertFalse(send_passwords(request, user,
                                        preferences_link, backups_link))
        self.assertEqual(len(mailer.outbox), 0)
Пример #6
0
    def test_send_passwords_user_has_no_passwords(self):
        preferences_link = 'http://localhost/preferences'
        backups_link = 'http://localhost/backups'

        user = User(first_name='John',
                    last_name='Doe',
                    email='*****@*****.**')

        with transaction.manager:
            Session.add(user)
            Session.flush()
            user_id = user.id

        user = Session.query(User).filter(User.id == user_id).one()

        request = DummyRequest()
        mailer = get_mailer(request)

        self.assertFalse(
            send_passwords(request, user, preferences_link, backups_link))
        self.assertEqual(len(mailer.outbox), 0)
Пример #7
0
    def test_send_passwords_user_has_some_passwords(self):
        preferences_link = 'http://localhost/preferences'
        backups_link = 'http://localhost/backups'

        user = User(first_name='John',
                    last_name='Doe',
                    email='*****@*****.**')

        # add some passwords
        password1 = Password(service='testing1', secret='s3cr3t1', user=user)
        password2 = Password(service='testing2', secret='s3cr3t2', user=user)

        with transaction.manager:
            Session.add(user)
            Session.add(password1)
            Session.add(password2)
            Session.flush()
            user_id = user.id

        user = Session.query(User).filter(User.id == user_id).one()

        request = DummyRequest()
        mailer = get_mailer(request)

        with freeze_time('2012-01-10'):
            self.assertTrue(
                send_passwords(request, user, preferences_link, backups_link))
            self.assertEqual(len(mailer.outbox), 1)
            message = mailer.outbox[0]
            self.assertEqual(message.subject, "Your Yith Library's passwords")
            self.assertEqual(message.recipients, ['*****@*****.**'])
            self.assertTrue(preferences_link in message.body)
            self.assertTrue(backups_link in message.body)
            self.assertEqual(len(message.attachments), 1)
            attachment = message.attachments[0]
            self.assertEqual(attachment.content_type, 'application/yith')
            self.assertEqual(attachment.filename,
                             'yith-library-backup-2012-01-10.yith')