コード例 #1
0
ファイル: task.py プロジェクト: agdsn/pycroft
    def _execute(self, task, parameters: UserMoveInParams):
        from pycroft.lib import user as lib_user

        if task.user.room is not None:
            self.errors.append("Tried to move in user, "
                               "but user was already living in a dormitory.")
            return

        room = lib_user.get_room(
            room_number=parameters.room_number,
            level=parameters.level,
            building_id=parameters.building_id,
        )

        if room is None:
            self.errors.append(
                "Tried to move in user, but target room did not exist.")
            return

        lib_user.move_in(
            user=task.user,
            building_id=room.building.id,
            level=room.level,
            room_number=room.number,
            mac=parameters.mac,
            processor=task.creator,
            birthdate=parameters.birthdate,
            host_annex=parameters.host_annex,
            begin_membership=parameters.begin_membership,
        )

        self.new_status = TaskStatus.EXECUTED
コード例 #2
0
    def test_0010_move_in(self):
        test_mac = "12:11:11:11:11:11"

        UserHelper.move_in(
            self.user,
            building_id=self.room.building.id,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user,
        )

        assert self.user.room == self.room
        assert self.user.address == self.user.room.address

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

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

        assert not self.user.has_property("reduced_membership_fee")
コード例 #3
0
    def _execute(self, task, parameters):
        from pycroft.lib import user as lib_user

        if task.user.room is None:
            room = Room.q.filter_by(
                number=parameters['room_number'],
                level=parameters['level'],
                building_id=parameters['building_id']).first()

            if room is not None:
                lib_user.move_in(
                    user=task.user,
                    building_id=room.building.id,
                    level=room.level,
                    room_number=room.number,
                    mac=parameters['mac'],
                    processor=task.creator,
                    birthdate=parameters['birthdate'],
                    host_annex=parameters['host_annex'],
                    begin_membership=parameters['begin_membership'])

                self.new_status = TaskStatus.EXECUTED
            else:
                self.errors.append(
                    "Tried to move in user, but target room did not exist.")
        else:
            self.errors.append(
                "Tried to move in user, but user was already living in a dormitory."
            )
コード例 #4
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())
コード例 #5
0
ファイル: test_user.py プロジェクト: agdsn/pycroft
    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())
コード例 #6
0
ファイル: test_user.py プロジェクト: agdsn/pycroft
    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)
コード例 #7
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)
コード例 #8
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/'))
コード例 #9
0
    def test_room_history_move_in(self):
        self.assertEqual(0, len(self.user_no_room.room_history_entries))

        move_in(self.user_no_room, self.room.building.id, self.room.level, self.room.number,
                mac=None, processor=self.processor)

        session.session.commit()

        rhe = self.user_no_room.room_history_entries[0]

        self.assertEqual(rhe.room, self.room)

        self.assertIsNotNone(rhe.begins_at)
        self.assertIsNone(rhe.ends_at)
