package apns2 import ( "crypto/tls" "encoding/json" "fmt" "testing" "time" "go-common/app/service/main/push/model" . "github.com/smartystreets/goconvey/convey" ) var ( k = []byte(`-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA3ZDI9NUPfMH0/6DgmeCH/Zl8g3pOlLcMY0p6m8lMe9EDF1vZ w3uR05YzbQCmYCwWZLKDTq/0d3RMRow8AON1wMv9ynyk7Z1Pb9C+ByN4GCWsRHjN BbEg8jgBYeOoM6PlpDc16D8uPKukRuaq/j1beOn1HD4vnS8KqUzeS6fYbaiPjC7h 7QZOnNE5NwV6TKPMu/+0aNPNgZDeFtNwcXiiRX6OPfbOOnVr0/6WGorYdGMPLxeZ viqZ37z7rDhup/LaiDedO/tm09lmKUbFOHS+qbSYPXztDHhOwTm36E1k2mD5Lq1S d5zHRrwzgPTvieFQ+giA9u8pn2wBNDASBDF1pQIDAQABAoIBAQDdNQtdXUa8IQ1R FraHCuPa7p2gysCfu22TyC1HUh+ZUqEKdjqg78M1AzXOsyJozDuDR7LPId8qUCND IAlcPbw3w7Jbsjwbu74ufbLrf58MRLiMGCthbmndSsseh2NMQ2snm7Onb0Tjb95w pyW69VlZDAQasX9qKCg1xTf/QtFTEGbJpkfN7lYYjwwhLFck39SUH254cwmqV8Tj AQ9Uj6dQhYvWseSGtsbqkyj0/sUwyzfaUWeNjnYUaVQWxAalnLYiUCzRLR0IMwvM cmscwYWrWlPPd8ND4yGyHXqeQH2fVJqEx/aIDSpujNeOm2MH0RFRNBU53d/tJpj8 XuqE8Yj1AoGBAO5klAY8vScnC3RQ8x3tlJkM3jkD3FmqSJu7erId0T6KgJz0Xmgj zHYwvq+V4t0Kmk1Tt5Okq3wI41uDZUJCBXrnNWhm0oDHnlw38TiptBrfqIjfyK5y OmmP49DWHZagF9nY74zM2doCLPnI9G2i2mAcCjCMXKfeJhOhzkgjnGOTAoGBAO3u Cy5N9a8yjQ3y0B3iNwWQQs94kfwbyuy4cvvBOlkheB0JTEunNfHVVl4zlwFDnrH1 UWg7ySqTM3iCd9OE1bErbavHmGeTC0FYkKw/k4fct7icU1shSuPwkyp3GRYI6qW8 e24k2U32gO/ANu6WZsYKKAcYjMObQc+/LkLaV3TnAoGAT5QJia964Pf6reBb17C4 OwL9p4CvbMsYI8xIn+6uK7dmSX6ViSPyG74X2VsqeOkSKx/4FvQQPn5lDuZkxeJu G+HUhT5VpKF+LoCKKIUV1ya0BsTVI86Dyzs6LDtdcyuL6q+s/45eZpT1WIiJd5O2 XADgMeaZA3x3r3QC/TfN+7sCgYAUQvpGxjLO6aIjdvMMKHCBE8jsvBrKel9si0SX ddwPLQ96gYkyxBmO75j8Sq5oWCbShs6Y7sZxzrlKYOntZFmCTe13/HZZE6eYt/8R /BQHNN+cZAuhLhOfl6QgsKW9P6Mj3Aoy1gZ/YieWwyqqZLp50PGZsRiDq9wN4f0B inB6LwKBgQDTeiZ7lAHNhZW8VOpD/K/403xQQinJr6vMiWFm/znwcbm/pteWZuwR omzn56zhYiXkDKKKxFkVIwf80xSz4Rmgl0p2BndsXU8hOVY/NCnAQJ1uZIsNilcP KsBKVxvOzopDKZP+C0IQcRaw5VN9WvqJ9ijUEwgm2ufQyz1oj7tREg== -----END RSA PRIVATE KEY-----`) c = []byte(`-----BEGIN CERTIFICATE----- MIIGOTCCBSGgAwIBAgIIDMyy2gAN2P4wDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3 aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw HhcNMTgwNzA5MTA0NzQ5WhcNMTkwODA4MTA0NzQ5WjCBqjEkMCIGCgmSJomT8ixk AQEMFHR2LmRhbm1ha3UuYmlsaWFuaW1lMTIwMAYDVQQDDClBcHBsZSBQdXNoIFNl cnZpY2VzOiB0di5kYW5tYWt1LmJpbGlhbmltZTETMBEGA1UECwwKNzQ2ODQ1R0M5 NjEsMCoGA1UECgwjU2hhbmdoYWkgQmlsaWJpbGkgQW5pbWF0aW9uIENvLixMdGQx CzAJBgNVBAYTAkNOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3ZDI 9NUPfMH0/6DgmeCH/Zl8g3pOlLcMY0p6m8lMe9EDF1vZw3uR05YzbQCmYCwWZLKD Tq/0d3RMRow8AON1wMv9ynyk7Z1Pb9C+ByN4GCWsRHjNBbEg8jgBYeOoM6PlpDc1 6D8uPKukRuaq/j1beOn1HD4vnS8KqUzeS6fYbaiPjC7h7QZOnNE5NwV6TKPMu/+0 aNPNgZDeFtNwcXiiRX6OPfbOOnVr0/6WGorYdGMPLxeZviqZ37z7rDhup/LaiDed O/tm09lmKUbFOHS+qbSYPXztDHhOwTm36E1k2mD5Lq1Sd5zHRrwzgPTvieFQ+giA 9u8pn2wBNDASBDF1pQIDAQABo4ICczCCAm8wDAYDVR0TAQH/BAIwADAfBgNVHSME GDAWgBSIJxcJqbYYYIvs67r2R1nFUlSjtzCCARwGA1UdIASCARMwggEPMIIBCwYJ KoZIhvdjZAUBMIH9MIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMg Y2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0 aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25z IG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHBy YWN0aWNlIHN0YXRlbWVudHMuMDUGCCsGAQUFBwIBFilodHRwOi8vd3d3LmFwcGxl LmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eTATBgNVHSUEDDAKBggrBgEFBQcDAjAw BgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY3JsLmFwcGxlLmNvbS93d2RyY2EuY3Js MB0GA1UdDgQWBBRezirr8YHmrv5m5/7ZCr3VybbdLjAOBgNVHQ8BAf8EBAMCB4Aw EAYKKoZIhvdjZAYDAQQCBQAwEAYKKoZIhvdjZAYDAgQCBQAwgYMGCiqGSIb3Y2QG AwYEdTBzDBR0di5kYW5tYWt1LmJpbGlhbmltZTAFDANhcHAMGXR2LmRhbm1ha3Uu YmlsaWFuaW1lLnZvaXAwBgwEdm9pcAwhdHYuZGFubWFrdS5iaWxpYW5pbWUuY29t cGxpY2F0aW9uMA4MDGNvbXBsaWNhdGlvbjANBgkqhkiG9w0BAQsFAAOCAQEAQLGl rzH6QG5WKmEbYw3741TTer1E2MlCr7JP9rmn3W+IWy+cX2IQv9vaeFZ3pi/1uMkC kK6JQd7gUXLPcGwldu4m36OOdUfRLWPH7yvvyYazEo6sDKAUzI/cg14Yj/3Z7ig1 nL6pvXzPd0LjreKKDc08wfmV8gbALLWzjkIcanNdijWlMtfwgLWQunr2jZAK4kKN GpGku6BCZPYzFLidPMfnXIgOarNbM0SFX+3UY2+fWS+oJsNpGvqWUEINFjVhWoZ4 62WxT8BT2sCbMNGqJGM3wTYe6gkT3E52azu1bNc18/+5/V/qCIjsZLWsX4yCywFE JQR4w5UPQzMbq6Ybeg== -----END CERTIFICATE-----`) hdk = []byte(`-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA3ZDI9NUPfMH0/6DgmeCH/Zl8g3pOlLcMY0p6m8lMe9EDF1vZ w3uR05YzbQCmYCwWZLKDTq/0d3RMRow8AON1wMv9ynyk7Z1Pb9C+ByN4GCWsRHjN BbEg8jgBYeOoM6PlpDc16D8uPKukRuaq/j1beOn1HD4vnS8KqUzeS6fYbaiPjC7h 7QZOnNE5NwV6TKPMu/+0aNPNgZDeFtNwcXiiRX6OPfbOOnVr0/6WGorYdGMPLxeZ viqZ37z7rDhup/LaiDedO/tm09lmKUbFOHS+qbSYPXztDHhOwTm36E1k2mD5Lq1S d5zHRrwzgPTvieFQ+giA9u8pn2wBNDASBDF1pQIDAQABAoIBAQDdNQtdXUa8IQ1R FraHCuPa7p2gysCfu22TyC1HUh+ZUqEKdjqg78M1AzXOsyJozDuDR7LPId8qUCND IAlcPbw3w7Jbsjwbu74ufbLrf58MRLiMGCthbmndSsseh2NMQ2snm7Onb0Tjb95w pyW69VlZDAQasX9qKCg1xTf/QtFTEGbJpkfN7lYYjwwhLFck39SUH254cwmqV8Tj AQ9Uj6dQhYvWseSGtsbqkyj0/sUwyzfaUWeNjnYUaVQWxAalnLYiUCzRLR0IMwvM cmscwYWrWlPPd8ND4yGyHXqeQH2fVJqEx/aIDSpujNeOm2MH0RFRNBU53d/tJpj8 XuqE8Yj1AoGBAO5klAY8vScnC3RQ8x3tlJkM3jkD3FmqSJu7erId0T6KgJz0Xmgj zHYwvq+V4t0Kmk1Tt5Okq3wI41uDZUJCBXrnNWhm0oDHnlw38TiptBrfqIjfyK5y OmmP49DWHZagF9nY74zM2doCLPnI9G2i2mAcCjCMXKfeJhOhzkgjnGOTAoGBAO3u Cy5N9a8yjQ3y0B3iNwWQQs94kfwbyuy4cvvBOlkheB0JTEunNfHVVl4zlwFDnrH1 UWg7ySqTM3iCd9OE1bErbavHmGeTC0FYkKw/k4fct7icU1shSuPwkyp3GRYI6qW8 e24k2U32gO/ANu6WZsYKKAcYjMObQc+/LkLaV3TnAoGAT5QJia964Pf6reBb17C4 OwL9p4CvbMsYI8xIn+6uK7dmSX6ViSPyG74X2VsqeOkSKx/4FvQQPn5lDuZkxeJu G+HUhT5VpKF+LoCKKIUV1ya0BsTVI86Dyzs6LDtdcyuL6q+s/45eZpT1WIiJd5O2 XADgMeaZA3x3r3QC/TfN+7sCgYAUQvpGxjLO6aIjdvMMKHCBE8jsvBrKel9si0SX ddwPLQ96gYkyxBmO75j8Sq5oWCbShs6Y7sZxzrlKYOntZFmCTe13/HZZE6eYt/8R /BQHNN+cZAuhLhOfl6QgsKW9P6Mj3Aoy1gZ/YieWwyqqZLp50PGZsRiDq9wN4f0B inB6LwKBgQDTeiZ7lAHNhZW8VOpD/K/403xQQinJr6vMiWFm/znwcbm/pteWZuwR omzn56zhYiXkDKKKxFkVIwf80xSz4Rmgl0p2BndsXU8hOVY/NCnAQJ1uZIsNilcP KsBKVxvOzopDKZP+C0IQcRaw5VN9WvqJ9ijUEwgm2ufQyz1oj7tREg== -----END RSA PRIVATE KEY-----`) hdc = []byte(`-----BEGIN CERTIFICATE----- MIIGPjCCBSagAwIBAgIIRY80KDvYYtUwDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNV BAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3Js ZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3 aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkw HhcNMTgwNzA5MTA0OTUyWhcNMTkwODA4MTA0OTUyWjCBrDElMCMGCgmSJomT8ixk AQEMFXR2LmRhbm1ha3UuYmlsaWJpbGloZDEzMDEGA1UEAwwqQXBwbGUgUHVzaCBT ZXJ2aWNlczogdHYuZGFubWFrdS5iaWxpYmlsaWhkMRMwEQYDVQQLDAo3NDY4NDVH Qzk2MSwwKgYDVQQKDCNTaGFuZ2hhaSBCaWxpYmlsaSBBbmltYXRpb24gQ28uLEx0 ZDELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDd kMj01Q98wfT/oOCZ4If9mXyDek6UtwxjSnqbyUx70QMXW9nDe5HTljNtAKZgLBZk soNOr/R3dExGjDwA43XAy/3KfKTtnU9v0L4HI3gYJaxEeM0FsSDyOAFh46gzo+Wk NzXoPy48q6RG5qr+PVt46fUcPi+dLwqpTN5Lp9htqI+MLuHtBk6c0Tk3BXpMo8y7 /7Ro082BkN4W03BxeKJFfo499s46dWvT/pYaith0Yw8vF5m+KpnfvPusOG6n8tqI N507+2bT2WYpRsU4dL6ptJg9fO0MeE7BObfoTWTaYPkurVJ3nMdGvDOA9O+J4VD6 CID27ymfbAE0MBIEMXWlAgMBAAGjggJ2MIICcjAMBgNVHRMBAf8EAjAAMB8GA1Ud IwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3MIIBHAYDVR0gBIIBEzCCAQ8wggEL BgkqhkiG92NkBQEwgf0wgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhp cyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9m IHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlv bnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24g cHJhY3RpY2Ugc3RhdGVtZW50cy4wNQYIKwYBBQUHAgEWKWh0dHA6Ly93d3cuYXBw bGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5MBMGA1UdJQQMMAoGCCsGAQUFBwMC MDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jcmwuYXBwbGUuY29tL3d3ZHJjYS5j cmwwHQYDVR0OBBYEFF7OKuvxgeau/mbn/tkKvdXJtt0uMA4GA1UdDwEB/wQEAwIH gDAQBgoqhkiG92NkBgMBBAIFADAQBgoqhkiG92NkBgMCBAIFADCBhgYKKoZIhvdj ZAYDBgR4MHYMFXR2LmRhbm1ha3UuYmlsaWJpbGloZDAFDANhcHAMGnR2LmRhbm1h a3UuYmlsaWJpbGloZC52b2lwMAYMBHZvaXAMInR2LmRhbm1ha3UuYmlsaWJpbGlo ZC5jb21wbGljYXRpb24wDgwMY29tcGxpY2F0aW9uMA0GCSqGSIb3DQEBCwUAA4IB AQAltymx4RoeuW2Grnk4Vb+RneVafET87kT2HpjKTwnWglcFzDM2g3jeEC/MfDtZ 28Y/qMBmz4ThJthNOHgdEyvTqTdZG4739HzLdxB79GsraGhpMIORw8UOetsmogId FspzWxR/nysIdEo8bj6gbAOmANrQn1zNFrO5/c31GxY+AFRGl6n/aY7ObCstpIca L6TDWiPJyLH2Ha0qeGgBch97Jk1XVa2m6Syl9a5VtL8jM8SBDpx+krVsxL4YhBot Ko45/s6H9wqCIx06h28N3EB0VALGSxeFhwlc/uVQRNu0w3DPHTTGHhNOGbzn2QVs V5Ies2V9gtxFI5xwR+/ERU2z -----END CERTIFICATE-----`) ) func TestClient(t *testing.T) { // unuserd _ = hdc _ = hdk Convey("test apns", t, func() { cert, err := tls.X509KeyPair(c, k) if err != nil { panic(err) } apnsClient := NewClient(cert, 10*time.Second).Production() aps := Aps{ Alert: Alert{ Title: "test", Body: "test", }, Badge: 0, // Sound: "default", 不加sound没有提醒 MutableContent: 1, } var token string // token = "140b5f62b3db93bc6a072645d3825c50efa5693f733690542fffa034252c7495" scheme := model.Scheme(model.LinkTypeLive, "123", model.PlatformIPhone, 529000) payload := &Payload{Aps: aps, URL: scheme, TaskID: "3c9e1eaca2afd373_search_1473317045", Token: token, Image: "https://pic.qiantucdn.com/58pic/12/38/18/13758PIC4GV.jpg"} bs, _ := json.Marshal(payload) fmt.Printf("payload(%s)", bs) apnsClient.BoundID = "tv.danmaku.bilianime" resp, err := apnsClient.Push(token, payload, time.Now().Unix()) So(err, ShouldBeNil) fmt.Println("StatusCode:", resp.StatusCode, "ApnsID:", resp.ApnsID, "Reason:", resp.Reason) }) }