コード例 #1
0
    def test_update_token(self):
        """test update token scenarios"""
        userid = uuid.uuid4()

        # attempt to update a yet-unregistered user
        resp = self.app.post('/user/update-token',
                             data=json.dumps({'token': 'sometoken'}),
                             headers={USER_ID_HEADER: str(userid)},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 400)

        # register an android with a token
        resp = self.app.post('/user/register',
                             data=json.dumps({
                                 'user_id': str(userid),
                                 'os': 'android',
                                 'device_model': 'samsung8',
                                 'device_id': '234234',
                                 'time_zone': '05:00',
                                 'token': 'fake_token',
                                 'app_ver': '1.0'
                             }),
                             headers={},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 200)

        db.engine.execute(
            """update public.push_auth_token set auth_token='%s' where user_id='%s';"""
            % (str(userid), str(userid)))

        resp = self.app.post('/user/auth/ack',
                             data=json.dumps({'token': str(userid)}),
                             headers={USER_ID_HEADER: str(userid)},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 200)

        # update the token
        resp = self.app.post('/user/update-token',
                             data=json.dumps({'token': 'newtoken'}),
                             headers={USER_ID_HEADER: str(userid)},
                             content_type='application/json')
        print(json.loads(resp.data))
        self.assertEqual(resp.status_code, 200)

        print(models.list_all_users())
        assert (models.user_exists(userid))
        assert (not models.user_exists(uuid.uuid4()))
コード例 #2
0
def user_goods_report_endpoint():
    """returns a summary of the user's goods data"""
    limit_to_acl()
    limit_to_password()

    try:
        payload = request.get_json(silent=True)
        user_id = payload.get('user_id', None)
        user_phone = payload.get('phone', None)
        if (user_id is None
                and user_phone is None) or (user_id is not None
                                            and user_phone is not None):
            print('user_goods_report_endpoint: userid %s, user_phone %s' %
                  (user_id, user_phone))
            raise InvalidUsage('bad-request')
    except Exception as e:
        print(e)
        raise InvalidUsage('bad-request')

    try:  # sanitize user_id:
        if user_id:
            UUID(user_id)
    except Exception as e:
        log.error('cant generate tx report for user_id: %s ' % user_id)
        return jsonify(error='invalid_userid')

    if user_id:
        if not user_exists(user_id):
            print(
                'user_goods_report_endpoint: user_id %s does not exist. aborting'
                % user_id)
            return jsonify(erorr='no_such_user')
        else:
            return jsonify(report=[get_user_goods_report(user_id)])

    else:  # user_phone
        user_ids = get_all_user_id_by_phone(
            user_phone)  # there may be a few users with this phone
        if not user_ids:
            print(
                'user_goods_report_endpoint: user_phone %s does not exist. aborting'
                % user_phone)
            return jsonify(erorr='no_such_phone')
        else:
            return jsonify(report=[
                get_user_goods_report(user_id) for user_id in user_ids
            ])
コード例 #3
0
    def test_register(self):
        """test registration scenarios"""

        # android
        userid = str(uuid.uuid4())
        resp = self.app.post('/user/register',
                             data=json.dumps({
                                 'user_id': str(userid),
                                 'os': 'android',
                                 'device_model': 'samsung8',
                                 'device_id': '234234',
                                 'time_zone': '05:00',
                                 'token': 'fake_token',
                                 'app_ver': '1.0'
                             }),
                             headers={},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 200)

        users = models.list_all_users()
        assert (users[userid]['onboarded'] == False)
        assert (users[userid]['os'] == 'android')
        assert (users[userid]['device_model'] == 'samsung8')
        assert (users[userid]['device_id'] == '234234')
        assert (users[userid]['time_zone'] == int('5'))
        assert (users[userid]['push_token'] == 'fake_token')
        assert (users[userid]['sid'] == 1)

        # reuse device-id but not userid, should succeed
        resp = self.app.post('/user/register',
                             data=json.dumps({
                                 'user_id': str(uuid.uuid4()),
                                 'os': 'android',
                                 'device_model': 'samsung8',
                                 'device_id': '234234',
                                 'time_zone': '05:00',
                                 'token': 'fake_token',
                                 'app_ver': '1.0'
                             }),
                             headers={},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 200)

        # ios
        resp = self.app.post('/user/register',
                             data=json.dumps({
                                 'user_id': str(uuid.uuid4()),
                                 'os': 'iOS',
                                 'device_model': 'samsung8',
                                 'device_id': '234234',
                                 'time_zone': '05:00',
                                 'token': 'fake_token',
                                 'app_ver': '1.0'
                             }),
                             headers={},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 200)

        # no push token. should succeed.
        userid = uuid.uuid4()
        resp = self.app.post('/user/register',
                             data=json.dumps({
                                 'user_id': str(userid),
                                 'os': 'iOS',
                                 'device_model': 'samsung8',
                                 'device_id': '234234',
                                 'time_zone': '05:00',
                                 'app_ver': '1.0'
                             }),
                             headers={},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 200)

        # re-use userid - should fail
        resp = self.app.post('/user/register',
                             data=json.dumps({
                                 'user_id': str(userid),
                                 'os': 'iOS',
                                 'device_model': 'samsung8',
                                 'device_id': '234234',
                                 'time_zone': '05:00',
                                 'app_ver': '1.0'
                             }),
                             headers={},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 400)
        print(json.loads(resp.data))

        print(models.list_all_users())
        assert (models.user_exists(userid))
        assert (not models.user_exists(uuid.uuid4()))

        # windows phone. should fail.
        userid = uuid.uuid4()
        resp = self.app.post('/user/register',
                             data=json.dumps({
                                 'user_id': str(userid),
                                 'os': 'win',
                                 'device_model': 'samsung8',
                                 'device_id': '234234',
                                 'time_zone': '05:00',
                                 'app_ver': '1.0'
                             }),
                             headers={},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 400)
        assert (not models.user_exists(userid))

        # invalid uuid. should fail
        resp = self.app.post('/user/register',
                             data=json.dumps({
                                 'user_id': 'invaliduuid',
                                 'os': 'iOS',
                                 'device_model': 'samsung8',
                                 'device_id': '234234',
                                 'time_zone': '05:00',
                                 'app_ver': '1.0'
                             }),
                             headers={},
                             content_type='application/json')
        self.assertEqual(resp.status_code, 400)
        print(json.loads(resp.data))