def test_create_unit_itsystem(self):
        self.load_sample_structures()

        # Check the POST request
        c = lora.Connector(virkningfra='-infinity', virkningtil='infinity')

        unitid = "b688513d-11f7-4efc-b679-ab082a2055d0"

        with self.subTest('preconditions'):
            self.assertRequestResponse(
                '/service/ou/{}/details/it?validity=past'.format(unitid),
                [],
            )

            self.assertRequestResponse(
                '/service/ou/{}/details/it'.format(unitid),
                [],
            )

            self.assertRequestResponse(
                '/service/ou/{}/details/it?validity=future'.format(unitid),
                [],
            )

        self.assertEqual(
            list(
                c.organisationfunktion.get_all(
                    funktionsnavn='IT-system',
                    tilknyttedebrugere=unitid,
                )),
            [],
        )

        funcid, = self.assertRequest(
            '/service/details/create',
            json=[
                {
                    "type": "it",
                    "user_key": "root",
                    "org_unit": {
                        "uuid": unitid,
                    },
                    "itsystem": {
                        "uuid": "0872fb72-926d-4c5c-a063-ff800b8ee697"
                    },
                    "validity": {
                        "from": "2018-09-01",
                        "to": None
                    }
                },
            ],
        )

        self.assertRequestResponse(
            '/service/ou/{}/details/it?validity=past'.format(unitid),
            [],
        )

        self.assertRequestResponse(
            '/service/ou/{}/details/it'.format(unitid),
            [],
        )

        self.assertRequestResponse(
            '/service/ou/{}/details/it?validity=future'.format(unitid),
            [{
                "itsystem": {
                    "name": "Lokal Rammearkitektur",
                    "reference": None,
                    "system_type": None,
                    "user_key": "LoRa",
                    "uuid": "0872fb72-926d-4c5c-a063-ff800b8ee697",
                    "validity": {
                        "from": "2010-01-01",
                        "to": None
                    }
                },
                "org_unit": {
                    'name': 'Samfundsvidenskabelige fakultet',
                    'user_key': 'samf',
                    'uuid': 'b688513d-11f7-4efc-b679-ab082a2055d0',
                    'validity': {
                        'from': '2017-01-01',
                        'to': None
                    },
                },
                "person": None,
                "user_key": "root",
                "uuid": funcid,
                "validity": {
                    "from": "2018-09-01",
                    "to": None
                }
            }],
        )
