Beispiel #1
0
 def test_adds_client_id_to_lookup_store(self):
     tracker = minimock.TraceTracker()
     minimock.mock('channel.ServerChannels.add_client_id', tracker=tracker)
     self.post('/_ah/channel/connected/', params={'from': 'client-id'})
     minimock.assert_same_trace(
         tracker,
         "Called channel.ServerChannels.add_client_id(u'client-id')")
 def setUp(self):
     self.options = build_config(["--minimal"],
                                 isolated=True,
                                 modules=antismash.get_all_modules())
     assert not nrps_pks.is_enabled(self.options)
     self.tracker = minimock.TraceTracker()
     minimock.mock("nrps_pks.run_on_record", tracker=self.tracker)
Beispiel #3
0
 def setUp(self):
     """
     Setup
     :return:
     """
     super(TestServer, self).setUp()
     self.tt = minimock.TraceTracker()
Beispiel #4
0
    def test_no_email_notify(self):
        topost = {
            'login_id': 'usersaved_noemailnotify',
            'email_address': '*****@*****.**',
            'user-submit-flag': 'submitted',
            'approved_permissions': None,
            'denied_permissions': None,
            'assigned_groups': None,
            'super_user': 1,
            'inactive_flag': False,
            'inactive_date': '10/11/2010',
            'name_first': 'test',
            'name_last': 'user'
        }

        # setup the mock objects so we can test the email getting sent out
        tt = minimock.TraceTracker()
        smtplib.SMTP = minimock.Mock('smtplib.SMTP', tracker=None)
        smtplib.SMTP.mock_returns = minimock.Mock('smtp_connection',
                                                  tracker=tt)

        req, r = self.c.post('users/add', data=topost, follow_redirects=True)
        assert r.status_code == 200, r.status
        assert b'User added' in r.data
        assert req.url.endswith('users/manage')

        assert len(tt.dump()) == 0
        minimock.restore()
Beispiel #5
0
 def test_make_server_spawn(self):
     """
     Check the spawn option for the backend that support it
     :return:
     """
     for backend in ['gevent', 'fastgevent', 'geventwebsocket', 'socketio']:
         self.tt = minimock.TraceTracker()
         self._check_make_server_spawn(backend)
         minimock.restore()
Beispiel #6
0
    def test_make_server(self):
        """
        Test all backends with default params
        :return:
        """

        # nose does not have great support for parameterized tests
        for backend in backends():
            self.tt = minimock.TraceTracker()
            self._check_make_server(backend)
            minimock.restore()
Beispiel #7
0
    def setUp(self):
        """
        Setup
        :return:
        """
        super(TestServer, self).setUp()
        configure_logger(logger, 'CRITICAL')

        self.tt = minimock.TraceTracker()
        try:
            self.old = socket.socket.bind
            socket.socket.bind = lambda x, y: None
        except AttributeError:
            self.old = None
Beispiel #8
0
 def setUp(self):
     super(SendLogLineTest, self).setUp()
     self.server = models.Server.create()
     models.User.create_user('1234', email='*****@*****.**')
     self.user = models.User.lookup(email='*****@*****.**')
     self.interesting_log_line = models.LogLine.create(
         self.server, self.INTERESTING_LOG_LINE, 'US/Central')
     self.uninteresting_log_line = models.LogLine.create(
         self.server, self.UNINTERESTING_LOG_LINE, 'US/Central')
     self.tracker = minimock.TraceTracker()
     minimock.mock('channel.ServerChannels.get_client_ids',
                   returns=['client_id'],
                   tracker=None)
     minimock.mock('channel.ServerChannels.send_message',
                   tracker=self.tracker)
Beispiel #9
0
 def test_sends_message_to_all_connected_clients(self):
     minimock.restore()
     self.tracker = minimock.TraceTracker()
     models.User.create_user('4321', email='*****@*****.**')
     user = models.User.lookup(email='*****@*****.**')
     client_id = '{0}.{1}.1234.5678'.format(self.server.key.id(),
                                            self.user.key.id())
     client_id2 = '{0}.{1}.1234.5678'.format(self.server.key.id(),
                                             user.key.id())
     minimock.mock('channel.ServerChannels.get_client_ids',
                   returns=[client_id, client_id2],
                   tracker=None)
     minimock.mock('gae_channel.send_message', tracker=self.tracker)
     self.interesting_log_line.send_message()
     js = '{"username": "******", "achievement_message": null, "chat": "is there anybody in there?", "time": "12:01am", "date": "Mar 24, 2013", "event": "chat", "death_message": null}'
     trace = "Called gae_channel.send_message(\n    '{0}',\n    '{1}')".format(
         client_id, js)
     trace += "\nCalled gae_channel.send_message(\n    '{0}',\n    '{1}')".format(
         client_id, js)
     minimock.assert_same_trace(self.tracker, trace)
