@azure/communication-email 1.0.0-alpha.20220524.1 → 1.0.0-alpha.20220630.1
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +15 -21
- package/dist/index.js +138 -76
- package/dist/index.js.map +1 -1
- package/dist-esm/samples-dev/checkMessageStatus.js +1 -6
- package/dist-esm/samples-dev/checkMessageStatus.js.map +1 -1
- package/dist-esm/samples-dev/sendEmailMultipleRecipients.js +5 -20
- package/dist-esm/samples-dev/sendEmailMultipleRecipients.js.map +1 -1
- package/dist-esm/samples-dev/sendEmailSingleRecipient.js +1 -6
- package/dist-esm/samples-dev/sendEmailSingleRecipient.js.map +1 -1
- package/dist-esm/samples-dev/sendEmailWithAttachments.js +1 -6
- package/dist-esm/samples-dev/sendEmailWithAttachments.js.map +1 -1
- package/dist-esm/src/emailClient.js +4 -16
- package/dist-esm/src/emailClient.js.map +1 -1
- package/dist-esm/src/generated/src/emailRestApiClient.js +53 -10
- package/dist-esm/src/generated/src/emailRestApiClient.js.map +1 -1
- package/dist-esm/src/generated/src/index.js +11 -0
- package/dist-esm/src/generated/src/index.js.map +1 -0
- package/dist-esm/src/generated/src/models/index.js +80 -1
- package/dist-esm/src/generated/src/models/index.js.map +1 -1
- package/dist-esm/src/generated/src/models/mappers.js +69 -10
- package/dist-esm/src/generated/src/models/mappers.js.map +1 -1
- package/dist-esm/src/generated/src/models/parameters.js +11 -0
- package/dist-esm/src/generated/src/models/parameters.js.map +1 -1
- package/dist-esm/src/generated/src/operations/email.js +10 -17
- package/dist-esm/src/generated/src/operations/email.js.map +1 -1
- package/dist-esm/src/generated/src/operationsInterfaces/email.js +9 -0
- package/dist-esm/src/generated/src/operationsInterfaces/email.js.map +1 -0
- package/dist-esm/src/generated/src/operationsInterfaces/index.js +9 -0
- package/dist-esm/src/generated/src/operationsInterfaces/index.js.map +1 -0
- package/dist-esm/src/models.js.map +1 -1
- package/dist-esm/test/public/emailClient.spec.js +122 -127
- package/dist-esm/test/public/emailClient.spec.js.map +1 -1
- package/dist-esm/test/public/utils/recordedClient.js +49 -31
- package/dist-esm/test/public/utils/recordedClient.js.map +1 -1
- package/package.json +10 -7
- package/types/communication-email.d.ts +84 -101
- package/dist-esm/src/constants.js +0 -4
- package/dist-esm/src/constants.js.map +0 -1
- package/dist-esm/src/generated/src/emailRestApiClientContext.js +0 -38
- package/dist-esm/src/generated/src/emailRestApiClientContext.js.map +0 -1
@@ -1,137 +1,132 @@
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
2
2
|
// Licensed under the MIT license.
|
3
3
|
import { env } from "@azure-tools/test-recorder";
|
4
|
-
import { createRecordedEmailClientWithConnectionString, createRecordedEmailClientWithKeyCredential, } from "./utils/recordedClient";
|
5
4
|
import { assert } from "chai";
|
6
|
-
import {
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
});
|
25
|
-
it("successfully sends an email to a single recipient", async function () {
|
26
|
-
const emailMessage = {
|
27
|
-
sender: env.SENDER_ADDRESS,
|
28
|
-
recipients: {
|
29
|
-
to: [
|
30
|
-
{
|
31
|
-
email: env.RECIPIENT_ADDRESS,
|
32
|
-
displayName: "someRecipient",
|
33
|
-
},
|
34
|
-
],
|
35
|
-
},
|
36
|
-
content: {
|
37
|
-
subject: "someSubject",
|
38
|
-
plainText: "somePlainTextBody",
|
39
|
-
html: "<html><h1>someHtmlBody</html>",
|
40
|
-
},
|
41
|
-
};
|
42
|
-
const response = await client.send(emailMessage);
|
43
|
-
assert.isNotNull(response.messageId);
|
44
|
-
}).timeout(5000);
|
45
|
-
it("successfully sends an email to multiple types of recipients", async function () {
|
46
|
-
const emailMessage = {
|
47
|
-
sender: env.SENDER_ADDRESS,
|
48
|
-
recipients: {
|
49
|
-
to: [
|
50
|
-
{
|
51
|
-
email: env.RECIPIENT_ADDRESS,
|
52
|
-
displayName: "someRecipient",
|
53
|
-
},
|
54
|
-
{
|
55
|
-
email: env.RECIPIENT_ADDRESS,
|
56
|
-
displayName: "someRecipient",
|
57
|
-
},
|
58
|
-
],
|
59
|
-
cC: [
|
60
|
-
{
|
61
|
-
email: env.RECIPIENT_ADDRESS,
|
62
|
-
displayName: "someRecipient",
|
63
|
-
},
|
64
|
-
],
|
65
|
-
bCC: [
|
66
|
-
{
|
67
|
-
email: env.RECIPIENT_ADDRESS,
|
68
|
-
displayName: "someRecipient",
|
69
|
-
},
|
70
|
-
],
|
71
|
-
},
|
72
|
-
content: {
|
73
|
-
subject: "someSubject",
|
74
|
-
plainText: "somePlainTextBody",
|
75
|
-
html: "<html><h1>someHtmlBody</html>",
|
76
|
-
},
|
77
|
-
};
|
78
|
-
const response = await client.send(emailMessage);
|
79
|
-
assert.isNotNull(response.messageId);
|
80
|
-
}).timeout(5000);
|
81
|
-
it("successfully sends an email with an attachment", async function () {
|
82
|
-
const emailMessage = {
|
83
|
-
sender: env.SENDER_ADDRESS,
|
84
|
-
recipients: {
|
85
|
-
to: [
|
86
|
-
{
|
87
|
-
email: env.RECIPIENT_ADDRESS,
|
88
|
-
displayName: "someRecipient",
|
89
|
-
},
|
90
|
-
],
|
91
|
-
},
|
92
|
-
content: {
|
93
|
-
subject: "someSubject",
|
94
|
-
plainText: "somePlainTextBody",
|
95
|
-
html: "<html><h1>someHtmlBody</html>",
|
96
|
-
},
|
97
|
-
attachments: [
|
5
|
+
import { createRecordedEmailClientWithConnectionString } from "./utils/recordedClient";
|
6
|
+
describe(`EmailClient [Playback/Live]`, () => {
|
7
|
+
let recorder;
|
8
|
+
let client;
|
9
|
+
beforeEach(async function () {
|
10
|
+
({ client, recorder } = await createRecordedEmailClientWithConnectionString(this));
|
11
|
+
});
|
12
|
+
afterEach(async function () {
|
13
|
+
var _a;
|
14
|
+
if (!((_a = this.currentTest) === null || _a === void 0 ? void 0 : _a.isPending())) {
|
15
|
+
await recorder.stop();
|
16
|
+
}
|
17
|
+
});
|
18
|
+
it("successfully sends an email to a single recipient", async function () {
|
19
|
+
const emailMessage = {
|
20
|
+
sender: env.SENDER_ADDRESS || "",
|
21
|
+
recipients: {
|
22
|
+
to: [
|
98
23
|
{
|
99
|
-
|
100
|
-
|
101
|
-
contentBytesBase64: "ZW1haWwgdGVzdCBhdHRhY2htZW50",
|
24
|
+
email: env.RECIPIENT_ADDRESS || "",
|
25
|
+
displayName: "someRecipient",
|
102
26
|
},
|
103
27
|
],
|
104
|
-
}
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
28
|
+
},
|
29
|
+
content: {
|
30
|
+
subject: "someSubject",
|
31
|
+
plainText: "somePlainTextBody",
|
32
|
+
html: "<html><h1>someHtmlBody</html>",
|
33
|
+
},
|
34
|
+
};
|
35
|
+
const response = await client.send(emailMessage);
|
36
|
+
assert.isNotNull(response.messageId);
|
37
|
+
}).timeout(5000);
|
38
|
+
it("successfully sends an email to multiple types of recipients", async function () {
|
39
|
+
var _a, _b, _c, _d, _e;
|
40
|
+
const emailMessage = {
|
41
|
+
sender: (_a = env.SENDER_ADDRESS) !== null && _a !== void 0 ? _a : "",
|
42
|
+
recipients: {
|
43
|
+
to: [
|
44
|
+
{
|
45
|
+
email: (_b = env.RECIPIENT_ADDRESS) !== null && _b !== void 0 ? _b : "",
|
46
|
+
displayName: "someRecipient",
|
47
|
+
},
|
48
|
+
{
|
49
|
+
email: (_c = env.RECIPIENT_ADDRESS) !== null && _c !== void 0 ? _c : "",
|
50
|
+
displayName: "someRecipient",
|
51
|
+
},
|
52
|
+
],
|
53
|
+
cc: [
|
54
|
+
{
|
55
|
+
email: (_d = env.RECIPIENT_ADDRESS) !== null && _d !== void 0 ? _d : "",
|
56
|
+
displayName: "someRecipient",
|
57
|
+
},
|
58
|
+
],
|
59
|
+
bcc: [
|
60
|
+
{
|
61
|
+
email: (_e = env.RECIPIENT_ADDRESS) !== null && _e !== void 0 ? _e : "",
|
62
|
+
displayName: "someRecipient",
|
63
|
+
},
|
64
|
+
],
|
65
|
+
},
|
66
|
+
content: {
|
67
|
+
subject: "someSubject",
|
68
|
+
plainText: "somePlainTextBody",
|
69
|
+
html: "<html><h1>someHtmlBody</html>",
|
70
|
+
},
|
71
|
+
};
|
72
|
+
const response = await client.send(emailMessage);
|
73
|
+
assert.isNotNull(response.messageId);
|
74
|
+
}).timeout(5000);
|
75
|
+
it("successfully sends an email with an attachment", async function () {
|
76
|
+
var _a, _b;
|
77
|
+
const emailMessage = {
|
78
|
+
sender: (_a = env.SENDER_ADDRESS) !== null && _a !== void 0 ? _a : "",
|
79
|
+
recipients: {
|
80
|
+
to: [
|
81
|
+
{
|
82
|
+
email: (_b = env.RECIPIENT_ADDRESS) !== null && _b !== void 0 ? _b : "",
|
83
|
+
displayName: "someRecipient",
|
84
|
+
},
|
85
|
+
],
|
86
|
+
},
|
87
|
+
content: {
|
88
|
+
subject: "someSubject",
|
89
|
+
plainText: "somePlainTextBody",
|
90
|
+
html: "<html><h1>someHtmlBody</html>",
|
91
|
+
},
|
92
|
+
attachments: [
|
93
|
+
{
|
94
|
+
name: "readme.txt",
|
95
|
+
attachmentType: "txt",
|
96
|
+
contentBytesBase64: "ZW1haWwgdGVzdCBhdHRhY2htZW50",
|
123
97
|
},
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
98
|
+
],
|
99
|
+
};
|
100
|
+
const response = await client.send(emailMessage);
|
101
|
+
assert.isNotNull(response.messageId);
|
102
|
+
}).timeout(5000);
|
103
|
+
it("successfully retrieves the email status with the returned message id", async function () {
|
104
|
+
var _a, _b;
|
105
|
+
const emailMessage = {
|
106
|
+
sender: (_a = env.SENDER_ADDRESS) !== null && _a !== void 0 ? _a : "",
|
107
|
+
recipients: {
|
108
|
+
to: [
|
109
|
+
{
|
110
|
+
email: (_b = env.RECIPIENT_ADDRESS) !== null && _b !== void 0 ? _b : "",
|
111
|
+
displayName: "someRecipient",
|
112
|
+
},
|
113
|
+
],
|
114
|
+
},
|
115
|
+
content: {
|
116
|
+
subject: "someSubject",
|
117
|
+
plainText: "somePlainTextBody",
|
118
|
+
html: "<html><h1>someHtmlBody</html>",
|
119
|
+
},
|
120
|
+
};
|
121
|
+
const response = await client.send(emailMessage);
|
122
|
+
const messageId = response.messageId;
|
123
|
+
if (messageId) {
|
124
|
+
const messageStatusResponse = await client.getSendStatus(messageId);
|
125
|
+
assert.isNotNull(messageStatusResponse.status);
|
126
|
+
}
|
127
|
+
else {
|
128
|
+
assert.fail();
|
129
|
+
}
|
130
|
+
}).timeout(5000);
|
136
131
|
});
|
137
132
|
//# sourceMappingURL=emailClient.spec.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"emailClient.spec.js","sourceRoot":"","sources":["../../../test/public/emailClient.spec.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAY,GAAG,EAAE,MAAM,4BAA4B,CAAC;
|
1
|
+
{"version":3,"file":"emailClient.spec.js","sourceRoot":"","sources":["../../../test/public/emailClient.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { EmailClient, EmailMessage } from \"../../src\";\nimport { Recorder, env } from \"@azure-tools/test-recorder\";\nimport { Context } from \"mocha\";\nimport { assert } from \"chai\";\nimport { createRecordedEmailClientWithConnectionString } from \"./utils/recordedClient\";\n\ndescribe(`EmailClient [Playback/Live]`, () => {\n let recorder: Recorder;\n let client: EmailClient;\n\n beforeEach(async function (this: Context) {\n ({ client, recorder } = await createRecordedEmailClientWithConnectionString(this));\n });\n\n afterEach(async function (this: Context) {\n if (!this.currentTest?.isPending()) {\n await recorder.stop();\n }\n });\n\n it(\"successfully sends an email to a single recipient\", async function () {\n const emailMessage: EmailMessage = {\n sender: env.SENDER_ADDRESS || \"\",\n recipients: {\n to: [\n {\n email: env.RECIPIENT_ADDRESS || \"\",\n displayName: \"someRecipient\",\n },\n ],\n },\n content: {\n subject: \"someSubject\",\n plainText: \"somePlainTextBody\",\n html: \"<html><h1>someHtmlBody</html>\",\n },\n };\n\n const response = await client.send(emailMessage);\n assert.isNotNull(response.messageId);\n }).timeout(5000);\n\n it(\"successfully sends an email to multiple types of recipients\", async function () {\n const emailMessage: EmailMessage = {\n sender: env.SENDER_ADDRESS ?? \"\",\n recipients: {\n to: [\n {\n email: env.RECIPIENT_ADDRESS ?? \"\",\n displayName: \"someRecipient\",\n },\n {\n email: env.RECIPIENT_ADDRESS ?? \"\",\n displayName: \"someRecipient\",\n },\n ],\n cc: [\n {\n email: env.RECIPIENT_ADDRESS ?? \"\",\n displayName: \"someRecipient\",\n },\n ],\n bcc: [\n {\n email: env.RECIPIENT_ADDRESS ?? \"\",\n displayName: \"someRecipient\",\n },\n ],\n },\n content: {\n subject: \"someSubject\",\n plainText: \"somePlainTextBody\",\n html: \"<html><h1>someHtmlBody</html>\",\n },\n };\n\n const response = await client.send(emailMessage);\n assert.isNotNull(response.messageId);\n }).timeout(5000);\n\n it(\"successfully sends an email with an attachment\", async function () {\n const emailMessage: EmailMessage = {\n sender: env.SENDER_ADDRESS ?? \"\",\n recipients: {\n to: [\n {\n email: env.RECIPIENT_ADDRESS ?? \"\",\n displayName: \"someRecipient\",\n },\n ],\n },\n content: {\n subject: \"someSubject\",\n plainText: \"somePlainTextBody\",\n html: \"<html><h1>someHtmlBody</html>\",\n },\n attachments: [\n {\n name: \"readme.txt\",\n attachmentType: \"txt\",\n contentBytesBase64: \"ZW1haWwgdGVzdCBhdHRhY2htZW50\",\n },\n ],\n };\n\n const response = await client.send(emailMessage);\n assert.isNotNull(response.messageId);\n }).timeout(5000);\n\n it(\"successfully retrieves the email status with the returned message id\", async function () {\n const emailMessage: EmailMessage = {\n sender: env.SENDER_ADDRESS ?? \"\",\n recipients: {\n to: [\n {\n email: env.RECIPIENT_ADDRESS ?? \"\",\n displayName: \"someRecipient\",\n },\n ],\n },\n content: {\n subject: \"someSubject\",\n plainText: \"somePlainTextBody\",\n html: \"<html><h1>someHtmlBody</html>\",\n },\n };\n\n const response = await client.send(emailMessage);\n const messageId = response.messageId;\n if (messageId) {\n const messageStatusResponse = await client.getSendStatus(messageId);\n assert.isNotNull(messageStatusResponse.status);\n } else {\n assert.fail();\n }\n }).timeout(5000);\n});\n"]}
|
@@ -1,45 +1,63 @@
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
2
2
|
// Licensed under the MIT license.
|
3
|
-
import
|
4
|
-
import { env, record } from "@azure-tools/test-recorder";
|
3
|
+
import { Recorder, env } from "@azure-tools/test-recorder";
|
5
4
|
import { EmailClient } from "../../../src";
|
6
|
-
|
7
|
-
import { parseConnectionString } from "@azure/communication-common";
|
8
|
-
if (isNode) {
|
9
|
-
dotenv.config();
|
10
|
-
}
|
11
|
-
const replaceableVariables = {
|
5
|
+
const envSetupForPlayback = {
|
12
6
|
COMMUNICATION_CONNECTION_STRING: "endpoint=https://someEndpoint/;accesskey=someAccessKeyw==",
|
13
7
|
SENDER_ADDRESS: "someSender@contoso.com",
|
14
8
|
RECIPIENT_ADDRESS: "someRecipient@domain.com",
|
15
9
|
};
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
10
|
+
const sanitizerOptions = {
|
11
|
+
connectionStringSanitizers: [
|
12
|
+
{
|
13
|
+
actualConnString: env.COMMUNICATION_CONNECTION_STRING,
|
14
|
+
fakeConnString: envSetupForPlayback["COMMUNICATION_CONNECTION_STRING"],
|
15
|
+
},
|
16
|
+
],
|
17
|
+
headerSanitizers: [
|
18
|
+
{ key: "repeatability-first-sent", value: "Sanitized" },
|
19
|
+
{ key: "repeatability-request-id", value: "Sanitized" },
|
20
|
+
{ key: "x-ms-client-request-id", value: "Sanitized" },
|
21
|
+
{ key: "x-ms-date", value: "Sanitized" },
|
22
|
+
{ key: "Date", value: "Sanitized" },
|
23
|
+
{ key: "Date", value: "Sanitized" },
|
24
|
+
{ key: "X-Azure-Ref", value: "Sanitized" },
|
25
|
+
{ key: "x-ms-request-id", value: "Sanitized" },
|
26
|
+
{ key: "Operation-Location", value: "https://someEndpoint/emails/someMessageId/status" },
|
27
|
+
],
|
28
|
+
uriSanitizers: [
|
29
|
+
{
|
30
|
+
regex: true,
|
31
|
+
target: `emails/.*/status`,
|
32
|
+
value: "emails/Sanitized/status",
|
33
|
+
},
|
34
|
+
],
|
35
|
+
bodySanitizers: [
|
36
|
+
{
|
37
|
+
regex: true,
|
38
|
+
target: `"messageId"\\s?:\\s?"[^"]*"`,
|
39
|
+
value: `"messageId":"Sanitized"`,
|
40
|
+
},
|
28
41
|
],
|
29
|
-
queryParametersToSkip: [],
|
30
42
|
};
|
31
|
-
export function
|
32
|
-
const recorder =
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
43
|
+
export async function createRecorder(context) {
|
44
|
+
const recorder = new Recorder(context);
|
45
|
+
await recorder.start({ envSetupForPlayback });
|
46
|
+
await recorder.addSanitizers(sanitizerOptions, ["record", "playback"]);
|
47
|
+
await recorder.setMatcher("CustomDefaultMatcher", {
|
48
|
+
excludedHeaders: [
|
49
|
+
"Accept-Language",
|
50
|
+
"x-ms-content-sha256", // This is dependent on the current datetime
|
51
|
+
],
|
52
|
+
});
|
53
|
+
return recorder;
|
37
54
|
}
|
38
|
-
export function
|
39
|
-
|
40
|
-
const
|
55
|
+
export async function createRecordedEmailClientWithConnectionString(context) {
|
56
|
+
var _a;
|
57
|
+
const recorder = await createRecorder(context.currentTest);
|
58
|
+
const client = new EmailClient((_a = env.COMMUNICATION_CONNECTION_STRING) !== null && _a !== void 0 ? _a : "", recorder.configureClientOptions({}));
|
41
59
|
return {
|
42
|
-
client:
|
60
|
+
client: client,
|
43
61
|
recorder,
|
44
62
|
};
|
45
63
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recordedClient.js","sourceRoot":"","sources":["../../../../test/public/utils/recordedClient.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;
|
1
|
+
{"version":3,"file":"recordedClient.js","sourceRoot":"","sources":["../../../../test/public/utils/recordedClient.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAGlC,OAAO,EAAE,QAAQ,EAAoB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAO3C,MAAM,mBAAmB,GAA4B;IACnD,+BAA+B,EAAE,2DAA2D;IAC5F,cAAc,EAAE,wBAAwB;IACxC,iBAAiB,EAAE,0BAA0B;CAC9C,CAAC;AAEF,MAAM,gBAAgB,GAAqB;IACzC,0BAA0B,EAAE;QAC1B;YACE,gBAAgB,EAAE,GAAG,CAAC,+BAA+B;YACrD,cAAc,EAAE,mBAAmB,CAAC,iCAAiC,CAAC;SACvE;KACF;IACD,gBAAgB,EAAE;QAChB,EAAE,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,WAAW,EAAE;QACvD,EAAE,GAAG,EAAE,0BAA0B,EAAE,KAAK,EAAE,WAAW,EAAE;QACvD,EAAE,GAAG,EAAE,wBAAwB,EAAE,KAAK,EAAE,WAAW,EAAE;QACrD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;QACxC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;QACnC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;QACnC,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;QAC1C,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE;QAC9C,EAAE,GAAG,EAAE,oBAAoB,EAAE,KAAK,EAAE,kDAAkD,EAAE;KACzF;IACD,aAAa,EAAE;QACb;YACE,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,yBAAyB;SACjC;KACF;IACD,cAAc,EAAE;QACd;YACE,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,6BAA6B;YACrC,KAAK,EAAE,yBAAyB;SACjC;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAyB;IAC5D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,CAAC,UAAU,CAAC,sBAAsB,EAAE;QAChD,eAAe,EAAE;YACf,iBAAiB;YACjB,qBAAqB,EAAE,4CAA4C;SACpE;KACF,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6CAA6C,CACjE,OAAgB;;IAEhB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,IAAI,WAAW,CAC5B,MAAA,GAAG,CAAC,+BAA+B,mCAAI,EAAE,EACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,CACpC,CAAC;IACF,OAAO;QACL,MAAM,EAAE,MAAM;QACd,QAAQ;KACT,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { Context, Test } from \"mocha\";\nimport { Recorder, SanitizerOptions, env } from \"@azure-tools/test-recorder\";\nimport { EmailClient } from \"../../../src\";\n\nexport interface RecordedEmailClient {\n client: EmailClient;\n recorder: Recorder;\n}\n\nconst envSetupForPlayback: { [k: string]: string } = {\n COMMUNICATION_CONNECTION_STRING: \"endpoint=https://someEndpoint/;accesskey=someAccessKeyw==\",\n SENDER_ADDRESS: \"someSender@contoso.com\",\n RECIPIENT_ADDRESS: \"someRecipient@domain.com\",\n};\n\nconst sanitizerOptions: SanitizerOptions = {\n connectionStringSanitizers: [\n {\n actualConnString: env.COMMUNICATION_CONNECTION_STRING,\n fakeConnString: envSetupForPlayback[\"COMMUNICATION_CONNECTION_STRING\"],\n },\n ],\n headerSanitizers: [\n { key: \"repeatability-first-sent\", value: \"Sanitized\" },\n { key: \"repeatability-request-id\", value: \"Sanitized\" },\n { key: \"x-ms-client-request-id\", value: \"Sanitized\" },\n { key: \"x-ms-date\", value: \"Sanitized\" },\n { key: \"Date\", value: \"Sanitized\" },\n { key: \"Date\", value: \"Sanitized\" },\n { key: \"X-Azure-Ref\", value: \"Sanitized\" },\n { key: \"x-ms-request-id\", value: \"Sanitized\" },\n { key: \"Operation-Location\", value: \"https://someEndpoint/emails/someMessageId/status\" },\n ],\n uriSanitizers: [\n {\n regex: true,\n target: `emails/.*/status`,\n value: \"emails/Sanitized/status\",\n },\n ],\n bodySanitizers: [\n {\n regex: true,\n target: `\"messageId\"\\\\s?:\\\\s?\"[^\"]*\"`,\n value: `\"messageId\":\"Sanitized\"`,\n },\n ],\n};\n\nexport async function createRecorder(context: Test | undefined): Promise<Recorder> {\n const recorder = new Recorder(context);\n await recorder.start({ envSetupForPlayback });\n await recorder.addSanitizers(sanitizerOptions, [\"record\", \"playback\"]);\n await recorder.setMatcher(\"CustomDefaultMatcher\", {\n excludedHeaders: [\n \"Accept-Language\", // This is env-dependent\n \"x-ms-content-sha256\", // This is dependent on the current datetime\n ],\n });\n return recorder;\n}\n\nexport async function createRecordedEmailClientWithConnectionString(\n context: Context\n): Promise<RecordedEmailClient> {\n const recorder = await createRecorder(context.currentTest);\n\n const client = new EmailClient(\n env.COMMUNICATION_CONNECTION_STRING ?? \"\",\n recorder.configureClientOptions({})\n );\n return {\n client: client,\n recorder,\n };\n}\n"]}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@azure/communication-email",
|
3
|
-
"version": "1.0.0-alpha.
|
3
|
+
"version": "1.0.0-alpha.20220630.1",
|
4
4
|
"description": "The is the JS Client SDK for email. This SDK enables users to send emails and get the status of sent email message.",
|
5
5
|
"author": "Microsoft Corporation",
|
6
6
|
"license": "MIT",
|
@@ -18,8 +18,9 @@
|
|
18
18
|
"execute:samples": "dev-tool samples run samples-dev",
|
19
19
|
"extract-api": "tsc -p . && api-extractor run --local",
|
20
20
|
"format": "prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"",
|
21
|
-
"
|
22
|
-
"integration-test:
|
21
|
+
"generate:client": "autorest --typescript ./swagger/README.md && rushx format",
|
22
|
+
"integration-test:browser": "dev-tool run test:browser",
|
23
|
+
"integration-test:node": "dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'",
|
23
24
|
"integration-test": "npm run integration-test:node && npm run integration-test:browser",
|
24
25
|
"lint:fix": "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]",
|
25
26
|
"lint": "eslint package.json api-extractor.json src test --ext .ts",
|
@@ -27,8 +28,8 @@
|
|
27
28
|
"test": "npm run build:test && npm run unit-test && npm run integration-test",
|
28
29
|
"test:browser": "npm run build:test && npm run unit-test:browser && npm run integration-test:browser",
|
29
30
|
"test:node": "npm run build:test && npm run unit-test:node && npm run integration-test:node",
|
30
|
-
"unit-test:browser": "
|
31
|
-
"unit-test:node": "
|
31
|
+
"unit-test:browser": "dev-tool run test:browser",
|
32
|
+
"unit-test:node": "dev-tool run test:node-ts-input -- --timeout 1200000 --exclude 'test/**/browser/*.spec.ts' 'test/**/*.spec.ts'",
|
32
33
|
"unit-test": "npm run unit-test:node && npm run unit-test:browser"
|
33
34
|
},
|
34
35
|
"files": [
|
@@ -47,8 +48,10 @@
|
|
47
48
|
],
|
48
49
|
"dependencies": {
|
49
50
|
"@azure/core-auth": "^1.3.0",
|
51
|
+
"@azure/core-client": "^1.3.2",
|
50
52
|
"@azure/core-http": "^2.0.0",
|
51
|
-
"@azure/
|
53
|
+
"@azure/core-rest-pipeline": "^1.3.2",
|
54
|
+
"@azure/communication-common": ">=2.1.0-alpha <2.1.0-alphb",
|
52
55
|
"@azure/logger": "^1.0.0",
|
53
56
|
"tslib": "^1.9.3",
|
54
57
|
"uuid": "^8.3.2"
|
@@ -57,7 +60,7 @@
|
|
57
60
|
"@azure/dev-tool": ">=1.0.0-alpha <1.0.0-alphb",
|
58
61
|
"@azure/eslint-plugin-azure-sdk": ">=3.0.0-alpha <3.0.0-alphb",
|
59
62
|
"@azure/test-utils": ">=1.0.0-alpha <1.0.0-alphb",
|
60
|
-
"@azure-tools/test-recorder": "^
|
63
|
+
"@azure-tools/test-recorder": "^2.0.0",
|
61
64
|
"@microsoft/api-extractor": "7.18.11",
|
62
65
|
"@types/node": "^12.0.0",
|
63
66
|
"@types/uuid": "^8.3.2",
|