Ejemplo n.º 2
0
    def test_get_effects(self, m):
        URL = (settings.LORA_URL + 'organisation/organisationenhed?'
               'uuid=00000000-0000-0000-0000-000000000000'
               '&virkningfra=2010-06-01T02%3A00%3A00%2B02%3A00'
               '&virkningtil=infinity')
        m.get(
            URL,
            complete_qs=True,
            json={
                "results": [[{
                    "id":
                    "00000000-0000-0000-0000-000000000000",
                    "registreringer": [{
                        "tilstande": {
                            "organisationenhedgyldighed": [{
                                "gyldighed": v,
                                "virkning": {
                                    "from": mora_util.to_lora_time(t1, ),
                                    "from_included": True,
                                    "to": mora_util.to_lora_time(t2, ),
                                    "to_included": False
                                }
                            } for t1, t2, v in [
                                ('01-01-1950', '01-01-2100', 'Aktiv'),
                                ('01-01-2100', '01-01-2300', 'Inaktiv'),
                                ('01-01-2300', '01-01-2500', 'Aktiv'),
                                ('01-01-2500', '01-01-2700', 'Inaktiv'),
                                ('01-01-2700', '01-01-2900', 'Aktiv'),
                                ('01-01-2900', '01-01-3100', 'Inaktiv'),
                                ('01-01-3100', '01-01-3300', 'Aktiv'),
                            ]]
                        },
                    }]
                }]]
            },
        )

        c = lora.Connector(validity='future')

        self.assertEqual(
            [("2100-01-01 00:00:00+01:00", "2300-01-01 00:00:00+01:00", {
                "tilstande": {
                    "organisationenhedgyldighed": [{
                        "gyldighed": "Inaktiv",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2100-01-01T00:00:00+01:00",
                            "to": "2300-01-01T00:00:00+01:00"
                        }
                    }]
                }
            }),
             ("2300-01-01 00:00:00+01:00", "2500-01-01 00:00:00+01:00", {
                 "tilstande": {
                     "organisationenhedgyldighed": [{
                         "gyldighed": "Aktiv",
                         "virkning": {
                             "from_included": True,
                             "to_included": False,
                             "from": "2300-01-01T00:00:00+01:00",
                             "to": "2500-01-01T00:00:00+01:00"
                         }
                     }]
                 }
             }),
             ("2500-01-01 00:00:00+01:00", "2700-01-01 00:00:00+01:00", {
                 "tilstande": {
                     "organisationenhedgyldighed": [{
                         "gyldighed": "Inaktiv",
                         "virkning": {
                             "from_included": True,
                             "to_included": False,
                             "from": "2500-01-01T00:00:00+01:00",
                             "to": "2700-01-01T00:00:00+01:00"
                         }
                     }]
                 }
             }),
             ("2700-01-01 00:00:00+01:00", "2900-01-01 00:00:00+01:00", {
                 "tilstande": {
                     "organisationenhedgyldighed": [{
                         "gyldighed": "Aktiv",
                         "virkning": {
                             "from_included": True,
                             "to_included": False,
                             "from": "2700-01-01T00:00:00+01:00",
                             "to": "2900-01-01T00:00:00+01:00"
                         }
                     }]
                 }
             }),
             ("2900-01-01 00:00:00+01:00", "3100-01-01 00:00:00+01:00", {
                 "tilstande": {
                     "organisationenhedgyldighed": [{
                         "gyldighed": "Inaktiv",
                         "virkning": {
                             "from_included": True,
                             "to_included": False,
                             "from": "2900-01-01T00:00:00+01:00",
                             "to": "3100-01-01T00:00:00+01:00"
                         }
                     }]
                 }
             }),
             ("3100-01-01 00:00:00+01:00", "3300-01-01 00:00:00+01:00", {
                 "tilstande": {
                     "organisationenhedgyldighed": [{
                         "gyldighed": "Aktiv",
                         "virkning": {
                             "from_included": True,
                             "to_included": False,
                             "from": "3100-01-01T00:00:00+01:00",
                             "to": "3300-01-01T00:00:00+01:00"
                         }
                     }]
                 }
             })],
            [(str(start), str(end), entry)
             for start, end, entry in c.organisationenhed.get_effects(
                 '00000000-0000-0000-0000-000000000000',
                 relevant={
                     'tilstande': ('organisationenhedgyldighed', ),
                 },
             )],
        )
    def test_create_employee_itsystem(self):
        self.load_sample_structures()

        # Check the POST request
        c = lora.Connector(virkningfra='-infinity', virkningtil='infinity')

        userid = "6ee24785-ee9a-4502-81c2-7697009c9053"

        with self.subTest('preconditions'):
            self.assertRequestResponse(
                '/service/e/{}/details/it?validity=past'.format(userid),
                [],
            )

            self.assertRequestResponse(
                '/service/e/{}/details/it'.format(userid),
                [],
            )

            self.assertRequestResponse(
                '/service/e/{}/details/it?validity=future'.format(userid),
                [],
            )

        self.assertEqual(
            list(
                c.organisationfunktion.get_all(
                    funktionsnavn='IT-system',
                    tilknyttedebrugere=userid,
                )),
            [],
        )

        funcid, = self.assertRequest(
            '/service/details/create',
            json=[
                {
                    "type": "it",
                    "user_key": "goofy-moofy",
                    "person": {
                        "uuid": userid,
                    },
                    "itsystem": {
                        "uuid": "0872fb72-926d-4c5c-a063-ff800b8ee697"
                    },
                    "validity": {
                        "from": "2018-09-01",
                        "to": None
                    }
                },
            ],
        )

        self.assertRequestResponse(
            '/service/e/{}/details/it?validity=past'.format(userid),
            [],
        )

        self.assertRequestResponse(
            '/service/e/{}/details/it'.format(userid),
            [],
        )

        self.assertRequestResponse(
            '/service/e/{}/details/it?validity=future'.format(userid),
            [{
                "itsystem": {
                    "name": "Lokal Rammearkitektur",
                    "reference": None,
                    "system_type": None,
                    "user_key": "LoRa",
                    "uuid": "0872fb72-926d-4c5c-a063-ff800b8ee697",
                    "validity": {
                        "from": "2010-01-01",
                        "to": None
                    }
                },
                "org_unit": None,
                "person": {
                    "name": "Fedtmule",
                    "uuid": "6ee24785-ee9a-4502-81c2-7697009c9053"
                },
                "user_key": "goofy-moofy",
                "uuid": funcid,
                "validity": {
                    "from": "2018-09-01",
                    "to": None
                }
            }],
        )
