diff --git a/clients/client-s3/test/e2e/S3.ispec.ts b/clients/client-s3/test/e2e/S3.ispec.ts index 7ad1859dcce6..f20253589c78 100644 --- a/clients/client-s3/test/e2e/S3.ispec.ts +++ b/clients/client-s3/test/e2e/S3.ispec.ts @@ -248,4 +248,44 @@ describe("@aws-sdk/client-s3", () => { expect((listUploadsResult.Uploads || []).map((upload) => upload.UploadId)).not.to.contain(toAbort); }); }); + + describe("selectObjectContent", () => { + const csvFile = `user_name,age +jsrocks,13 +node4life,22 +esfuture,29`; + before(async () => { + Key = `${Date.now()}`; + await client.putObject({ Bucket, Key, Body: csvFile }); + }); + after(async () => { + await client.deleteObject({ Bucket, Key }); + }); + it("should succeed", async () => { + const { Payload } = await client.selectObjectContent({ + Bucket, + Key, + ExpressionType: "SQL", + Expression: "SELECT user_name FROM S3Object WHERE cast(age as int) > 20", + InputSerialization: { + CSV: { + FileHeaderInfo: "USE", + RecordDelimiter: "\n", + FieldDelimiter: ",", + }, + }, + OutputSerialization: { + CSV: {}, + }, + }); + const events = []; + for await (const event of Payload) { + events.push(event); + } + expect(events.length).to.equal(3); + expect(Buffer.from(events[0].Records.Payload).toString("utf8")).to.equal("node4life\nesfuture\n"); + expect(events[1].Stats.Details).to.be.exist; + expect(events[2].End).to.be.exist; + }); + }); });