Example #1
0
def test_lot_error_add_device_from_other_user(user: UserClient):
    # TODO
    """Tests adding a device to a lot using POST and
    removing it with DELETE.
    """
    g.user = User.query.one()
    user2 = User(email='*****@*****.**', password='******')
    user2.individuals.add(Person(name='Tommy'))
    db.session.add(user2)
    db.session.commit()

    device = Desktop(serial_number='foo',
                     model='bar',
                     manufacturer='foobar',
                     chassis=ComputerChassis.Lunchbox,
                     owner_id=user2.id)
    db.session.add(device)
    db.session.commit()

    device_id = device.id
    parent, _ = user.post(({'name': 'lot'}), res=Lot)
    lot, _ = user.post({},
                       res=Lot,
                       item='{}/devices'.format(parent['id']),
                       query=[('id', device_id)])
    lot = Lot.query.filter_by(id=lot['id']).one()
    assert list(lot.devices) == [], 'Lot contains device'
    assert len(lot.devices) == 0
Example #2
0
    def create_user(self,
                    email: str,
                    password: str,
                    inventory: Iterable[str] = tuple(),
                    agent: str = None,
                    country: str = None,
                    telephone: str = None,
                    tax_id: str = None) -> dict:
        """Create an user.

        If ``--agent`` is passed, it creates too an ``Individual``
        agent that represents the user.
        """
        from ereuse_devicehub.resources.agent.models import Individual
        u = self.SCHEMA(only={'email', 'password'}, exclude=('token',)) \
            .load({'email': email, 'password': password})
        if inventory:
            from ereuse_devicehub.resources.inventory import Inventory
            inventory = Inventory.query.filter(Inventory.id.in_(inventory))
        user = User(**u, inventories=inventory)
        agent = Individual(**current_app.resources[Individual.t].schema.load(
            dict(name=agent,
                 email=email,
                 country=country,
                 telephone=telephone,
                 taxId=tax_id)))
        user.individuals.add(agent)
        db.session.add(user)
        db.session.commit()
        return self.schema.dump(user)
Example #3
0
def test_create_user_email_insensitive():
    """Ensures email is case insensitive."""
    user = User(email='*****@*****.**')
    db.session.add(user)
    db.session.commit()
    # We search in case insensitive manner
    u1 = User.query.filter_by(email='*****@*****.**').one()
    assert u1 == user
    assert u1.email == '*****@*****.**'
Example #4
0
    def create_phantom_account(self) -> None:
        """
        If exist both users not to do nothing
        If exist from but not to:
            search if exist in the DB
                if exist use it
                else create new one
        The same if exist to but not from

        """
        user_from = self.data.get('user_from')
        user_to = self.data.get('user_to')
        code = self.data.get('code')

        if user_from and user_to:
            return

        if self.data['confirm']:
            return

        if user_from and not user_to:
            assert g.user == user_from
            email = "{}_{}@dhub.com".format(str(user_from.id), code)
            users = User.query.filter_by(email=email)
            if users.first():
                user = users.first()
                self.data['user_to'] = user
                return

            user = User(email=email, password='', active=False, phantom=True)
            db.session.add(user)
            self.data['user_to'] = user

        if not user_from and user_to:
            email = "{}_{}@dhub.com".format(str(user_to.id), code)
            users = User.query.filter_by(email=email)
            if users.first():
                user = users.first()
                self.data['user_from'] = user
                return

            user = User(email=email, password='', active=False, phantom=True)
            db.session.add(user)
            self.data['user_from'] = user
Example #5
0
def create_user(email='*****@*****.**', password='******') -> User:
    user = User(email=email, password=password)
    user.individuals.add(Person(name='Timmy'))
    session_external = Session(user=user, type=SessionType.External)
    session_internal = Session(user=user, type=SessionType.Internal)
    db.session.add(user)
    db.session.add(session_internal)
    db.session.add(session_external)
    db.session.commit()
    return user
Example #6
0
 def create_user(self, email: str, password: str) -> dict:
     """
     Creates an user.
     """
     u = self.SCHEMA(only={'email', 'password'}, exclude=('token',)) \
         .load({'email': email, 'password': password})
     user = User(**u)
     db.session.add(user)
     db.session.commit()
     return self.schema.dump(user)
Example #7
0
def create_user(email='*****@*****.**', password='******') -> User:
    user = User(email=email, password=password)
    db.session.add(user)
    db.session.commit()
    return user
Example #8
0
def test_login_active_phantom(client: Client):
    """Tests successfully performing login.
    This checks that:

    - User is returned if is active and is not phantom.

    """
    dbuser = User(email='*****@*****.**', password='******')
    dbuser1 = User(email='*****@*****.**',
                   password='******',
                   active=True,
                   phantom=False)
    dbuser2 = User(email='*****@*****.**',
                   password='******',
                   active=False,
                   phantom=False)
    dbuser3 = User(email='*****@*****.**',
                   password='******',
                   active=True,
                   phantom=True)
    dbuser4 = User(email='*****@*****.**',
                   password='******',
                   active=False,
                   phantom=True)
    db.session.add(dbuser)
    db.session.add(dbuser1)
    db.session.add(dbuser2)
    db.session.add(dbuser3)
    db.session.add(dbuser4)
    db.session.commit()
    db.session.flush()

    assert dbuser.active
    assert not dbuser.phantom

    uri = '/users/login/'
    client.post({
        'email': '*****@*****.**',
        'password': '******'
    },
                uri=uri,
                status=200)
    client.post({
        'email': '*****@*****.**',
        'password': '******'
    },
                uri=uri,
                status=200)
    client.post({
        'email': '*****@*****.**',
        'password': '******'
    },
                uri=uri,
                status=401)
    client.post({
        'email': '*****@*****.**',
        'password': '******'
    },
                uri=uri,
                status=401)
    client.post({
        'email': '*****@*****.**',
        'password': '******'
    },
                uri=uri,
                status=401)
Example #9
0
def create_user(email='*****@*****.**', password='******') -> User:
    user = User(email=email, password=password)
    user.individuals.add(Person(name='Timmy'))
    db.session.add(user)
    db.session.commit()
    return user