Ejemplo n.º 4
0
    def test_edit_leave_person(self):
        self.load_sample_structures()

        leave_uuid = self.assertRequest(
            '/service/details/create',
            json={
                "type": "leave",
                "uuid": "3be0c325-83db-48cc-9d60-12d80993a3c8",
                "person": {
                    "uuid": "53181ed2-f1de-4c4a-a8fd-ab358c2c454a",
                },
                "leave_type": {
                    'uuid': "62ec821f-4179-4758-bfdf-134529d186e9",
                },
                "user_key": "1234",
                "validity": {
                    "from": "2017-01-01",
                },
            },
            amqp_topics={'employee.leave.create': 1},
        )

        with self.subTest('failing without any'):
            self.assertRequestFails(
                '/service/details/edit',
                400,
                json={
                    "type": "leave",
                    "uuid": leave_uuid,
                    "data": {
                        "person": {
                            "uuid": "6ee24785-ee9a-4502-81c2-7697009c9053",
                        },
                        "validity": {
                            "from": "2018-01-01",
                        },
                    },
                },
                amqp_topics={'employee.leave.create': 1},
            )

        # first, create an engagement for the other user
        self.assertRequest(
            '/service/details/create',
            json={
                "type": "engagement",
                "uuid": "f1383b2d-d706-4c49-9249-20fa9ef7b55a",
                "person": {'uuid': "6ee24785-ee9a-4502-81c2-7697009c9053"},
                "org_unit": {'uuid': "9d07123e-47ac-4a9a-88c8-da82e3a4bc9e"},
                "job_function": {
                    'uuid': "3ef81e52-0deb-487d-9d0e-a69bbe0277d8"},
                "engagement_type": {
                    'uuid': "62ec821f-4179-4758-bfdf-134529d186e9"},
                "user_key": "1234",
                "validity": {
                    "from": "2018-01-01",
                }
            },
            amqp_topics={
                'employee.leave.create': 1,
                'employee.engagement.create': 1,
                'org_unit.engagement.create': 1,
            },
        )

        with self.subTest('failing too soon'):
            self.assertRequestFails(
                '/service/details/edit',
                400,
                json={
                    "type": "leave",
                    "uuid": leave_uuid,
                    "data": {
                        "person": {
                            "uuid": "6ee24785-ee9a-4502-81c2-7697009c9053",
                        },
                        "validity": {
                            "from": "2017-06-01",
                        },
                    },
                },
                amqp_topics={
                    'employee.leave.create': 1,
                    'employee.engagement.create': 1,
                    'org_unit.engagement.create': 1,
                },
            )

        self.assertRequestResponse(
            '/service/details/edit',
            leave_uuid,
            json={
                "type": "leave",
                "uuid": leave_uuid,
                "data": {
                    "person": {
                        "uuid": "6ee24785-ee9a-4502-81c2-7697009c9053",
                    },
                    "validity": {
                        "from": "2018-06-01",
                    },
                },
            },
            amqp_topics={
                'employee.leave.create': 1,
                'employee.engagement.create': 1,
                'org_unit.engagement.create': 1,
                'employee.leave.update': 1,
            },
        )

        expected_users = [
            {
                "uuid": "53181ed2-f1de-4c4a-a8fd-ab358c2c454a",
                "virkning": {
                    "from_included": True,
                    "to_included": False,
                    "from": "2017-01-01 00:00:00+01",
                    "to": "2018-06-01 00:00:00+02",
                }
            },
            {
                "uuid": "6ee24785-ee9a-4502-81c2-7697009c9053",
                "virkning": {
                    "from_included": True,
                    "to_included": False,
                    "from": "2018-06-01 00:00:00+02",
                    "to": "infinity"
                }
            }
        ]

        c = lora.Connector(virkningfra='-infinity', virkningtil='infinity')
        actual_leave = c.organisationfunktion.get(leave_uuid)

        self.assertEqual(
            expected_users,
            actual_leave['relationer']['tilknyttedebrugere'],
        )
