test: Add FCM payload validation integration tests#119
Merged
Conversation
Sends real messages to FCM with dry_run=True to catch serialization bugs (like the `VISIBILITY_PRIVATE` incident) in CI before production. Covers standard and silent payloads for both Android and APNS. Tests are skipped when `FIREBASE_SERVICE_ACCOUNT_KEY` is not set.
FCM rejects fake tokens with INVALID_ARGUMENT "registration token is not valid" rather than NOT_FOUND. Distinguish token rejection from payload rejection by checking the error message.
Replaces single negative test with parametrized cases covering all four serialization bugs fixed in 6.0.2: VISIBILITY_ prefix, lowercase visibility, wrong key for priority, wrong key for event_time.
FCM short-circuits on token validation before checking the payload, making fake-token tests unreliable. Switching to topic-addressed messages ensures FCM validates the full payload on dry_run.
FCM accepts lowercase enum values like "private" — it's not case-sensitive. Only the VISIBILITY_ prefix is actually rejected.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sends real messages to FCM with
dry_run=Trueto catch serialization bugs (like theVISIBILITY_PRIVATEincident) in CI before production.Covers standard and silent payloads for both Android and APNS. Tests are skipped when
FIREBASE_SERVICE_ACCOUNT_KEYis not set.