コード例 #10
0
ファイル: test_user.py プロジェクト: lukasjuhrich/pycroft
    def test_0030_move_out(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_dormitory = dormitory.Dormitory.q.first()
        test_mac = "12:11:11:11:11:11"

        new_user = UserHelper.move_in(
            test_name,
            test_login,
            test_email,
            test_dormitory,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user
        )

        out_time = datetime.now()

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

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

        # check if users finance account still exists
        finance_account = new_user.finance_account
        self.assertIsNotNone(finance_account)
コード例 #11
0
ファイル: test_user.py プロジェクト: sgeisler/pycroft
    def test_0030_move_out(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_dormitory = dormitory.Dormitory.q.first()
        test_mac = "12:11:11:11:11:11"

        new_user = UserHelper.move_in(test_name,
                                      test_login,
                                      test_email,
                                      test_dormitory,
                                      level=1,
                                      room_number="1",
                                      mac=test_mac,
                                      processor=self.processing_user)

        out_time = datetime.now()

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

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

        # check if users finance account still exists
        finance_account = new_user.finance_account
        self.assertIsNotNone(finance_account)
コード例 #12
0
ファイル: test_room_history.py プロジェクト: agdsn/pycroft
    def test_room_history_move_in(self):
        assert 0 == len(self.user_no_room.room_history_entries)

        move_in(self.user_no_room,
                self.room.building.id,
                self.room.level,
                self.room.number,
                mac=None,
                processor=self.processor)

        session.session.commit()

        rhe = self.user_no_room.room_history_entries[0]

        assert rhe.room == self.room

        assert rhe.active_during.begin is not None
        assert rhe.active_during.end is None
コード例 #13
0
 def test_move_in_scheduling(self):
     test_mac = '00:de:ad:be:ef:00'
     UserHelper.move_in(
         self.user,
         building_id=self.room.building.id,
         level=1,
         room_number="1",
         mac=test_mac,
         processor=self.processing_user,
         when=session.utcnow() + timedelta(days=1),
     )
     assert (task := Task.q.first()) is not None
     assert task.parameters == UserMoveInParams(
         building_id=self.room.building.id,
         level=1,
         room_number="1",
         mac=test_mac,
     )
コード例 #14
0
ファイル: test_user.py プロジェクト: lukasjuhrich/pycroft
    def test_0010_move_in(self):
        def get_initial_groups():
            initial_groups = []
            for memberships in config["move_in"]["group_memberships"]:
                initial_groups.append(property.Group.q.filter(
                    property.Group.name == memberships["name"]
                ).one())
            return initial_groups

        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_dormitory = dormitory.Dormitory.q.first()
        test_hostname = "hans"
        test_mac = "12:11:11:11:11:11"

        new_user = UserHelper.move_in(
            test_name,
            test_login,
            test_email,
            test_dormitory,
            level=1,
            room_number="1",
            host_name=test_hostname,
            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.dormitory, test_dormitory)
        self.assertEqual(new_user.room.number, "1")
        self.assertEqual(new_user.room.level, 1)
        self.assertEqual(new_user.user_hosts[0].user_net_device.mac, test_mac)

        user_host = host.UserHost.q.filter_by(user=new_user).one()
        user_net_device = host.UserNetDevice.q.filter_by(host=user_host).one()
        self.assertEqual(user_net_device.mac, test_mac)
        user_cname_record = dns.CNAMERecord.q.filter_by(host=user_host).one()
        self.assertEqual(user_cname_record.name, test_hostname)
        user_a_record = dns.ARecord.q.filter_by(host=user_host).one()
        self.assertEqual(user_cname_record.record_for, user_a_record)

        #checks the initial group memberships
        user_groups = new_user.active_property_groups + new_user.active_traffic_groups
        for group in get_initial_groups():
            self.assertIn(group, user_groups)

        self.assertEqual(UserHelper.has_internet(new_user), True)
        self.assertIsNotNone(new_user.finance_account)
        self.assertEqual(new_user.finance_account.balance, 4000)
        self.assertFalse(new_user.has_property("away"))
コード例 #15
0
ファイル: test_user.py プロジェクト: sgeisler/pycroft
    def test_0010_move_in(self):
        def get_initial_groups():
            initial_groups = []
            for memberships in config["move_in"]["group_memberships"]:
                initial_groups.append(
                    property.Group.q.filter(
                        property.Group.name == memberships["name"]).one())
            return initial_groups

        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_dormitory = dormitory.Dormitory.q.first()
        test_hostname = "hans"
        test_mac = "12:11:11:11:11:11"

        new_user = UserHelper.move_in(test_name,
                                      test_login,
                                      test_email,
                                      test_dormitory,
                                      level=1,
                                      room_number="1",
                                      host_name=test_hostname,
                                      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.dormitory, test_dormitory)
        self.assertEqual(new_user.room.number, "1")
        self.assertEqual(new_user.room.level, 1)
        self.assertEqual(new_user.user_hosts[0].user_net_device.mac, test_mac)

        user_host = host.UserHost.q.filter_by(user=new_user).one()
        user_net_device = host.UserNetDevice.q.filter_by(host=user_host).one()
        self.assertEqual(user_net_device.mac, test_mac)
        user_cname_record = dns.CNAMERecord.q.filter_by(host=user_host).one()
        self.assertEqual(user_cname_record.name, test_hostname)
        user_a_record = dns.ARecord.q.filter_by(host=user_host).one()
        self.assertEqual(user_cname_record.record_for, user_a_record)

        #checks the initial group memberships
        user_groups = new_user.active_property_groups + new_user.active_traffic_groups
        for group in get_initial_groups():
            self.assertIn(group, user_groups)

        self.assertEqual(UserHelper.has_internet(new_user), True)
        self.assertIsNotNone(new_user.finance_account)
        self.assertEqual(new_user.finance_account.balance, 4000)
        self.assertFalse(new_user.has_property("away"))
コード例 #16
0
ファイル: test_user.py プロジェクト: lukasjuhrich/pycroft
    def test_0010_move_out_tmp(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_dormitory = dormitory.Dormitory.q.first()
        test_mac = "12:11:11:11:11:11"

        new_user = UserHelper.move_in(
            test_name,
            test_login,
            test_email,
            test_dormitory,
            level=1,
            room_number="1",
            mac=test_mac,
            processor=self.processing_user
        )

        out_time = datetime.now()
        self.assertFalse(new_user.has_property("away"))

        UserHelper.move_out_tmp(new_user, out_time, "", self.processing_user)

        # check for tmpAusgezogen group membership
        away_group = property.PropertyGroup.q.filter(
            property.PropertyGroup.name == config["move_out_tmp"]["group"]).one()
        self.assertIn(new_user, away_group.active_users)
        self.assertIn(away_group, new_user.active_property_groups)
        self.assertTrue(new_user.has_property("away"))

        # check if user has no ips left
        self.assertEqual(new_user.user_hosts[0].user_net_device.ips, [])

        # check log message
        log_entry = new_user.user_log_entries[-1]
        self.assertGreaterEqual(log_entry.timestamp, out_time)
        self.assertEqual(log_entry.author, self.processing_user)
コード例 #17
0
ファイル: test_user.py プロジェクト: sgeisler/pycroft
    def test_0010_move_out_tmp(self):
        test_name = u"Hans"
        test_login = u"hans66"
        test_email = u"*****@*****.**"
        test_dormitory = dormitory.Dormitory.q.first()
        test_mac = "12:11:11:11:11:11"

        new_user = UserHelper.move_in(test_name,
                                      test_login,
                                      test_email,
                                      test_dormitory,
                                      level=1,
                                      room_number="1",
                                      mac=test_mac,
                                      processor=self.processing_user)

        out_time = datetime.now()
        self.assertFalse(new_user.has_property("away"))

        UserHelper.move_out_tmp(new_user, out_time, "", self.processing_user)

        # check for tmpAusgezogen group membership
        away_group = property.PropertyGroup.q.filter(
            property.PropertyGroup.name == config["move_out_tmp"]
            ["group"]).one()
        self.assertIn(new_user, away_group.active_users)
        self.assertIn(away_group, new_user.active_property_groups)
        self.assertTrue(new_user.has_property("away"))

        # check if user has no ips left
        self.assertEqual(new_user.user_hosts[0].user_net_device.ips, [])

        # check log message
        log_entry = new_user.user_log_entries[-1]
        self.assertGreaterEqual(log_entry.timestamp, out_time)
        self.assertEqual(log_entry.author, self.processing_user)
コード例 #18
0
ファイル: test_user.py プロジェクト: agdsn/pycroft
    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)
コード例 #19
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))
コード例 #20
0
ファイル: test_user.py プロジェクト: agdsn/pycroft
    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())
コード例 #21
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())