Skip to content

Commit 741f878

Browse files
author
Chris Ballinger
committed
Add Retention Messaging response body
1 parent 35e5cad commit 741f878

File tree

5 files changed

+0
-134
lines changed

5 files changed

+0
-134
lines changed

appstoreserverlibrary/models/DecodedRealtimeRequestBody.py

Lines changed: 0 additions & 69 deletions
This file was deleted.

appstoreserverlibrary/models/RealtimeRequestBody.py

Lines changed: 0 additions & 20 deletions
This file was deleted.

appstoreserverlibrary/signed_data_verifier.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -131,30 +131,6 @@ def verify_and_decode_app_transaction(self, signed_app_transaction: str) -> AppT
131131
raise VerificationException(VerificationStatus.INVALID_ENVIRONMENT)
132132
return decoded_app_transaction
133133

134-
def verify_and_decode_retention_request(self, signed_payload: str):
135-
"""
136-
Verifies and decodes a retention messaging request from the App Store.
137-
Uses the same x509 certificate chain verification as other Apple notifications.
138-
139-
:param signed_payload: The signedPayload field from the retention request
140-
:return: The decoded retention request after verification
141-
:throws VerificationException: Thrown if the data could not be verified
142-
"""
143-
from .models.DecodedRealtimeRequestBody import DecodedRealtimeRequestBody
144-
145-
decoded_dict = self._decode_signed_object(signed_payload)
146-
decoded_request = _get_cattrs_converter(DecodedRealtimeRequestBody).structure(
147-
decoded_dict, DecodedRealtimeRequestBody
148-
)
149-
150-
if self._app_apple_id is not None and decoded_request.appAppleId != self._app_apple_id:
151-
raise VerificationException(VerificationStatus.INVALID_APP_IDENTIFIER)
152-
153-
if decoded_request.environment != self._environment:
154-
raise VerificationException(VerificationStatus.INVALID_ENVIRONMENT)
155-
156-
return decoded_request
157-
158134
def _decode_signed_object(self, signed_obj: str) -> dict:
159135
try:
160136
decoded_jwt = jwt.decode(signed_obj, options={"verify_signature": False})

tests/resources/mock_signed_data/retentionRequest

Lines changed: 0 additions & 1 deletion
This file was deleted.

tests/test_payload_verification.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,25 +68,5 @@ def test_malformed_jwt_with_malformed_data(self):
6868
verifier.verify_and_decode_notification("a.b.c")
6969
self.assertEqual(context.exception.status, VerificationStatus.VERIFICATION_FAILURE)
7070

71-
def test_retention_request_decoding(self):
72-
verifier = get_signed_data_verifier(Environment.LOCAL_TESTING, "com.example")
73-
retention_request = read_data_from_file('tests/resources/mock_signed_data/retentionRequest')
74-
decoded_request = verifier.verify_and_decode_retention_request(retention_request)
75-
self.assertEqual(decoded_request.originalTransactionId, "1000000000000001")
76-
self.assertEqual(decoded_request.appAppleId, 1234)
77-
self.assertEqual(decoded_request.productId, "com.example.subscription")
78-
self.assertEqual(decoded_request.locale, "en_US")
79-
self.assertEqual(decoded_request.requestIdentifier, "550e8400-e29b-41d4-a716-446655440000")
80-
self.assertEqual(decoded_request.environment, Environment.LOCAL_TESTING)
81-
self.assertEqual(decoded_request.signedDate, 1681314324000)
82-
83-
84-
def test_retention_request_wrong_app_id(self):
85-
verifier = get_signed_data_verifier(Environment.LOCAL_TESTING, "com.example", 5678)
86-
retention_request = read_data_from_file('tests/resources/mock_signed_data/retentionRequest')
87-
with self.assertRaises(VerificationException) as context:
88-
verifier.verify_and_decode_retention_request(retention_request)
89-
self.assertEqual(context.exception.status, VerificationStatus.INVALID_APP_IDENTIFIER)
90-
9171
if __name__ == '__main__':
9272
unittest.main()

0 commit comments

Comments
 (0)