Skip to content

Commit 07bb943

Browse files
[SDK-2004] Add support for issuing authority sub check
1 parent d2d159d commit 07bb943

File tree

5 files changed

+107
-0
lines changed

5 files changed

+107
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from .issuing_authority_sub_check import IssuingAuthoritySubCheckBuilder
2+
3+
__all__ = [
4+
"IssuingAuthoritySubCheckBuilder",
5+
]
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# -*- coding: utf-8 -*-
2+
3+
from yoti_python_sdk.doc_scan.session.create.filter.document_filter import DocumentFilter
4+
from yoti_python_sdk.utils import YotiSerializable
5+
from .sub_check import SubRequestedCheck
6+
7+
8+
class IssuingAuthoritySubCheck(SubRequestedCheck):
9+
"""
10+
Requests creation of a Issuing Authority Sub Check.
11+
"""
12+
13+
def __init__(self, filter=None):
14+
self._filter = filter
15+
16+
@property
17+
def requested(self):
18+
return True
19+
20+
@property
21+
def filter(self):
22+
return self._filter
23+
24+
25+
class IssuingAuthoritySubCheckBuilder:
26+
"""
27+
Builder for Issuing Authority Sub Check.
28+
"""
29+
def __init__(self):
30+
self._filter = None
31+
32+
def with_filter(self, filter):
33+
if not issubclass(type(filter), DocumentFilter):
34+
raise ValueError('invalid filter')
35+
36+
self._filter = filter
37+
38+
return self
39+
40+
def build(self):
41+
return IssuingAuthoritySubCheck(filter=self._filter)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from abc import ABCMeta
2+
from abc import abstractmethod
3+
4+
from yoti_python_sdk.utils import YotiSerializable
5+
6+
7+
class SubRequestedCheck(YotiSerializable):
8+
"""
9+
Requests creation of a SubCheck to be performed on a document
10+
"""
11+
12+
__metaclass__ = ABCMeta
13+
14+
@property
15+
@abstractmethod
16+
def type(self):
17+
raise NotImplementedError
18+
19+
def to_json(self):
20+
return remove_null_values({"type": self.type, "config": self.config})

yoti_python_sdk/tests/doc_scan/session/create/subcheck/__init__.py

Whitespace-only changes.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import unittest
2+
3+
from yoti_python_sdk.doc_scan.session.create.filter.orthogonal_restrictions_filter import \
4+
OrthogonalRestrictionsFilterBuilder
5+
from yoti_python_sdk.doc_scan.session.create.subcheck import (
6+
IssuingAuthoritySubCheckBuilder
7+
)
8+
from yoti_python_sdk.doc_scan.session.create.subcheck.issuing_authority_sub_check import IssuingAuthoritySubCheck
9+
10+
11+
class IssuingAuthoritySubCheckTest(unittest.TestCase):
12+
def test_should_build_correctly_without_additional_data(self):
13+
issuing_authority_sub_check = IssuingAuthoritySubCheckBuilder().build()
14+
15+
assert isinstance(issuing_authority_sub_check, IssuingAuthoritySubCheck)
16+
17+
def test_should_build_correctly_with_filter(self):
18+
filter = OrthogonalRestrictionsFilterBuilder().with_whitelisted_country_codes(
19+
["GBR", "FRA"]).with_whitelisted_document_types(["PASSPORT", "STATE_ID"]).build()
20+
21+
issuing_authority_sub_check = IssuingAuthoritySubCheckBuilder().with_filter(
22+
filter=filter).build()
23+
24+
assert isinstance(issuing_authority_sub_check, IssuingAuthoritySubCheck)
25+
assert issuing_authority_sub_check.filter == filter
26+
27+
def test_should_always_build_with_requested_as_boolean_true(self):
28+
issuing_authority_sub_check = IssuingAuthoritySubCheckBuilder().build()
29+
30+
assert issuing_authority_sub_check.requested is True
31+
32+
def test_build_invalid_filter(self):
33+
filter = 'invalid'
34+
35+
with self.assertRaises(ValueError):
36+
IssuingAuthoritySubCheckBuilder().with_filter(
37+
filter=filter).build()
38+
39+
40+
if __name__ == "__main__":
41+
unittest.main()

0 commit comments

Comments
 (0)