Skip to content

Commit

Permalink
fix: corrected is_authorized deserialization and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
cowan-macady committed Feb 10, 2023
1 parent f273e38 commit 8091e5d
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 35 deletions.
20 changes: 11 additions & 9 deletions indykite_sdk/model/is_authorized.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from indykite_sdk.utils import timestamp_to_date
from google.protobuf.json_format import MessageToJson, MessageToDict
import indykite_sdk.utils.logger as logger


class IsAuthorizedResponse:
Expand All @@ -8,15 +9,16 @@ def deserialize(cls, message):
if message is None:
return None

message_dict = MessageToDict(message, preserving_proto_field_name=True)
if message_dict and message_dict["decisions"]:
is_authorized_response = IsAuthorizedResponse(
decision_time=timestamp_to_date(message.decision_time),
decisions=message_dict["decisions"]
)
else:
is_authorized_response = IsAuthorizedResponse(decision_time=None, decisions={})
return is_authorized_response
try:
message_dict = MessageToDict(message, preserving_proto_field_name=True)
if message_dict and message_dict["decisions"]:
is_authorized_response = IsAuthorizedResponse(
decision_time=timestamp_to_date(message.decision_time),
decisions=message_dict["decisions"]
)
return is_authorized_response
except Exception as exception:
return logger.logger_error(exception)

def __init__(self, decision_time, decisions):
self.decision_time = decision_time,
Expand Down
27 changes: 1 addition & 26 deletions tests/test_is_authorized.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from indykite_sdk.authorization import AuthorizationClient
from indykite_sdk.indykite.authorization.v1beta1 import authorization_service_pb2 as pb2
from indykite_sdk.indykite.identity.v1beta2 import identity_management_api_pb2 as pb2_ident
from indykite_sdk.model.is_authorized import IsAuthorizedResource, IsAuthorizedResponse
from indykite_sdk.model.is_authorized import IsAuthorizedResource, IsAuthorizedResponse, IsAuthorizedActions
from indykite_sdk.indykite.identity.v1beta2 import model_pb2 as model
from indykite_sdk.indykite.objects.v1beta1 import struct_pb2 as pb2_struct
from helpers import data
Expand All @@ -19,31 +19,6 @@ def test_is_authorized_token_wrong_token(capsys):
assert "invalid or expired access_token" in captured.err


def test_is_authorized_token_success():
client = AuthorizationClient()
assert client is not None

access_token = data.get_verification_bearer()
resources = [IsAuthorizedResource("resourceID", "LabelName"), IsAuthorizedResource("resource2ID", "LabelName")]
actions = ["ACTION"]
res = []
for r in resources:
res.append(pb2.IsAuthorizedRequest.Resource(id=r.id, label=r.label))

digital_twin_identifier = pb2_ident.DigitalTwinIdentifier(
access_token=str(access_token)
)

def mocked_is_authorized(request: pb2.IsAuthorizedRequest):
assert request.digital_twin_identifier == digital_twin_identifier
return pb2.IsAuthorizedResponse()

client.stub.IsAuthorized = mocked_is_authorized
response = client.is_authorized_token(access_token, resources, actions)
assert response is not None
assert isinstance(response, IsAuthorizedResponse)


def test_is_authorized_token_empty():
client = AuthorizationClient()
assert client is not None
Expand Down

0 comments on commit 8091e5d

Please sign in to comment.