Beispiel #10
0
 def test_sends_log_line_data_as_json(self):
     minimock.restore()
     self.user.timezone_name = 'US/Pacific'
     self.user.put()
     self.tracker = minimock.TraceTracker()
     client_id = '{0}.{1}.1234.5678'.format(self.server.key.id(),
                                            self.user.key.id())
     minimock.mock('channel.ServerChannels.get_client_ids',
                   returns=[client_id],
                   tracker=None)
     minimock.mock('gae_channel.send_message', tracker=self.tracker)
     js = '{"username": "******", "achievement_message": null, "chat": "is there anybody in there?", "time": "05:01pm", "date": "Mar 23, 2013", "event": "chat", "death_message": null}'
     self.interesting_log_line.send_message()
     minimock.assert_same_trace(
         self.tracker,
         "Called gae_channel.send_message('{0}','{1}')".format(
             client_id, js))
     log_line = json.loads(js)
     self.assertEqual('chat', log_line['event'])
     self.assertEqual('Mar 23, 2013', log_line['date'])
     self.assertEqual('05:01pm', log_line['time'])
     self.assertEqual('quazifene', log_line['username'])
     self.assertEqual('is there anybody in there?', log_line['chat'])
     self.assertEqual(None, log_line['death_message'])
Beispiel #11
0
 def setUp(self):
     self.tracker = minimock.TraceTracker()
Beispiel #12
0
    def test_password_reset(self):
        """ has to be done in the same test function so that order is assured"""

        user = create_user_with_permissions()

        r = self.c.get('users/recover-password')
        assert r.status_code == 200, r.status
        assert b'Recover Password' in r.data

        # setup the mock objects so we can test the email getting sent out
        tt = minimock.TraceTracker()
        smtplib.SMTP = minimock.Mock('smtplib.SMTP', tracker=None)
        smtplib.SMTP.mock_returns = minimock.Mock('smtp_connection',
                                                  tracker=tt)

        # test posting to the restore password view
        db.sess.expire(user)
        topost = {
            'email_address': user.email_address,
            'lost-password-form-submit-flag': 'submitted',
        }
        req, r = self.c.post('users/recover-password',
                             data=topost,
                             follow_redirects=True)
        assert r.status_code == 200, r.status
        assert b'email with a link to reset your password has been sent' in r.data, r.data
        assert req.url == 'http://localhost/'

        # test the mock strings (i.e. test the email that was sent out)
        db.sess.expire(user)
        assert tt.check('Called smtp_connection.sendmail(...%s...has been issu'
                        'ed to reset the password...' % user.email_address)
        # restore the mocked objects
        minimock.restore()

        # now test resetting the password
        r = self.c.get('/users/reset-password/%s/%s' %
                       (user.login_id, user.pass_reset_key))
        assert r.status_code == 200, r.status_code
        assert b'Reset Password' in r.data
        assert b'Please choose a new password to complete the reset request' in r.data

        # expire the date
        db.sess.expire(user)
        orig_reset_ts = user.pass_reset_ts
        user.pass_reset_ts = datetime.datetime(2000, 10, 10)
        db.sess.commit()

        # check expired message
        req, resp = self.c.get('/users/reset-password/%s/%s' %
                               (user.login_id, user.pass_reset_key),
                               follow_redirects=True)
        assert resp.status_code == 200, resp.status
        assert b'Recover Password' in resp.data
        assert b'password reset link expired, use the form below to resend reset link' in resp.data
        assert req.url.endswith('users/recover-password')

        # unexpire the date
        db.sess.expire(user)
        user.pass_reset_ts = orig_reset_ts
        db.sess.commit()

        # check posting the new passwords
        topost = {
            'password': '******',
            'password-confirm': 'TestPassword2',
            'new-password-form-submit-flag': 'submitted',
        }
        req, r = self.c.post('/users/reset-password/%s/%s' %
                             (user.login_id, user.pass_reset_key),
                             data=topost,
                             follow_redirects=True)
        assert r.status_code == 200, r.status
        assert b'Your password has been reset successfully' in r.data
        assert req.url == 'http://localhost/'
