Skip to content

Commit 8a3147e

Browse files
authored
Merge pull request #109 from getyoti/release-2.9.2
Release 2.9.2
2 parents 8d97a0f + 9031a8c commit 8a3147e

File tree

4 files changed

+77
-8
lines changed

4 files changed

+77
-8
lines changed

sonar-project.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
sonar.projectKey = yoti-web-sdk:python
22
sonar.projectName = python-sdk
3-
sonar.projectVersion = 2.9.1
3+
sonar.projectVersion = 2.9.2
44
sonar.exclusions=yoti_python_sdk/tests/**,examples/**
55

66
sonar.python.pylint.reportPath=coverage.out

yoti_python_sdk/dynamic_sharing_service/extension/location_constraint_extension_builder.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,41 @@ def __init__(self):
1111
self.__extension["content"] = {}
1212
self.__device_location = {
1313
"latitude": None,
14-
"longtitude": None,
14+
"longitude": None,
1515
"radius": None,
1616
"max_uncertainty_radius": None,
1717
}
1818
self.__extension["content"]["expected_device_location"] = self.__device_location
1919

2020
def with_latitude(self, latitude):
21+
if not isinstance(latitude, float) and not isinstance(latitude, int):
22+
raise ValueError("Latitude must be float or int")
23+
if not -90 <= latitude <= 90:
24+
raise ValueError("Latitude must be between -90 and 90 degrees")
2125
self.__device_location["latitude"] = latitude
2226
return self
2327

24-
def with_longtitude(self, longtitude):
25-
self.__device_location["longtitude"] = longtitude
28+
def with_longitude(self, longitude):
29+
if not isinstance(longitude, float) and not isinstance(longitude, int):
30+
raise ValueError("Lontitude must be float or int")
31+
if not -180 <= longitude <= 180:
32+
raise ValueError("Longitude must be between -180 and 180 degrees")
33+
self.__device_location["longitude"] = longitude
2634
return self
2735

2836
def with_radius(self, radius):
37+
if not isinstance(radius, float) and not isinstance(radius, int):
38+
raise ValueError("Radius must be float or int")
39+
if not 0 <= radius:
40+
raise ValueError("Radius must be >= 0")
2941
self.__device_location["radius"] = radius
3042
return self
3143

3244
def with_uncertainty(self, uncertainty):
45+
if not isinstance(uncertainty, float) and not isinstance(uncertainty, int):
46+
raise ValueError("Uncertainty must be float or int")
47+
if not 0 <= uncertainty:
48+
raise ValueError("Uncertainty must be >= 0")
3349
self.__device_location["max_uncertainty_radius"] = uncertainty
3450
return self
3551

yoti_python_sdk/tests/dynamic_sharing_service/extension/test_location_constraint_extension_builder.py

Lines changed: 56 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,71 @@
44
from yoti_python_sdk.dynamic_sharing_service.extension.location_constraint_extension_builder import (
55
LocationConstraintExtensionBuilder,
66
)
7+
import pytest
8+
9+
10+
@pytest.mark.parametrize("longitude", [270.00, -181, "27.00"])
11+
def test_longitude_validation_should_reject_invalid(longitude):
12+
extension = LocationConstraintExtensionBuilder()
13+
with pytest.raises(ValueError):
14+
extension.with_longitude(longitude)
15+
16+
17+
@pytest.mark.parametrize("longitude", [180.0, -90])
18+
def test_longitude_vaidation_should_accept_valid(longitude):
19+
extension = LocationConstraintExtensionBuilder()
20+
extension.with_longitude(longitude)
21+
22+
23+
@pytest.mark.parametrize("latitude", [270.00, -181, "27.00", 91, -180])
24+
def test_latitude_validation_should_reject_invalid(latitude):
25+
extension = LocationConstraintExtensionBuilder()
26+
with pytest.raises(ValueError):
27+
extension.with_latitude(latitude)
28+
29+
30+
@pytest.mark.parametrize("latitude", [18.0, -90])
31+
def test_latitude_validation_should_accept_valid(latitude):
32+
extension = LocationConstraintExtensionBuilder()
33+
extension.with_latitude(latitude)
34+
35+
36+
@pytest.mark.parametrize("uncertainty", [-1, -0.01, "3"])
37+
def test_uncertainty_validation_should_reject_invalid(uncertainty):
38+
extension = LocationConstraintExtensionBuilder()
39+
with pytest.raises(ValueError):
40+
extension.with_uncertainty(uncertainty)
41+
42+
43+
@pytest.mark.parametrize("uncertainty", [0, 1, 1e3])
44+
def test_uncertainty_validation_should_accept_valid(uncertainty):
45+
extension = LocationConstraintExtensionBuilder()
46+
extension.with_uncertainty(uncertainty)
47+
48+
49+
@pytest.mark.parametrize("radius", [-1, -0.01, "3"])
50+
def test_radius_validation_should_reject_invalid(radius):
51+
extension = LocationConstraintExtensionBuilder()
52+
with pytest.raises(ValueError):
53+
extension.with_radius(radius)
54+
55+
56+
@pytest.mark.parametrize("radius", [0, 1, 1e3])
57+
def test_radius_validation_should_accept_valid(radius):
58+
extension = LocationConstraintExtensionBuilder()
59+
extension.with_radius(radius)
760

861

962
def test_builds_with_given_values():
1063
LATITUDE = 50
11-
LONGTITUDE = 99
64+
LONGITUDE = 99
1265
RADIUS = 60
1366
UNCERTAINTY = 30
1467

1568
extension = (
1669
LocationConstraintExtensionBuilder()
1770
.with_latitude(LATITUDE)
18-
.with_longtitude(LONGTITUDE)
71+
.with_longitude(LONGITUDE)
1972
.with_radius(RADIUS)
2073
.with_uncertainty(UNCERTAINTY)
2174
.build()
@@ -24,6 +77,6 @@ def test_builds_with_given_values():
2477
device_location = extension["content"]["expected_device_location"]
2578

2679
assert device_location["latitude"] == LATITUDE
27-
assert device_location["longtitude"] == LONGTITUDE
80+
assert device_location["longitude"] == LONGITUDE
2881
assert device_location["radius"] == RADIUS
2982
assert device_location["max_uncertainty_radius"] == UNCERTAINTY

yoti_python_sdk/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# -*- coding: utf-8 -*-
2-
__version__ = "2.9.1"
2+
__version__ = "2.9.2"

0 commit comments

Comments
 (0)