Ejemplo n.º 5
0
Archivo: util.py Proyecto: syre/os2mo
def load_sample_structures(*,
                           verbose=False,
                           minimal=False,
                           check=False,
                           delete=False):
    '''Inject our test data into LoRA.

    '''
    orgid = '456362c4-0ee4-4e5e-a72c-751239745e62'

    if delete:
        c = lora.Connector()

        print('deleting', c.organisation.path, orgid, file=sys.stderr)
        c.organisation.delete(orgid)

        for scope, rel in (
            (c.facet, 'ansvarlig'),
            (c.klasse, 'ansvarlig'),
            (c.organisationenhed, 'tilhoerer'),
            (c.organisationfunktion, 'tilknyttedeorganisationer'),
            (c.bruger, 'tilhoerer'),
            (c.itsystem, 'tilhoerer'),
        ):
            for objid in scope.fetch(**{rel: orgid}):
                print('deleting', scope.path, objid, file=sys.stderr)
                scope.delete(objid)

    fixtures = [(
        'organisation/organisation',
        'create_organisation_AU.json',
        orgid,
    )]

    units = {
        'root': '2874e1dc-85e6-4269-823a-e1125484dfd3',
    }

    classes = {
        'afdeling': '32547559-cfc1-4d97-94c6-70b192eff825',
    }

    facets = {
        'enhedstype': 'fc917e7c-fc3b-47c2-8aa5-a0383342a280',
        'adressetype': 'e337bab4-635f-49ce-aa31-b44047a43aa1',
        'tilknytningstype': 'ef71fe9c-7901-48e2-86d8-84116e210202',
    }

    # TODO: add classifications, etc.

    functions = {
        'engagement': 'd000591f-8705-4324-897a-075e3623f37b',
        'tilknytning': 'c2153d5d-4a2b-492d-a18c-c498f7bb6221',
        'rolle': '1b20d0b9-96a0-42a6-b196-293bb86e62e8',
        'orlov': 'b807628c-030c-4f5f-a438-de41c1f26ba5',
        'leder': '05609702-977f-4869-9fb4-50ad74c6999a',
        'itsystem_user': '******',
        'itsystem_unit': 'cd4dcccb-5bf7-4c6b-9e1a-f6ebb193e276',
        'tilknyttetenhed_hist': 'daa77a4d-6500-483d-b099-2c2eb7fa7a76',
        'tilknyttetenhed_hum': '5c68402c-2a8d-4776-9237-16349fc72648',
    }

    users = {
        'andersand': '53181ed2-f1de-4c4a-a8fd-ab358c2c454a',
        'fedtmule': '6ee24785-ee9a-4502-81c2-7697009c9053',
    }

    itsystems = {
        'ad': '59c135c9-2b15-41cc-97c8-b5dff7180beb',
        'lora': '0872fb72-926d-4c5c-a063-ff800b8ee697',
    }

    if not minimal:
        units.update({
            'hum': '9d07123e-47ac-4a9a-88c8-da82e3a4bc9e',
            'samf': 'b688513d-11f7-4efc-b679-ab082a2055d0',
            'fil': '85715fc7-925d-401b-822d-467eb4b163b6',
            'hist': 'da77153e-30f3-4dc2-a611-ee912a28d8aa',
            'frem': '04c78fc2-72d2-4d02-b55f-807af19eac48',
        })

        classes.update({
            'fakultet': '4311e351-6a3c-4e7e-ae60-8a3b2938fbd6',
            'institut': 'ca76a441-6226-404f-88a9-31e02e420e52',
            'email': 'c78eb6f7-8a9e-40b3-ac80-36b9f371c3e0',
            'telefon': '1d1d3711-5af4-4084-99b3-df2b8752fdec',
            'adresse': '4e337d8e-1fd2-4449-8110-e0c8a22958ed',
            'ean': 'e34d4426-9845-4c72-b31e-709be85d6fa2',
            'medlem': '62ec821f-4179-4758-bfdf-134529d186e9',
        })

        functions.update({
            'email_andersand': 'fba61e38-b553-47cc-94bf-8c7c3c2a6887',
            'email_fedtmule': '64ea02e2-8469-4c54-a523-3d46729e86a7',
            'adresse_fedtmule': 'cd6008bc-1ad2-4272-bc1c-d349ef733f52',
            'adresse_root': '414044e0-fe5f-4f82-be20-1e107ad50e80',
            'adresse_hum': 'e1a9cede-8c9b-4367-b628-113834361871',
            'tlf_hum': '55848eca-4e9e-4f30-954b-78d55eec0473',
            'ean_hum': 'a0fe7d43-1e0d-4232-a220-87098024b34d',
        })

    for facetkey, facetid in facets.items():
        fixtures.append((
            'klassifikation/facet',
            'create_facet_{}.json'.format(facetkey),
            facetid,
        ))

    for classkey, classid in classes.items():
        fixtures.append((
            'klassifikation/klasse',
            'create_klasse_{}.json'.format(classkey),
            classid,
        ))

    for unitkey, unitid in units.items():
        fixtures.append((
            'organisation/organisationenhed',
            'create_organisationenhed_{}.json'.format(unitkey),
            unitid,
        ))

    for funckey, funcid in functions.items():
        fixtures.append((
            'organisation/organisationfunktion',
            'create_organisationfunktion_{}.json'.format(funckey),
            funcid,
        ))

    for userkey, userid in users.items():
        fixtures.append((
            'organisation/bruger',
            'create_bruger_{}.json'.format(userkey),
            userid,
        ))

    for itsystemkey, itsystemid in itsystems.items():
        fixtures.append((
            'organisation/itsystem',
            'create_itsystem_{}.json'.format(itsystemkey),
            itsystemid,
        ))

    for path, fixture_name, uuid in fixtures:
        if check:
            if lora.get(path, uuid):
                raise Exception('{} already exists at {}!'.format(
                    uuid,
                    path,
                ))
        else:
            load_fixture(path, fixture_name, uuid)