Beispiel #13
0
    def test_fields_saved(self):
        ap = Permission.get_by(name=u'users-test1').id
        dp = Permission.get_by(name=u'users-test2').id
        gp = Group.get_by(name=u'test-group') or Group.add_iu(
            name=u'test-group',
            approved_permissions=[],
            denied_permissions=[],
            assigned_users=[])
        gp = gp.id
        topost = {
            'login_id': 'usersaved',
            'email_address': '*****@*****.**',
            'user-submit-flag': 'submitted',
            'approved_permissions': ap,
            'denied_permissions': dp,
            'assigned_groups': gp,
            'super_user': 1,
            'inactive_flag': False,
            'inactive_date': '10/11/2010',
            'name_first': 'test',
            'name_last': 'user',
            'email_notify': 1
        }

        # setup the mock objects so we can test the email getting sent out
        tt = minimock.TraceTracker()
        smtplib.SMTP = minimock.Mock('smtplib.SMTP', tracker=None)
        smtplib.SMTP.mock_returns = minimock.Mock('smtp_connection',
                                                  tracker=tt)

        req, r = self.c.post('users/add', data=topost, follow_redirects=True)
        assert r.status_code == 200, r.status
        assert b'User added' in r.data
        assert req.url.endswith('users/manage')

        mmdump = tt.dump()
        assert 'To: [email protected]' in mmdump
        assert 'You have been added to our system of registered users.' in mmdump
        assert 'user name: usersaved' in mmdump
        assert re.search(r'password: [a-zA-Z0-9]*', mmdump) is not None
        assert re.search(r'password: None', mmdump) is None
        minimock.restore()

        user = User.get_by_email(u'*****@*****.**')
        assert user.login_id == 'usersaved'
        assert user.reset_required
        assert not user.super_user
        assert user.pass_hash
        assert user.groups[0].name == 'test-group'
        assert len(user.groups) == 1
        assert user.inactive_date == datetime.datetime(2010, 10,
                                                       11), user.inactive_date
        assert user.name_first == 'test'
        assert user.name_last == 'user'

        found = 3
        for permrow in user.permission_map:
            if permrow['permission_name'] == u'users-test1':
                assert permrow['resulting_approval']
                found -= 1
            if permrow['permission_name'] in (u'users-test2', u'auth-manage'):
                assert not permrow['resulting_approval']
                found -= 1
        assert found == 0

        # now test an edit
        topost = {
            'login_id': 'usersaved',
            'email_address': '*****@*****.**',
            'user-submit-flag': 'submitted',
            'approved_permissions': dp,
            'denied_permissions': ap,
            'assigned_groups': None,
            'super_user': 1,
            'inactive_flag': False,
            'inactive_date': '10/10/2010',
            'name_first': 'test2',
            'name_last': 'user2',
            'email_notify': 1,
            'password': '******',
            'password-confirm': 'test_new_password'
        }

        # setup the mock objects so we can test the email getting sent out
        tt = minimock.TraceTracker()
        smtplib.SMTP = minimock.Mock('smtplib.SMTP', tracker=None)
        smtplib.SMTP.mock_returns = minimock.Mock('smtp_connection',
                                                  tracker=tt)

        req, r = self.c.post('users/edit/%s' % user.id,
                             data=topost,
                             follow_redirects=True)
        assert b'User edited successfully' in r.data
        assert req.url.endswith('users/manage')

        assert tt.check(
            'Called smtp_connection.sendmail([email protected] '
            'password for this site has been reset'
            '...first successful login...')
        # restore the mocked objects
        minimock.restore()

        mmdump = tt.dump()
        assert 'To: [email protected]' in mmdump
        assert 'Your password for this site has been reset by an administrator.' in mmdump
        assert 'user name: usersaved' in mmdump
        assert re.search(r'password: [a-zA-Z0-9]*', mmdump) is not None
        assert re.search(r'password: None', mmdump) is None
        minimock.restore()

        db.sess.expire(user)
        assert user.login_id == 'usersaved'
        assert user.reset_required
        assert not user.super_user
        assert user.pass_hash
        assert len(user.groups) == 0
        assert user.inactive_date == datetime.datetime(2010, 10,
                                                       10), user.inactive_date
        assert user.name_first == 'test2'
        assert user.name_last == 'user2'

        found = 3
        for permrow in user.permission_map:
            if permrow['permission_name'] == u'users-test2':
                assert permrow['resulting_approval']
                found -= 1
            if permrow['permission_name'] in (u'users-test1', u'auth-manage'):
                assert not permrow['resulting_approval']
                found -= 1
        assert found == 0

        # test edit w/ reset required and email notify (no email sent)
        topost = {
            'login_id': 'usersaved',
            'email_address': '*****@*****.**',
            'user-submit-flag': 'submitted',
            'approved_permissions': dp,
            'denied_permissions': ap,
            'assigned_groups': None,
            'super_user': 1,
            'reset_required': 1,
            'inactive_flag': False,
            'inactive_date': '',
            'name_first': '',
            'name_last': '',
            'email_notify': 1
        }
        req, r = self.c.post('users/edit/%s' % user.id,
                             data=topost,
                             follow_redirects=True)
        assert b'User edited successfully' in r.data
        assert req.url.endswith('users/manage')

        db.sess.expire(user)
        assert user.login_id == 'usersaved'
        assert user.reset_required
        assert not user.super_user
        assert user.pass_hash
        assert len(user.groups) == 0

        # now test a delete
        req, r = self.c.get('users/delete/%s' % user.id, follow_redirects=True)
        assert r.status_code == 200, r.status
        assert b'User deleted' in r.data
        assert req.url.endswith('users/manage')
Beispiel #14
0
    def setUp(self):
        self.file = tempfile.NamedTemporaryFile()

        self.trace = minimock.TraceTracker()
        minimock.mock('json.load', tracker=self.trace)