timehop / apns

A Go package to interface with the Apple Push Notification Service
https://godoc.org/github.com/timehop/apns
MIT License
185 stars 47 forks source link

Tests for errors from Apple #40

Open nathany opened 9 years ago

nathany commented 9 years ago

I'd like some tests for errors from Apple but without actually hitting Apple's servers in the test suite.

Status code Description
0 No errors encountered
1 Processing error
2 Missing device token
3 Missing topic
4 Missing payload
5 Invalid token size
6 Invalid topic size
7 Invalid payload size
8 Invalid token
10 Shutdown
255 None (unknown)

I'm thinking about mockConn having a special device token that results in 8 Invalid token, or that sort of thing. A bit like test credit cards.

My thought is to only do this for tests within the apns package, not impacting the callers of this library in any way.

nathany commented 9 years ago

Of course we also need to get a better feel for how errors from Apple occur in real life (readErrors). Using a production device token with a sandbox cert setup should do the trick.

nathany commented 9 years ago

Validations before sending data should be able to prevent a good number of these.

Still, there are errors that can occur at any time.

taylortrimble commented 9 years ago

I think I'd prefer having a connection that satisfies the interface, but is initialized with a specific status code to return. Seems more explicit.

nathany commented 9 years ago

True.

We should be able to use validations to avoid errors 2-8. I would like to separate out the preparation of the data to send Apple from the actual sending.