Ejemplo n.º 6
0
    def test_terminate_leave(self):
        self.load_sample_structures()

        # Check the POST request
        c = lora.Connector(virkningfra='-infinity', virkningtil='infinity')

        userid = "53181ed2-f1de-4c4a-a8fd-ab358c2c454a"

        payload = {
            "validity": {
                "to": "2017-11-30"
            }
        }

        self.assertRequestResponse(
            '/service/e/{}/terminate'.format(userid),
            userid,
            json=payload,
            amqp_topics={
                'employee.address.delete': 1,
                'employee.association.delete': 1,
                'employee.engagement.delete': 1,
                'employee.employee.delete': 1,
                'employee.it.delete': 1,
                'employee.leave.delete': 1,
                'employee.manager.delete': 1,
                'employee.role.delete': 1,
                'org_unit.association.delete': 1,
                'org_unit.engagement.delete': 1,
                'org_unit.manager.delete': 1,
                'org_unit.role.delete': 1,
            },
        )

        expected = {
            "note": "Afsluttet",
            "relationer": {
                "organisatoriskfunktionstype": [
                    {
                        "uuid": "32547559-cfc1-4d97-94c6-70b192eff825",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "infinity"
                        }
                    }
                ],
                "tilknyttedeorganisationer": [
                    {
                        "uuid": "456362c4-0ee4-4e5e-a72c-751239745e62",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "infinity"
                        }
                    }
                ],
                "tilknyttedebrugere": [
                    {
                        "uuid": "53181ed2-f1de-4c4a-a8fd-ab358c2c454a",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "infinity"
                        }
                    }
                ],
            },
            "livscykluskode": "Rettet",
            "tilstande": {
                "organisationfunktiongyldighed": [
                    {
                        "gyldighed": "Aktiv",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "2017-12-01 00:00:00+01"
                        }
                    },
                    {
                        "gyldighed": "Inaktiv",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-12-01 00:00:00+01",
                            "to": "infinity"
                        }
                    },
                ]
            },
            "attributter": {
                "organisationfunktionegenskaber": [
                    {
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "infinity"
                        },
                        "brugervendtnoegle": "bvn",
                        "funktionsnavn": "Orlov"
                    }
                ]
            },
        }

        leave_uuid = 'b807628c-030c-4f5f-a438-de41c1f26ba5'

        actual_leave = c.organisationfunktion.get(leave_uuid)

        # drop lora-generated timestamps & users
        del actual_leave['fratidspunkt'], actual_leave[
            'tiltidspunkt'], actual_leave[
            'brugerref']

        self.assertEqual(expected, actual_leave)
