FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
Commit 9456c394 authored by Dr Rich Wareham's avatar Dr Rich Wareham
Browse files

Merge branch 'add-identifiers-for-groups-and-apps' into 'main'

Add identifiers for groups and apps

See merge request !5
parents dec44c24 9572844b
No related branches found
No related tags found
1 merge request!5Add identifiers for groups and apps
Pipeline #121272 failed
......@@ -2,6 +2,7 @@ from typing import Optional, List, Callable, Dict
from collections import namedtuple
from dataclasses import dataclass
from functools import lru_cache
from frozendict import frozendict
@dataclass(frozen=True, eq=True)
......@@ -40,44 +41,44 @@ class IdentifierSchemes:
CRSID = IdentifierScheme(
'v1.person.identifiers.cam.ac.uk',
'CRSid',
{
frozendict({
'deprecated': 'person.crs.identifiers.uis.cam.ac.uk',
'deprecated-versioned': 'person.v1.crs.identifiers.cam.ac.uk',
}
})
)
USN = IdentifierScheme(
'person.v1.student-records.university.identifiers.cam.ac.uk',
'USN',
{
frozendict({
'deprecated': 'person.camsis.identifiers.admin.cam.ac.uk',
'deprecated-versioned': 'person.v1.ust.identifiers.cam.ac.uk',
}
})
)
STAFF_NUMBER = IdentifierScheme(
'person.v1.human-resources.university.identifiers.cam.ac.uk',
'Staff Number',
{
frozendict({
'deprecated': 'person.chris.identifiers.admin.cam.ac.uk',
'deprecated-versioned': 'person.v1.uhr.identifiers.cam.ac.uk',
}
})
)
BOARD_OF_GRADUATE_STUDIES = IdentifierScheme(
'person.v1.board-of-graduate-studies.university.identifiers.cam.ac.uk',
'Board of Graduate Studies Identifier',
{
frozendict({
'deprecated': 'person.bgs.identifiers.admin.cam.ac.uk',
}
})
)
LEGACY_CARDHOLDER = IdentifierScheme(
'person.v1.legacy-card.university.identifiers.cam.ac.uk',
'Legacy cardholder Identifier',
{
frozendict({
'deprecated': 'person.legacy_card.identifiers.admin.cam.ac.uk',
}
})
)
"""
......@@ -88,25 +89,25 @@ class IdentifierSchemes:
STUDENT_INSTITUTION = IdentifierScheme(
'institution.v1.student-records.university.identifiers.cam.ac.uk',
'Student Institution',
{
frozendict({
'deprecated': 'institution.v1.ust.identifiers.cam.ac.uk',
}
})
)
HR_INSTITUTION = IdentifierScheme(
'institution.v1.human-resources.university.identifiers.cam.ac.uk',
'Human Resources Institution',
{
frozendict({
'deprecated': 'institution.v1.uhr.identifiers.cam.ac.uk',
}
})
)
LEGACY_CARD_INSTITUTION = IdentifierScheme(
'institution.v1.legacy-card.university.identifiers.cam.ac.uk',
'Legacy Card Institution',
{
frozendict({
'deprecated': 'inst.legacy_card.identifiers.admin.cam.ac.uk',
}
})
)
"""
......@@ -117,33 +118,33 @@ class IdentifierSchemes:
STUDENT_ACADEMIC_PLAN = IdentifierScheme(
'academic-plan.v1.student-records.university.identifiers.cam.ac.uk',
'Student Academic Plan',
{
frozendict({
'deprecated': 'academicPlan.v1.ust.identifiers.cam.ac.uk',
}
})
)
CARD = IdentifierScheme(
'card.v1.card.university.identifiers.cam.ac.uk',
'Card Identifier',
{
frozendict({
'deprecated': 'card.card.identifiers.uis.cam.ac.uk',
}
})
)
LEGACY_TEMP_CARD = IdentifierScheme(
'temporary-card.v1.card.university.identifiers.cam.ac.uk',
'Temporary Card Identifier',
{
'deprecated': 'temp_id.card.identifiers.uis.cam.ac.uk'
}
frozendict({
'deprecated': 'temp_id.card.identifiers.uis.cam.ac.uk',
})
)
MIFARE_ID = IdentifierScheme(
'mifare-identifier.v1.card.university.identifiers.cam.ac.uk',
'Mifare Identifier',
{
frozendict({
'deprecated': 'mifare_id.card.identifiers.uis.cam.ac.uk',
},
}),
value_parser=(
lambda v: v.lstrip('0') or '0' # fallback to '0' to avoid stripping '000' to ''
)
......@@ -152,49 +153,61 @@ class IdentifierSchemes:
MIFARE_NUMBER = IdentifierScheme(
'mifare-number.v1.card.university.identifiers.cam.ac.uk',
'Mifare Number',
{
frozendict({
'deprecated': 'mifare_number.card.identifiers.uis.cam.ac.uk',
}
})
)
BARCODE = IdentifierScheme(
'barcode.v1.card.university.identifiers.cam.ac.uk',
'Card Barcode',
{
frozendict({
'deprecated': 'barcode.identifiers.lib.cam.ac.uk',
}
})
)
CARD_LOGO = IdentifierScheme(
'card-logo.v1.card.university.identifiers.cam.ac.uk',
'Card Logo Identifier',
{
frozendict({
'deprecated': 'card_logo.card.identifiers.uis.cam.ac.uk',
}
})
)
PHOTO = IdentifierScheme(
'photo.v1.photo.university.identifiers.cam.ac.uk',
'Photo Identifier',
{
frozendict({
'deprecated': 'photo_id.photo.identifiers.uis.cam.ac.uk',
}
})
)
LEGACY_PHOTO = IdentifierScheme(
'photo.v1.legacy-card.university.identifiers.cam.ac.uk',
'Legacy Photo Identifier',
{
frozendict({
'deprecated': 'photo.legacy_card.identifiers.admin.cam.ac.uk',
}
})
)
LEGACY_CARD = IdentifierScheme(
'card.v1.legacy-card.university.identifiers.cam.ac.uk',
'Legacy Card Identifier',
{
frozendict({
'deprecated': 'card.legacy_card.identifiers.admin.cam.ac.uk',
}
})
)
LOOKUP_GROUP = IdentifierScheme(
'groups.lookup.cam.ac.uk',
'Lookup Group Identifier',
frozendict({})
)
API_GATEWAY_APPLICATION = IdentifierScheme(
'application.api.apps.cam.ac.uk',
'Application Gateway Application',
frozendict({})
)
@staticmethod
......
dataclasses
frozendict
# for the API clients
requests
......
......@@ -8,7 +8,7 @@ PACKAGE_DESCRIPTION = (
"A module containing helpers and shared code related to identity systems within UIS, "
"University of Cambridge."
)
PACKAGE_VERSION = "0.1.3"
PACKAGE_VERSION = "0.1.4"
PACKAGE_URL = "https://gitlab.developers.cam.ac.uk/uis/devops/iam/identity-lib"
......
......@@ -39,18 +39,16 @@ class TestCardParsingMethods(TestCase):
def test_get_identifier_by_scheme_can_find_all_ids(self):
test_card = TestCardParsingMethods.card_with_all_ids
for id_scheme in IdentifierSchemes.get_registered_schemes():
expected_val = next(
(id['value'] for id in test_card['identifiers'] if id['scheme'] == str(id_scheme))
)
for identifier_dict in test_card['identifiers']:
scheme = identifier_dict['scheme']
value = identifier_dict['value']
self.assertEqual(
CardClient.get_identifier_by_scheme(test_card, id_scheme),
f'{expected_val}@{id_scheme}'.lower()
CardClient.get_identifier_by_scheme(test_card, scheme),
f'{value}@{scheme}'.lower()
)
def test_get_identifier_by_scheme_returns_none_for_no_matching_identifer(self):
def test_get_identifier_by_scheme_returns_none_for_no_matching_identifier(self):
test_card = {'identifiers': []}
for id_scheme in IdentifierSchemes.get_registered_schemes():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment