Пример #1
0
    def test_no_email_and_username_same_on_two_users(self):
        """
        Checks that a username cannot be the same as the email as another user. This is a requirement for our login
        """
        with self.assertRaises(lib.exceptions.DataManipulationException):
            User("*****@*****.**", "*****@*****.**", "hello").create()

        User("*****@*****.**", "*****@*****.**", "hello").create()
        with self.assertRaises(lib.exceptions.DataManipulationException):
            User("goat", "*****@*****.**", "no").create()
Пример #2
0
    def setUp(self):
        """ Creates two base users to reason about in our tests"""
        super().setUp()
        self.name1 = "goatsy"
        self.email1 = "*****@*****.**"
        self.password1 = "verysecure"
        self.user1 = User(self.name1, self.email1, self.password1).create()

        self.name2 = "Impersonator"
        self.email2 = "bob"
        self.password2 = "notVeryInventive"
        self.user2 = User(self.name2, self.email2, self.password2).create()
Пример #3
0
 def test_get_users(self):
     """ Checks user retrieval with limits """
     self.assertEqual(len(User.get_users()), 2)
     self.assertEqual(len(User.get_users(limit=0)), 0)
     User("goat", "*****@*****.**", "1234").create()
     self.assertEqual(len(User.get_users()), 3)
     self.assertEqual(len(User.get_users(limit=1)), 1)
Пример #4
0
def _get_slack_data(days):
    settings = Settings.query().get()
    try:
        api_key = settings.api_key
    except AttributeError:
        api_key = os.environ.get('SLACK_API_KEY')
        if api_key is None:
            raise Exception('please set environment variable SLACK_API_KEY')
        else:
            Settings(api_key=api_key).put()

    sd = SlackDumper(api_key)
    ents = set(dir(User))
    for user_data in sd.get_user_list():
        user_id = user_data['id']
        user_data = {k: v for k, v in user_data.items() if k in ents}
        user = User.query(User.id == user_id).get()
        if user is None:
            User(**user_data).put()
        else:
            for k, v in user_data.items():
                setattr(user, k, v)
            user.put()

    ents = set(dir(Channel))
    for channel_data in sd.get_channel_list():
        channel_id = channel_data['id']
        channel_data = {k: v for k, v in channel_data.items() if k in ents}
        channel = Channel.query(Channel.id == channel_id).get()
        if channel is None:
            Channel(**channel_data).put()
        else:
            for k, v in channel_data.items():
                setattr(channel, k, v)
            channel.put()

    ents = set(dir(Message))
    for channel_id, messages in sd.get_channels_histoey(days=days).items():
        for message in messages:
            message['channel_id'] = channel_id
            user = message.get('user', '')
            ts_raw = message['ts']
            ts = float(ts_raw)
            message['ts'] = float(ts_raw)
            message['ts_raw'] = ts_raw

            message = {k: v for k, v in message.items() if k in ents}
            if not ROBUST_IMPORTING_MODE:
                msg = Message.query().filter(Message.channel_id == channel_id, Message.user == user, Message.ts == ts).get()
            else:
                msg = Message.query().filter(Message.channel_id == channel_id, Message.user ==
                                             user, Message.ts > ts - 1, Message.ts < ts + 1).get()
            if msg is None:
                Message(**message).put()
            else:
                for k, v in message.items():
                    setattr(msg, k, v)
                msg.put()
Пример #5
0
def regist_user():
    name = request.form['name']
    if User.query.filter(User.name == name).first():
        return render_template('register.thml',
                               message='username already exist')
    if request.form['password'] == request.form['passwd_confirmation']:
        password = request.form['password']
    user = User(name=name, password=password)
    db.session.add(user)
    db.session.commit()
    return index()
Пример #6
0
def _import_zip_log(io_buffer):
    logger.debug('start')

    szd = SlackZipDumpedLog(zipfile.ZipFile(BytesIO(io_buffer.read())))

    ents = set(dir(User))
    for user_data in szd.users_data:
        user_id = user_data['id']
        user_data = {k: v for k, v in user_data.items() if k in ents}
        user = User.query(User.id == user_id).get()
        if user is None:
            User(**user_data).put()
        else:
            for k, v in user_data.items():
                setattr(user, k, v)
            user.put()
    logger.debug('user end')

    ents = set(dir(Channel))
    for channel_data in szd.channels_data:
        channel_id = channel_data['id']
        channel_data['created'] = int(channel_data['created'])

        channel_data = {k: v for k, v in channel_data.items() if k in ents}
        channel = Channel.query(Channel.id == channel_id).get()
        if channel is None:
            Channel(**channel_data).put()
        else:
            for k, v in channel_data.items():
                setattr(channel, k, v)
            channel.put()

    logger.debug('channel end')
    ents = set(dir(Message))
    for channel_id, messages in szd.map_message_data.items():
        for message in messages.values():
            message['channel_id'] = channel_id
            user = message.get('user', '')
            ts_raw = str(message['ts'])
            ts = float(ts_raw)
            message['ts'] = ts
            message['ts_raw'] = ts_raw

            message = {k: v for k, v in message.items() if k in ents}
            msg = Message.query().filter(Message.channel_id == channel_id,
                                         Message.user == user,
                                         Message.ts == ts).get()
            if msg is None:
                Message(**message).put()
            else:
                for k, v in message.items():
                    setattr(msg, k, v)
                msg.put()
    logger.debug('exit')
Пример #7
0
def login_index():
    form = LoginForm()
    if request.method == 'POST' and form.validate_on_submit():
        user_name = form.username.data
        password = form.password.data
        remember_me = form.remember_me.data
        user = query_user(user_name)

        if user is not None and password == user['password']:
            curr_user = User()
            curr_user.id = user_name
            login_user(curr_user, remember=True)
            return redirect(request.args.get('next') or url_for('index'))

        flash('用户名或密码错误!')
    return render_template('login/login.html', title="Sign In", form=form)
Пример #8
0
    def setUp(self):
        self.app = create_app(**test_config)
        self.client = self.app.test_client()
        self.db = db

        self._ctx = self.app.test_request_context()
        self._ctx.push()

        with self.app.app_context():
            self.db.create_all()

        # create test model
        self.model_name = 'test_model'
        self.model = Model(self.model_name)

        # create test user
        self.user = User(email='*****@*****.**', password='******', name='sup')
        self.model.register(self.user)
        self.db.session.add(self.user)
        self.db.session.add(self.model)
        self.db.session.commit()
Пример #9
0
 def test_no_same_emails(self):
     """ Checks that two users with the same email cannot be created """
     with self.assertRaises(lib.exceptions.DataManipulationException):
         User("goat", "*****@*****.**", "no").create()
Пример #10
0
 def test_no_same_username(self):
     """ Checks that two users with the same username cannot be created """
     with self.assertRaises(lib.exceptions.DataManipulationException):
         User("goatsy", "*****@*****.**", "1234").create()
Пример #11
0
 def test_user_can_have_same_name_and_email(self):
     """ Checks that a user can have the same email and username """
     User("*****@*****.**", "*****@*****.**", "hi").create()
Пример #12
0
 def _make_user(self):
     user = User(email='*****@*****.**', password='******', name='sup2')
     self.db.session.add(user)
     self.db.session.commit()
     return user