Ejemplo n.º 7
0
    def test_edit_leave_overwrite(self):
        self.load_sample_structures()

        leave_uuid = 'b807628c-030c-4f5f-a438-de41c1f26ba5'

        req = [{
            "type": "leave",
            "uuid": leave_uuid,
            "original": {
                "validity": {
                    "from": "2017-01-01",
                    "to": None
                },
                "leave_type": {
                    'uuid': "32547559-cfc1-4d97-94c6-70b192eff825"},
            },
            "data": {
                "leave_type": {
                    'uuid': "bcd05828-cc10-48b1-bc48-2f0d204859b2"
                },
                "validity": {
                    "from": "2018-04-01",
                },
            },
        }]

        self.assertRequestResponse(
            '/service/details/edit',
            [leave_uuid],
            json=req,
            amqp_topics={'employee.leave.update': 1},
        )

        expected_leave = {
            "note": "Rediger orlov",
            "relationer": {
                "organisatoriskfunktionstype": [
                    {
                        "uuid": "32547559-cfc1-4d97-94c6-70b192eff825",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "2018-04-01 00:00:00+02"
                        }
                    },
                    {
                        "uuid": "bcd05828-cc10-48b1-bc48-2f0d204859b2",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2018-04-01 00:00:00+02",
                            "to": "infinity"
                        }
                    },
                ],
                "tilknyttedeorganisationer": [
                    {
                        "uuid": "456362c4-0ee4-4e5e-a72c-751239745e62",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "infinity"
                        }
                    }
                ],
                "tilknyttedebrugere": [
                    {
                        "uuid": "53181ed2-f1de-4c4a-a8fd-ab358c2c454a",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "infinity"
                        }
                    }
                ]
            },
            "livscykluskode": "Rettet",
            "tilstande": {
                "organisationfunktiongyldighed": [
                    {
                        "gyldighed": "Aktiv",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2018-04-01 00:00:00+02",
                            "to": "infinity"
                        }
                    },
                    {
                        "gyldighed": "Inaktiv",
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "2018-04-01 00:00:00+02"
                        }
                    }
                ]
            },
            "attributter": {
                "organisationfunktionegenskaber": [
                    {
                        "virkning": {
                            "from_included": True,
                            "to_included": False,
                            "from": "2017-01-01 00:00:00+01",
                            "to": "infinity"
                        },
                        "brugervendtnoegle": "bvn",
                        "funktionsnavn": "Orlov"
                    }
                ]
            },
        }

        c = lora.Connector(virkningfra='-infinity', virkningtil='infinity')
        actual_leave = c.organisationfunktion.get(leave_uuid)

        # drop lora-generated timestamps & users
        del actual_leave['fratidspunkt'], actual_leave[
            'tiltidspunkt'], actual_leave[
            'brugerref']

        self.assertEqual(expected_leave, actual_leave)
