Esempio n. 1
0
    def test_move_in_custom_traffic_group(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_building = facilities.Building.q.first()
        test_mac = "12:11:11:11:11:11"
        test_birthdate = "1990-01-01"
        traffic_group = user.TrafficGroup.q.first()

        new_user, _ = UserHelper.create_user(test_name,
                                             test_login,
                                             test_email,
                                             test_birthdate,
                                             processor=self.processing_user,
                                             group=config.member_group)

        UserHelper.move_in(new_user,
                           test_building,
                           level=1,
                           room_number="1",
                           mac=test_mac,
                           processor=self.processing_user,
                           traffic_group_id=traffic_group.id)

        self.assertIn(traffic_group, new_user.active_traffic_groups())
Esempio n. 2
0
 def test_user_create(self):
     # needs: new_user, self.user (the initiating data),
     # self.config.member_group
     new_user, _ = UserHelper.create_user(
         self.user.name,
         self.user.login,
         self.user.email,
         self.user.birthdate,
         processor=self.processing_user,
         groups=[self.config.member_group],
         address=self.room.address,
     )
     assert new_user.name == self.user.name
     assert new_user.login == self.user.login
     assert new_user.email == self.user.email
     # TODO fix signature and check for explicitly supplied address.
     # assert new_user.address == config.dummy_address
     assert_account_name(new_user.account, f"User {new_user.id}")
     assert_membership_groups(new_user.active_memberships(), [self.config.member_group])
     assert new_user.unix_account.home_directory == f"/home/{new_user.login}"
     assert len(new_user.log_entries) == 2
     first, second = new_user.log_entries
     assert_logmessage_startswith(first, "Added to group Mitglied")
     assert_logmessage_startswith(second, "User created")
     assert new_user.account is not None
     assert new_user.account.balance == 0
Esempio n. 3
0
    def test_move_in_custom_traffic_group(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_building = facilities.Building.q.first()
        test_mac = "12:11:11:11:11:11"
        test_birthdate = "1990-01-01"
        traffic_group = user.TrafficGroup.q.first()

        new_user, _ = UserHelper.create_user(
            test_name,
            test_login,
            test_email,
            test_birthdate,
            processor=self.processing_user,
            group = config.member_group
        )

        UserHelper.move_in(
            new_user,
            test_building,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user,
            traffic_group_id=traffic_group.id
        )

        self.assertIn(traffic_group, new_user.active_traffic_groups())
Esempio n. 4
0
    def test_0010_move_in(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_building = facilities.Building.q.first()
        test_mac = "12:11:11:11:11:11"
        test_birthdate = "1990-01-01"

        new_user, _ = UserHelper.create_user(
            test_name,
            test_login,
            test_email,
            test_birthdate,
            processor=self.processing_user,
            group=config.member_group
        )

        UserHelper.move_in(
            new_user,
            test_building,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user,
            traffic_group_id=self.traffic_group_id,
        )

        self.assertEqual(new_user.name, test_name)
        self.assertEqual(new_user.login, test_login)
        self.assertEqual(new_user.email, test_email)
        self.assertEqual(new_user.room.building, test_building)
        self.assertEqual(new_user.room.number, "1")
        self.assertEqual(new_user.room.level, 1)

        user_host = host.Host.q.filter_by(owner=new_user).one()
        self.assertEqual(len(user_host.interfaces), 1)
        user_interface = user_host.interfaces[0]
        self.assertEqual(len(user_interface.ips), 1)
        self.assertEqual(user_interface.mac, test_mac)

        # checks the initial group memberships
        active_user_groups = (new_user.active_property_groups() +
                              new_user.active_traffic_groups())
        for group in {config.member_group, config.network_access_group}:
            self.assertIn(group, active_user_groups)

        self.assertIsNotNone(new_user.account)
        self.assertEqual(new_user.account.balance, 0)
        self.assertFalse(new_user.has_property("reduced_membership_fee"))
        self.assertTrue(new_user.unix_account is not None)
        account = new_user.unix_account
        self.assertTrue(account.home_directory.endswith(new_user.login))
        self.assertTrue(account.home_directory.startswith('/home/'))
        credits = new_user.traffic_credits
        self.assertEqual(len(credits), 1)
        self.assertEqual(credits[0].amount, self.traffic_group.initial_credit_amount)
Esempio n. 5
0
    def test_0010_move_in(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_building = facilities.Building.q.first()
        test_mac = "12:11:11:11:11:11"
        test_birthdate = "1990-01-01"

        new_user, _ = UserHelper.create_user(test_name,
                                             test_login,
                                             test_email,
                                             test_birthdate,
                                             processor=self.processing_user,
                                             group=config.member_group)

        UserHelper.move_in(
            new_user,
            test_building,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user,
            traffic_group_id=self.traffic_group_id,
        )

        self.assertEqual(new_user.name, test_name)
        self.assertEqual(new_user.login, test_login)
        self.assertEqual(new_user.email, test_email)
        self.assertEqual(new_user.room.building, test_building)
        self.assertEqual(new_user.room.number, "1")
        self.assertEqual(new_user.room.level, 1)

        user_host = host.Host.q.filter_by(owner=new_user).one()
        self.assertEqual(len(user_host.interfaces), 1)
        user_interface = user_host.interfaces[0]
        self.assertEqual(len(user_interface.ips), 1)
        self.assertEqual(user_interface.mac, test_mac)

        # checks the initial group memberships
        active_user_groups = (new_user.active_property_groups() +
                              new_user.active_traffic_groups())
        for group in {config.member_group, config.network_access_group}:
            self.assertIn(group, active_user_groups)

        self.assertIsNotNone(new_user.account)
        self.assertEqual(new_user.account.balance, 0)
        self.assertFalse(new_user.has_property("reduced_membership_fee"))
        self.assertTrue(new_user.unix_account is not None)
        account = new_user.unix_account
        self.assertTrue(account.home_directory.endswith(new_user.login))
        self.assertTrue(account.home_directory.startswith('/home/'))
        credits = new_user.traffic_credits
        self.assertEqual(len(credits), 1)
        self.assertEqual(credits[0].amount,
                         self.traffic_group.initial_credit_amount)
Esempio n. 6
0
 def create_some_user(self):
     new_user, _ = UserHelper.create_user(
         self.user.name,
         self.user.login,
         self.user.email,
         self.user.birthdate,
         processor=self.processing_user,
         groups=[self.config.member_group],
         address=self.room.address,
     )
     return new_user
Esempio n. 7
0
    def test_0010_move_in(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_building = self.room.building
        test_mac = "12:11:11:11:11:11"
        test_birthdate = "1990-01-01"

        address = get_room(building_id=test_building.id, level=1, room_number="1").address
        new_user, _ = UserHelper.create_user(
            test_name,
            test_login,
            test_email,
            test_birthdate,
            processor=self.processing_user,
            groups=[self.config.member_group],
            address=address
        )

        UserHelper.move_in(
            new_user,
            building_id=test_building.id,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user,
        )

        self.assertEqual(new_user.name, test_name)
        self.assertEqual(new_user.login, test_login)
        self.assertEqual(new_user.email, test_email)
        self.assertEqual(new_user.room.building, test_building)
        self.assertEqual(new_user.room.number, "1")
        self.assertEqual(new_user.room.level, 1)
        self.assertEqual(new_user.address, new_user.room.address)

        user_host = host.Host.q.filter_by(owner=new_user).one()
        self.assertEqual(len(user_host.interfaces), 1)
        user_interface = user_host.interfaces[0]
        self.assertEqual(len(user_interface.ips), 1)
        self.assertEqual(user_interface.mac, test_mac)

        # checks the initial group memberships
        active_user_groups = new_user.active_property_groups()
        for group in {self.config.member_group, self.config.network_access_group}:
            self.assertIn(group, active_user_groups)

        self.assertIsNotNone(new_user.account)
        self.assertEqual(new_user.account.balance, 0)
        self.assertFalse(new_user.has_property("reduced_membership_fee"))
        self.assertTrue(new_user.unix_account is not None)
        account = new_user.unix_account
        self.assertTrue(account.home_directory.endswith(new_user.login))
        self.assertTrue(account.home_directory.startswith('/home/'))
Esempio n. 8
0
    def test_0030_move_out(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_building = facilities.Building.q.first()
        test_mac = "12:11:11:11:11:11"
        traffic_group = user.TrafficGroup.q.first()
        test_birthdate = "1990-01-01"

        new_user, _ = UserHelper.create_user(test_name,
                                             test_login,
                                             test_email,
                                             test_birthdate,
                                             processor=self.processing_user,
                                             group=config.member_group)

        UserHelper.move_in(new_user,
                           test_building,
                           level=1,
                           room_number="1",
                           mac=test_mac,
                           processor=self.processing_user,
                           traffic_group_id=traffic_group.id)

        session.session.commit()

        out_time = session.utcnow()

        UserHelper.move_out(user=new_user,
                            comment="",
                            processor=self.processing_user,
                            when=out_time)

        session.session.refresh(new_user)
        # check ends_at of moved out user
        for membership in new_user.memberships:
            self.assertIsNotNone(membership.ends_at)
            self.assertLessEqual(membership.ends_at, out_time)

        self.assertFalse(new_user.hosts)
        self.assertIsNone(new_user.room)

        # check if users finance account still exists
        self.assertIsNotNone(new_user.account)

        UserHelper.move_in(
            user=new_user,
            building=test_building,
            level=1,
            room_number="1",
            mac=test_mac,
            birthdate=test_birthdate,
            processor=self.processing_user,
            traffic_group_id=traffic_group.id,
        )

        session.session.refresh(new_user)
        self.assertEqual(new_user.room.building, test_building)
        self.assertEqual(new_user.room.level, 1)
        self.assertEqual(new_user.room.number, "1")

        self.assertEqual(len(new_user.hosts), 1)
        user_host = new_user.hosts[0]
        self.assertEqual(len(user_host.interfaces), 1)
        self.assertEqual(user_host.interfaces[0].mac, test_mac)
        self.assertEqual(len(user_host.ips), 1)

        self.assertTrue(new_user.member_of(config.member_group))
        self.assertTrue(new_user.member_of(config.network_access_group))
        # `member_of` only concerns `PropertyGroup`s!
        self.assertIn(traffic_group, new_user.active_traffic_groups())
Esempio n. 9
0
    def test_move_out(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_building = self.room.building
        test_mac = "12:11:11:11:11:11"
        test_birthdate = "1990-01-01"

        address = self.room.address

        new_user, _ = UserHelper.create_user(
            test_name,
            test_login,
            test_email,
            test_birthdate,
            processor=self.processing_user,
            groups=[self.config.member_group],
            address=address
        )

        UserHelper.move_in(
            new_user,
            building_id=test_building.id,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user,
        )

        session.session.commit()

        out_time = session.utcnow()

        UserHelper.move_out(user=new_user, comment="",
                            processor=self.processing_user, when=out_time)

        session.session.refresh(new_user)
        # check ends_at of moved out user
        for membership in new_user.memberships:
            self.assertIsNotNone(membership.ends_at)
            self.assertLessEqual(membership.ends_at, out_time)

        self.assertFalse(new_user.hosts)
        self.assertIsNone(new_user.room)
        # move_out keeps user's address
        self.assertEqual(new_user.address, address)

        # check if users finance account still exists
        self.assertIsNotNone(new_user.account)

        UserHelper.move_in(
            user=new_user,
            building_id=test_building.id,
            level=1,
            room_number="1",
            mac=test_mac,
            birthdate=test_birthdate,
            processor=self.processing_user,
        )

        session.session.refresh(new_user)
        self.assertEqual(new_user.room.building, test_building)
        self.assertEqual(new_user.room.level, 1)
        self.assertEqual(new_user.room.number, "1")
        self.assertEqual(new_user.address, new_user.room.address)

        self.assertEqual(len(new_user.hosts), 1)
        user_host = new_user.hosts[0]
        self.assertEqual(len(user_host.interfaces), 1)
        self.assertEqual(user_host.interfaces[0].mac, test_mac)
        self.assertEqual(len(user_host.ips), 1)

        self.assertTrue(new_user.member_of(config.member_group))
        self.assertTrue(new_user.member_of(config.network_access_group))
Esempio n. 10
0
    def test_0030_move_out(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_building = facilities.Building.q.first()
        test_mac = "12:11:11:11:11:11"
        traffic_group = user.TrafficGroup.q.first()
        test_birthdate = "1990-01-01"

        new_user, _ = UserHelper.create_user(
            test_name,
            test_login,
            test_email,
            test_birthdate,
            processor=self.processing_user,
            group = config.member_group
        )

        UserHelper.move_in(
            new_user,
            test_building,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user,
            traffic_group_id=traffic_group.id
        )

        session.session.commit()

        out_time = session.utcnow()

        UserHelper.move_out(user=new_user, comment="",
                            processor=self.processing_user, when=out_time)

        session.session.refresh(new_user)
        # check ends_at of moved out user
        for membership in new_user.memberships:
            self.assertIsNotNone(membership.ends_at)
            self.assertLessEqual(membership.ends_at, out_time)

        self.assertFalse(new_user.hosts)
        self.assertIsNone(new_user.room)

        # check if users finance account still exists
        self.assertIsNotNone(new_user.account)

        UserHelper.move_in(
            user=new_user,
            building=test_building,
            level=1,
            room_number="1",
            mac=test_mac,
            birthdate=test_birthdate,
            processor=self.processing_user,
            traffic_group_id=traffic_group.id,
        )

        session.session.refresh(new_user)
        self.assertEqual(new_user.room.building, test_building)
        self.assertEqual(new_user.room.level, 1)
        self.assertEqual(new_user.room.number, "1")

        self.assertEqual(len(new_user.hosts), 1)
        user_host = new_user.hosts[0]
        self.assertEqual(len(user_host.interfaces), 1)
        self.assertEqual(user_host.interfaces[0].mac, test_mac)
        self.assertEqual(len(user_host.ips), 1)

        self.assertTrue(new_user.member_of(config.member_group))
        self.assertTrue(new_user.member_of(config.network_access_group))
        # `member_of` only concerns `PropertyGroup`s!
        self.assertIn(traffic_group, new_user.active_traffic_groups())
Esempio n. 11
0
    def test_move_out(self):
        test_name = "Hans"
        test_login = "******"
        test_email = "*****@*****.**"
        test_building = self.room.building
        test_mac = "12:11:11:11:11:11"
        test_birthdate = "1990-01-01"

        address = self.room.address

        new_user, _ = UserHelper.create_user(
            test_name,
            test_login,
            test_email,
            test_birthdate,
            processor=self.processing_user,
            groups=[self.config.member_group],
            address=address
        )

        UserHelper.move_in(
            new_user,
            building_id=test_building.id,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user,
        )

        self.session.commit()

        out_time = session.utcnow()

        UserHelper.move_out(user=new_user, comment="",
                            processor=self.processing_user, when=out_time)
        self.session.refresh(new_user)
        # check ends_at of moved out user
        for membership in new_user.memberships:
            assert (int := membership.active_during) is not None
            assert (end := int.end) is not None
            assert end <= out_time

        assert not new_user.hosts
        assert new_user.room is None
        # move_out keeps user's address
        assert new_user.address == address

        # check if users finance account still exists
        assert new_user.account is not None

        UserHelper.move_in(
            user=new_user,
            building_id=test_building.id,
            level=1,
            room_number="1",
            mac=test_mac,
            birthdate=test_birthdate,
            processor=self.processing_user,
        )

        self.session.refresh(new_user)
        assert new_user.room.building == test_building
        assert new_user.room.level == 1
        assert new_user.room.number == "1"
        assert new_user.address == new_user.room.address

        assert len(new_user.hosts) == 1
        user_host = new_user.hosts[0]
        assert len(user_host.interfaces) == 1
        assert user_host.interfaces[0].mac == test_mac
        assert len(user_host.ips) == 1

        assert new_user.member_of(config.member_group)
        assert new_user.member_of(config.network_access_group)