prove bad resp body cannot serialize

This commit is contained in:
ryanfkeepers 2023-06-26 17:27:33 -06:00
parent 2138c69898
commit f8b64b60c0

View File

@ -192,6 +192,7 @@ func (suite *MailAPIUnitSuite) TestBytesToMessagable() {
type MailAPIIntgSuite struct {
tester.Suite
cts clientTesterSetup
credentials account.M365Config
ac api.Client
user string
@ -203,14 +204,15 @@ func TestMailAPIIntgSuite(t *testing.T) {
suite.Run(t, &MailAPIIntgSuite{
Suite: tester.NewIntegrationSuite(
t,
[][]string{tester.M365AcctCredEnvs},
),
[][]string{tester.M365AcctCredEnvs}),
})
}
func (suite *MailAPIIntgSuite) SetupSuite() {
t := suite.T()
suite.cts = newClientTesterSetup(t)
a := tester.NewM365Account(t)
m365, err := a.M365Config()
require.NoError(t, err, clues.ToCore(err))
@ -442,3 +444,85 @@ func (suite *MailAPIIntgSuite) TestRestoreLargeAttachment() {
require.NoError(t, err, clues.ToCore(err))
require.NotEmpty(t, id, "empty id for large attachment")
}
func (suite *MailAPIIntgSuite) TestMail_malformedJSONResp() {
t := suite.T()
ctx, flush := tester.NewContext(t)
defer flush()
defer gock.Off()
mid := "AAMkADMzZjZlNDg0LWIxNWUtNGUzOS1iNmViLWJhOGQ0NWFjOTJkNQBGAAAAAADb4v0HPlm8T5jPY51aTdZUBwCbSUNVDx_PTKATxbYuCKZlAAAAAAEMAACbSUNVDx_PTKATxbYuCKZlAABPQ75_AAA="
gock.New("https://graph.microsoft.com").
Get("/v1.0/users/rfinders@10rqc2.onmicrosoft.com/messages/"+mid).
Reply(200).
AddHeader("Content-Type", "application/json; odata.metadata=minimal; odata.streaming=true; IEEE754Compatible=false; charset=utf-8").
AddHeader("Content-Encoding", "gzip").
BodyString(string(m))
_, _, err := suite.ac.Mail().GetItem(ctx, "rfinders@10rqc2.onmicrosoft.com", mid, false, fault.New(true))
require.Error(t, err, clues.ToCore(err))
require.Contains(t, err.Error(), "invalid json type")
assert.True(t, gock.IsDone(), "made all requests")
}
const m = `{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('RFinders%4010rqc2.onmicrosoft.com')/messages/$entity",
"@odata.etag": "W/\"CQAAABYAAACbSUNVDx+PTKATxbYuCKZlAABPIl1/\"",
"id": "AAMkADMzZjZlNDg0LWIxNWUtNGUzOS1iNmViLWJhOGQ0NWFjOTJkNQBGAAAAAADb4v0HPlm8T5jPY51aTdZUBwCbSUNVDx_PTKATxbYuCKZlAAAAAAEMAACbSUNVDx_PTKATxbYuCKZlAABPQ75_AAA=",
"createdDateTime": "2023-06-22T17:49:27Z",
"lastModifiedDateTime": "2023-06-22T17:49:29Z",
"changeKey": "CQAAABYAAACbSUNVDx+PTKATxbYuCKZlAABPIl1/",
"categories": [],
"receivedDateTime": "2023-06-22T17:49:28Z",
"sentDateTime": "2023-06-22T17:49:21Z",
"hasAttachments": false,
"internetMessageId": "<PH8PR14MB7405D7605066409E4565A155D722A@PH8PR14MB7405.namprd14.prod.outlook.com>",
"subject": "zzazil",
"bodyPreview": "lizazz",
"importance": "normal",
"parentFolderId": "AQMkADMzAGY2ZTQ4NC1iMTVlLTRlMzktYjZlYi1iYThkNDVhYzkyZDUALgAAA9vi-Qc_WbxPmM9jnVpN1lQBAJtJQ1UPH49MoBPFti4IpmUAAAIBDAAAAA==",
"conversationId": "AAQkADMzZjZlNDg0LWIxNWUtNGUzOS1iNmViLWJhOGQ0NWFjOTJkNQAQABMgDVOQI6NNs9ZEbpFe4rY=",
"conversationIndex": "AQHZpTHUEyANU5Ajo02z1kRukV7itg==",
"isDeliveryReceiptRequested": null,
"isReadReceiptRequested": false,
"isRead": false,
"isDraft": false,
"webLink": "https://outlook.office365.com/owa/?ItemID=AAMkADMzZjZlNDg0LWIxNWUtNGUzOS1iNmViLWJhOGQ0NWFjOTJkNQBGAAAAAADb4v0HPlm8T5jPY51aTdZUBwCbSUNVDx%2BPTKATxbYuCKZlAAAAAAEMAACbSUNVDx%2BPTKATxbYuCKZlAABPQ75%2BAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
"inferenceClassification": "focused",
"body": {
"contentType": "html",
"content": "<html><head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><meta name=\"Generator\" content=\"Microsoft Word 15 (filtered medium)\"><style>\r\n<!--\r\n@font-face\r\n\t{font-family:\"Cambria Math\"}\r\n@font-face\r\n\t{font-family:Calibri}\r\np.MsoNormal, li.MsoNormal, div.MsoNormal\r\n\t{margin:0in;\r\n\tfont-size:11.0pt;\r\n\tfont-family:\"Calibri\",sans-serif}\r\nspan.EmailStyle17\r\n\t{font-family:\"Calibri\",sans-serif;\r\n\tcolor:windowtext}\r\n.MsoChpDefault\r\n\t{font-family:\"Calibri\",sans-serif}\r\n@page WordSection1\r\n\t{margin:1.0in 1.0in 1.0in 1.0in}\r\ndiv.WordSection1\r\n\t{}\r\n-->\r\n</style></head><body lang=\"EN-US\" link=\"#0563C1\" vlink=\"#954F72\" style=\"word-wrap:break-word\"><div class=\"WordSection1\"><p class=\"MsoNormal\">lizazz</p></div></body></html>"
},
"sender": {
"emailAddress": {
"name": "Ryan Keepers",
"address": "rkeepers@alcion.ai"
}
},
"from": {
"emailAddress": {
"name": "Ryan Keepers",
"address": "rkeepers@alcion.ai"
}
},
"toRecipients": [
{
"emailAddress": {
"name": "Finders",
"address": "RFinders@10rqc2.onmicrosoft.com"
}
}
],
"ccRecipients": [],
"bccRecipients": [],
"replyTo": [],
"flag": {
"flagStatus": "notFlagged"
}`
// should have an ending curly bracket.
// }`