Ejemplo n.º 8
0
    def test_create_leave(self):
        self.load_sample_structures()

        # Check the POST request
        c = lora.Connector(virkningfra='-infinity', virkningtil='infinity')

        userid = "53181ed2-f1de-4c4a-a8fd-ab358c2c454a"
        leave_type = "62ec821f-4179-4758-bfdf-134529d186e9"

        payload = [
            {
                "type": "leave",
                "person": {
                    "uuid": userid,
                },
                "leave_type": {
                    'uuid': leave_type},
                "user_key": "1234",
                "validity": {
                    "from": "2017-12-01",
                    "to": "2017-12-01",
                },
            }
        ]

        leaveid, = self.assertRequest(
            '/service/details/create',
            json=payload,
            amqp_topics={'employee.leave.create': 1},
        )

        expected = {
            "livscykluskode": "Importeret",
            "tilstande": {
                "organisationfunktiongyldighed": [
                    {
                        "virkning": {
                            "to_included": False,
                            "to": "2017-12-02 00:00:00+01",
                            "from_included": True,
                            "from": "2017-12-01 00:00:00+01"
                        },
                        "gyldighed": "Aktiv"
                    }
                ]
            },
            "note": "Oprettet i MO",
            "relationer": {
                "tilknyttedeorganisationer": [
                    {
                        "virkning": {
                            "to_included": False,
                            "to": "2017-12-02 00:00:00+01",
                            "from_included": True,
                            "from": "2017-12-01 00:00:00+01"
                        },
                        "uuid": "456362c4-0ee4-4e5e-a72c-751239745e62"
                    }
                ],
                "tilknyttedebrugere": [
                    {
                        "virkning": {
                            "to_included": False,
                            "to": "2017-12-02 00:00:00+01",
                            "from_included": True,
                            "from": "2017-12-01 00:00:00+01"
                        },
                        "uuid": userid
                    }
                ],
                "organisatoriskfunktionstype": [
                    {
                        "virkning": {
                            "to_included": False,
                            "to": "2017-12-02 00:00:00+01",
                            "from_included": True,
                            "from": "2017-12-01 00:00:00+01"
                        },
                        "uuid": leave_type
                    }
                ],
            },
            "attributter": {
                "organisationfunktionegenskaber": [
                    {
                        "virkning": {
                            "to_included": False,
                            "to": "2017-12-02 00:00:00+01",
                            "from_included": True,
                            "from": "2017-12-01 00:00:00+01"
                        },
                        "brugervendtnoegle": "1234",
                        "funktionsnavn": "Orlov"
                    }
                ]
            }
        }

        actual_leave = c.organisationfunktion.get(leaveid)

        self.assertRegistrationsEqual(actual_leave, expected)
Ejemplo n.º 9
0
    def test_edit_employee(self):
        # A generic example of editing an employee

        self.load_sample_structures()

        userid = "6ee24785-ee9a-4502-81c2-7697009c9053"

        req = [{
            "type": "employee",
            "original": None,
            "data": {
                "validity": {
                    "from": "2017-02-02",
                },
                "user_key": "regnbøfssalat",
                "cpr_no": "0101010101",
                "givenname": "Martin L",
                "surname": "Gore",
            },
            "uuid": userid
        }]

        self.assertRequestResponse(
            '/service/details/edit',
            [userid],
            json=req,
            amqp_topics={'employee.employee.update': 1},
        )

        # there must be a registration of the new name
        expected_brugeregenskaber = [{
            'brugervendtnoegle': 'fedtmule',
            'virkning': {
                'from': '1932-05-12 00:00:00+01',
                'from_included': True,
                'to': '2017-02-02 00:00:00+01',
                'to_included': False
            }
        }, {
            'brugervendtnoegle': 'regnbøfssalat',
            'virkning': {
                'from': '2017-02-02 00:00:00+01',
                'from_included': True,
                'to': 'infinity',
                'to_included': False
            }
        }]

        expected_brugerudvidelser = [{
            'fornavn': 'Fedtmule',
            'efternavn': 'Hund',
            'virkning': {
                'from': '1932-05-12 00:00:00+01',
                'from_included': True,
                'to': '2017-02-02 00:00:00+01',
                'to_included': False
            }
        }, {
            'fornavn': 'Martin L',
            'efternavn': 'Gore',
            'virkning': {
                'from': '2017-02-02 00:00:00+01',
                'from_included': True,
                'to': 'infinity',
                'to_included': False
            }
        }]

        # but looking at the validity of the original that was sent along
        # the period from that fromdate up to the this fromdate has been
        # removed

        expected_brugergyldighed = [{
            'gyldighed': 'Aktiv',
            'virkning': {
                'from': '1932-05-12 00:00:00+01',
                'from_included': True,
                'to': '2017-02-02 00:00:00+01',
                'to_included': False
            }
        }, {
            'gyldighed': 'Aktiv',
            'virkning': {
                'from': '2017-02-02 00:00:00+01',
                'from_included': True,
                'to': 'infinity',
                'to_included': False
            }
        }]

        expected_tilknyttedepersoner = [
            {
                'urn': 'urn:dk:cpr:person:0101010101',
                'virkning': {
                    'from': '2017-02-02 00:00:00+01',
                    'from_included': True,
                    'to': 'infinity',
                    'to_included': False
                }
            },
            {
                'urn': 'urn:dk:cpr:person:1205320000',
                'virkning': {
                    'from': '1932-05-12 00:00:00+01',
                    'from_included': True,
                    'to': '2017-02-02 00:00:00+01',
                    'to_included': False
                }
            },
        ]

        c = lora.Connector(virkningfra='-infinity', virkningtil='infinity')
        actual = c.bruger.get(userid)

        self.assertEqual(expected_brugeregenskaber,
                         actual['attributter']['brugeregenskaber'])
        self.assertEqual(expected_brugerudvidelser,
                         actual['attributter']['brugerudvidelser'])
        self.assertEqual(expected_brugergyldighed,
                         actual['tilstande']['brugergyldighed'])
        self.assertEqual(expected_tilknyttedepersoner,
                         actual['relationer']['tilknyttedepersoner'])
Ejemplo n.º 10
0
    def test_create_employee(self):
        self.load_sample_structures()

        c = lora.Connector(virkningfra='-infinity', virkningtil='infinity')

        mock_uuid = "b6c268d2-4671-4609-8441-6029077d8efc"

        payload = {
            "givenname": "Torkild",
            "surname": "von Testperson",
            "cpr_no": "0101501234",
            "org": {
                'uuid': "456362c4-0ee4-4e5e-a72c-751239745e62"
            }
        }

        with notsouid.freeze_uuid(mock_uuid):
            r = self.request('/service/e/create', json=payload)
        userid = r.json

        expected = {
            "livscykluskode": "Importeret",
            "note": "Oprettet i MO",
            "attributter": {
                "brugeregenskaber": [{
                    "virkning": {
                        "to_included": False,
                        "to": "infinity",
                        "from_included": True,
                        "from": "1950-01-01 00:00:00+01"
                    },
                    "brugervendtnoegle": mock_uuid,
                    "integrationsdata": "{}"
                }],
                'brugerudvidelser': [{
                    'efternavn': 'von Testperson',
                    'fornavn': 'Torkild',
                    'virkning': {
                        'from': '1950-01-01 '
                        '00:00:00+01',
                        'from_included': True,
                        'to': 'infinity',
                        'to_included': False
                    }
                }]
            },
            "relationer": {
                "tilhoerer": [{
                    "virkning": {
                        "to_included": False,
                        "to": "infinity",
                        "from_included": True,
                        "from": "1950-01-01 00:00:00+01"
                    },
                    "uuid": "456362c4-0ee4-4e5e-a72c-751239745e62"
                }],
                "tilknyttedepersoner": [{
                    "virkning": {
                        "to_included": False,
                        "to": "infinity",
                        "from_included": True,
                        "from": "1950-01-01 00:00:00+01"
                    },
                    "urn": "urn:dk:cpr:person:0101501234"
                }],
            },
            "tilstande": {
                "brugergyldighed": [{
                    "virkning": {
                        "to_included": False,
                        "to": "infinity",
                        "from_included": True,
                        "from": "1950-01-01 00:00:00+01"
                    },
                    "gyldighed": "Aktiv"
                }]
            },
        }

        actual = c.bruger.get(userid)

        self.assertRegistrationsEqual(expected, actual)

        self.assertRequestResponse(
            '/service/e/{}/'.format(userid),
            {
                'surname': 'von Testperson',
                'givenname': 'Torkild',
                'name': 'Torkild von Testperson',
                'org': {
                    'name': 'Aarhus Universitet',
                    'user_key': 'AU',
                    'uuid': '456362c4-0ee4-4e5e-a72c-751239745e62',
                },
                'user_key': mock_uuid,
                'cpr_no': '0101501234',
                'uuid': userid,
            },
            amqp_topics={'employee.employee.create': 1},
        )