smartling-api-sdk-nodejs 2.29.0 → 2.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.github/workflows/publish.yml +29 -0
  2. package/README.md +13 -1
  3. package/api/files/params/file-type.ts +27 -1
  4. package/built/api/files/params/file-type.d.ts +27 -1
  5. package/built/api/files/params/file-type.js +26 -0
  6. package/built/api/files/params/file-type.js.map +1 -1
  7. package/built/package.json +1 -1
  8. package/built/test/access-token-provider.spec.d.ts +1 -0
  9. package/built/test/access-token-provider.spec.js +25 -0
  10. package/built/test/access-token-provider.spec.js.map +1 -0
  11. package/built/test/auth.spec.d.ts +1 -0
  12. package/built/test/auth.spec.js +332 -0
  13. package/built/test/auth.spec.js.map +1 -0
  14. package/built/test/base-file.spec.d.ts +1 -0
  15. package/built/test/base-file.spec.js +53 -0
  16. package/built/test/base-file.spec.js.map +1 -0
  17. package/built/test/base.spec.d.ts +1 -0
  18. package/built/test/base.spec.js +558 -0
  19. package/built/test/base.spec.js.map +1 -0
  20. package/built/test/builder.spec.d.ts +1 -0
  21. package/built/test/builder.spec.js +142 -0
  22. package/built/test/builder.spec.js.map +1 -0
  23. package/built/test/context.spec.d.ts +1 -0
  24. package/built/test/context.spec.js +154 -0
  25. package/built/test/context.spec.js.map +1 -0
  26. package/built/test/exception.spec.d.ts +1 -0
  27. package/built/test/exception.spec.js +20 -0
  28. package/built/test/exception.spec.js.map +1 -0
  29. package/built/test/file-translations.spec.d.ts +1 -0
  30. package/built/test/file-translations.spec.js +449 -0
  31. package/built/test/file-translations.spec.js.map +1 -0
  32. package/built/test/files.spec.d.ts +1 -0
  33. package/built/test/files.spec.js +489 -0
  34. package/built/test/files.spec.js.map +1 -0
  35. package/built/test/glossaries.spec.d.ts +1 -0
  36. package/built/test/glossaries.spec.js +182 -0
  37. package/built/test/glossaries.spec.js.map +1 -0
  38. package/built/test/job-batches.spec.d.ts +1 -0
  39. package/built/test/job-batches.spec.js +221 -0
  40. package/built/test/job-batches.spec.js.map +1 -0
  41. package/built/test/jobs.spec.d.ts +1 -0
  42. package/built/test/jobs.spec.js +357 -0
  43. package/built/test/jobs.spec.js.map +1 -0
  44. package/built/test/locales.spec.d.ts +1 -0
  45. package/built/test/locales.spec.js +66 -0
  46. package/built/test/locales.spec.js.map +1 -0
  47. package/built/test/mock.d.ts +18 -0
  48. package/built/test/mock.js +31 -0
  49. package/built/test/mock.js.map +1 -0
  50. package/built/test/mt.spec.d.ts +1 -0
  51. package/built/test/mt.spec.js +135 -0
  52. package/built/test/mt.spec.js.map +1 -0
  53. package/built/test/projects.spec.d.ts +1 -0
  54. package/built/test/projects.spec.js +87 -0
  55. package/built/test/projects.spec.js.map +1 -0
  56. package/built/test/published-files.spec.d.ts +1 -0
  57. package/built/test/published-files.spec.js +76 -0
  58. package/built/test/published-files.spec.js.map +1 -0
  59. package/built/test/report-api.spec.d.ts +1 -0
  60. package/built/test/report-api.spec.js +187 -0
  61. package/built/test/report-api.spec.js.map +1 -0
  62. package/built/test/stream-to-string.d.ts +4 -0
  63. package/built/test/stream-to-string.js +14 -0
  64. package/built/test/stream-to-string.js.map +1 -0
  65. package/built/test/strings.spec.d.ts +1 -0
  66. package/built/test/strings.spec.js +204 -0
  67. package/built/test/strings.spec.js.map +1 -0
  68. package/built/test/tags.spec.d.ts +1 -0
  69. package/built/test/tags.spec.js +423 -0
  70. package/built/test/tags.spec.js.map +1 -0
  71. package/built/test/webhooks.spec.d.ts +1 -0
  72. package/built/test/webhooks.spec.js +447 -0
  73. package/built/test/webhooks.spec.js.map +1 -0
  74. package/package.json +1 -1
  75. package/.scannerwork/.sonar_lock +0 -0
  76. package/.scannerwork/report-task.txt +0 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mt.spec.js","sourceRoot":"","sources":["../../test/mt.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const sinon_1 = __importDefault(require("sinon"));
16
+ const index_1 = require("../api/projects/index");
17
+ const mock_1 = require("./mock");
18
+ const list_projects_parameters_1 = require("../api/projects/params/list-projects-parameters");
19
+ describe("SmartlingProjectsApi class tests.", () => {
20
+ const projectId = "testProjectId";
21
+ let projectsApi;
22
+ let projectsApiFetchStub;
23
+ let projectsApiUaStub;
24
+ let responseMockJsonStub;
25
+ beforeEach(() => {
26
+ projectsApi = new index_1.SmartlingProjectsApi("https://test.com", mock_1.authMock, mock_1.loggerMock);
27
+ projectsApiFetchStub = sinon_1.default.stub(projectsApi, "fetch");
28
+ projectsApiUaStub = sinon_1.default.stub(projectsApi, "ua");
29
+ responseMockJsonStub = sinon_1.default.stub(mock_1.responseMock, "json");
30
+ projectsApiUaStub.returns("test_user_agent");
31
+ projectsApiFetchStub.returns(mock_1.responseMock);
32
+ responseMockJsonStub.returns({
33
+ response: {}
34
+ });
35
+ });
36
+ afterEach(() => {
37
+ projectsApiFetchStub.restore();
38
+ responseMockJsonStub.restore();
39
+ projectsApiUaStub.restore();
40
+ });
41
+ describe("Methods", () => {
42
+ it("Fetch source strings", () => __awaiter(void 0, void 0, void 0, function* () {
43
+ yield projectsApi.getProjectDetails(projectId);
44
+ sinon_1.default.assert.calledOnce(projectsApiFetchStub);
45
+ sinon_1.default.assert.calledWithExactly(projectsApiFetchStub, `https://test.com/projects-api/v2/projects/${projectId}`, {
46
+ headers: {
47
+ Authorization: "test_token_type test_access_token",
48
+ "Content-Type": "application/json",
49
+ "User-Agent": "test_user_agent"
50
+ },
51
+ method: "get"
52
+ });
53
+ }));
54
+ it("Get projects by account", () => __awaiter(void 0, void 0, void 0, function* () {
55
+ yield projectsApi.listProjects("accountUid");
56
+ sinon_1.default.assert.calledOnce(projectsApiFetchStub);
57
+ sinon_1.default.assert.calledWithExactly(projectsApiFetchStub, "https://test.com/accounts-api/v2/accounts/accountUid/projects", {
58
+ headers: {
59
+ Authorization: "test_token_type test_access_token",
60
+ "Content-Type": "application/json",
61
+ "User-Agent": "test_user_agent"
62
+ },
63
+ method: "get"
64
+ });
65
+ }));
66
+ it("Get projects by account with parameters", () => __awaiter(void 0, void 0, void 0, function* () {
67
+ const parameters = new list_projects_parameters_1.ListProjectsParameters()
68
+ .setProjectNameFilter("test")
69
+ .setIncludeArchived(true)
70
+ .setLimit(10)
71
+ .setOffset(0)
72
+ .setProjectTypeCode("CONNECTED")
73
+ .setProjectTypeCodes(["CONNECTED", "STANDALONE"]);
74
+ yield projectsApi.listProjects("accountUid", parameters);
75
+ sinon_1.default.assert.calledOnce(projectsApiFetchStub);
76
+ sinon_1.default.assert.calledWithExactly(projectsApiFetchStub, "https://test.com/accounts-api/v2/accounts/accountUid/projects?projectNameFilter=test&includeArchived=true&limit=10&offset=0&projectTypeCode=CONNECTED&projectTypeCodes=CONNECTED&projectTypeCodes=STANDALONE", {
77
+ headers: {
78
+ Authorization: "test_token_type test_access_token",
79
+ "Content-Type": "application/json",
80
+ "User-Agent": "test_user_agent"
81
+ },
82
+ method: "get"
83
+ });
84
+ }));
85
+ });
86
+ });
87
+ //# sourceMappingURL=projects.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.spec.js","sourceRoot":"","sources":["../../test/projects.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const sinon_1 = __importDefault(require("sinon"));
16
+ const assert_1 = __importDefault(require("assert"));
17
+ const published_files_1 = require("../api/published-files");
18
+ const recently_published_files_parameters_1 = require("../api/published-files/params/recently-published-files-parameters");
19
+ const mock_1 = require("./mock");
20
+ describe("SmartlingPublishedFilesApi class tests.", () => {
21
+ let publishedFilesApi;
22
+ let publishedFilesApiFetchStub;
23
+ let publishedFilesApiUaStub;
24
+ let responseMockTextStub;
25
+ beforeEach(() => {
26
+ publishedFilesApi = new published_files_1.SmartlingPublishedFilesApi("https://test.com", mock_1.authMock, mock_1.loggerMock);
27
+ publishedFilesApiFetchStub = sinon_1.default.stub(publishedFilesApi, "fetch");
28
+ publishedFilesApiUaStub = sinon_1.default.stub(publishedFilesApi, "ua");
29
+ responseMockTextStub = sinon_1.default.stub(mock_1.responseMock, "text");
30
+ publishedFilesApiUaStub.returns("test_user_agent");
31
+ publishedFilesApiFetchStub.returns(mock_1.responseMock);
32
+ responseMockTextStub.returns("{\"response\": {}}");
33
+ });
34
+ afterEach(() => {
35
+ publishedFilesApiFetchStub.restore();
36
+ responseMockTextStub.restore();
37
+ publishedFilesApiUaStub.restore();
38
+ });
39
+ it("Get recently published files", () => __awaiter(void 0, void 0, void 0, function* () {
40
+ const params = new recently_published_files_parameters_1.RecentlyPublishedFilesParameters();
41
+ params.setPublishedAfterDate(new Date("2020-09-24T00:00:00Z"));
42
+ params.setFileUris(["test:_1.xml", "test/file&_2.xml"]);
43
+ params.setLocaleIds(["fr", "de"]);
44
+ params.setOffset(0);
45
+ params.setLimit(100);
46
+ yield publishedFilesApi.getRecentlyPublishedFiles("test_project", params);
47
+ sinon_1.default.assert.calledOnce(publishedFilesApiFetchStub);
48
+ sinon_1.default.assert.calledWithExactly(publishedFilesApiFetchStub, "https://test.com/published-files-api/v2/projects/test_project/files/list/recently-published?publishedAfter=2020-09-24T00%3A00%3A00Z&fileUris%5B%5D=test%3A_1.xml&fileUris%5B%5D=test%2Ffile%26_2.xml&localeIds%5B%5D=fr&localeIds%5B%5D=de&offset=0&limit=100", {
49
+ headers: {
50
+ Authorization: "test_token_type test_access_token",
51
+ "Content-Type": "application/json",
52
+ "User-Agent": "test_user_agent"
53
+ },
54
+ method: "get"
55
+ });
56
+ }));
57
+ it("Invalid offset", () => __awaiter(void 0, void 0, void 0, function* () {
58
+ try {
59
+ new recently_published_files_parameters_1.RecentlyPublishedFilesParameters().setOffset(-1);
60
+ }
61
+ catch (e) {
62
+ assert_1.default.equal(e.constructor.name, "SmartlingException");
63
+ assert_1.default.equal(e.message, "Offset must be >= 0");
64
+ }
65
+ }));
66
+ it("Invalid limit", () => __awaiter(void 0, void 0, void 0, function* () {
67
+ try {
68
+ new recently_published_files_parameters_1.RecentlyPublishedFilesParameters().setLimit(0);
69
+ }
70
+ catch (e) {
71
+ assert_1.default.equal(e.constructor.name, "SmartlingException");
72
+ assert_1.default.equal(e.message, "Limit must be > 0");
73
+ }
74
+ }));
75
+ });
76
+ //# sourceMappingURL=published-files.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"published-files.spec.js","sourceRoot":"","sources":["../../test/published-files.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const sinon_1 = __importDefault(require("sinon"));
16
+ const assert_1 = __importDefault(require("assert"));
17
+ const reports_1 = require("../api/reports");
18
+ const word_count_parameters_1 = require("../api/reports/params/word-count-parameters");
19
+ const mock_1 = require("./mock");
20
+ describe("SmartlingReportServiceApi class tests.", () => {
21
+ let reportServiceApi;
22
+ let reportServiceApiFetchStub;
23
+ let reportServiceApiUaStub;
24
+ let responseMockTextStub;
25
+ beforeEach(() => {
26
+ reportServiceApi = new reports_1.SmartlingReportServiceApi("https://test.com", mock_1.authMock, mock_1.loggerMock);
27
+ reportServiceApiFetchStub = sinon_1.default.stub(reportServiceApi, "fetch");
28
+ reportServiceApiUaStub = sinon_1.default.stub(reportServiceApi, "ua");
29
+ responseMockTextStub = sinon_1.default.stub(mock_1.responseMock, "text");
30
+ reportServiceApiUaStub.returns("test_user_agent");
31
+ reportServiceApiFetchStub.returns(mock_1.responseMock);
32
+ });
33
+ afterEach(() => {
34
+ reportServiceApiFetchStub.restore();
35
+ responseMockTextStub.restore();
36
+ reportServiceApiUaStub.restore();
37
+ });
38
+ function smartlingResponse(body) {
39
+ return {
40
+ response: {
41
+ code: "SUCCESS",
42
+ data: body
43
+ }
44
+ };
45
+ }
46
+ describe("getWorkflowStepTypes", () => {
47
+ it("Should call correct endpoint and return workflow step types", () => __awaiter(void 0, void 0, void 0, function* () {
48
+ const payload = {
49
+ resultsTruncated: false,
50
+ items: [
51
+ { workflowStepType: "TRANSLATION" },
52
+ { workflowStepType: "REVIEW" },
53
+ { workflowStepType: "APPROVAL" }
54
+ ]
55
+ };
56
+ const mockResponse = smartlingResponse(payload);
57
+ responseMockTextStub.returns(JSON.stringify(mockResponse));
58
+ const result = yield reportServiceApi.getWorkflowStepTypes();
59
+ sinon_1.default.assert.calledOnce(reportServiceApiFetchStub);
60
+ const callArgs = reportServiceApiFetchStub.getCall(0).args;
61
+ assert_1.default.strictEqual(callArgs[0], "https://test.com/reports-api/v3/word-count/dictionary/step-types");
62
+ assert_1.default.strictEqual(callArgs[1].method, "GET");
63
+ assert_1.default.deepStrictEqual(callArgs[1].headers, {
64
+ Authorization: "test_token_type test_access_token",
65
+ "Content-Type": "application/json",
66
+ "User-Agent": "test_user_agent"
67
+ });
68
+ assert_1.default.deepStrictEqual(result, payload);
69
+ }));
70
+ });
71
+ describe("getWordsCountReport", () => {
72
+ it("Should call correct endpoint with parameters", () => __awaiter(void 0, void 0, void 0, function* () {
73
+ const payload = {
74
+ resultsTruncated: false,
75
+ items: [
76
+ {
77
+ accountUid: "account123",
78
+ accountName: "Test Account",
79
+ projectUid: "project123",
80
+ projectName: "Test Project",
81
+ jobUid: "job123",
82
+ jobName: "Test Job",
83
+ translationResourceUid: "resource123",
84
+ translationResourceName: "Test Resource",
85
+ agencyUid: "agency123",
86
+ agencyName: "Test Agency",
87
+ targetLocale: "es-ES",
88
+ workflowStepType: "TRANSLATION",
89
+ fuzzyProfileName: "Standard",
90
+ fuzzyTier: "100%",
91
+ wordCount: 1000,
92
+ weightedWordCount: 950
93
+ }
94
+ ]
95
+ };
96
+ const mockResponse = smartlingResponse(payload);
97
+ responseMockTextStub.returns(JSON.stringify(mockResponse));
98
+ const startDate = new Date("2024-01-01T00:00:00Z");
99
+ const endDate = new Date("2024-12-31T23:59:59Z");
100
+ const params = new word_count_parameters_1.WordCountParameters()
101
+ .setStartDate(startDate)
102
+ .setEndDate(endDate)
103
+ .setAccountUid("account123")
104
+ .setProjectIds(["project123"])
105
+ .setUserUids(["user123"])
106
+ .setAgencyUid("agency123")
107
+ .setJobUids(["job123"])
108
+ .setTargetLocaleIds(["fr-FR"])
109
+ .setWorkflowStepTypes(["TRANSLATION", "REVIEW"])
110
+ .setFields("includeTranslationResource,includeJob,includeFuzzyMatchProfile")
111
+ .setLimit(100)
112
+ .setOffset(0);
113
+ const result = yield reportServiceApi.getWordsCountReport(params);
114
+ sinon_1.default.assert.calledOnce(reportServiceApiFetchStub);
115
+ const callArgs = reportServiceApiFetchStub.getCall(0).args;
116
+ assert_1.default.strictEqual(callArgs[0], "https://test.com/reports-api/v3/word-count"
117
+ + "?startDate=2024-01-01"
118
+ + "&endDate=2024-12-31"
119
+ + "&accountUid=account123"
120
+ + "&projectIds=project123"
121
+ + "&userUids=user123"
122
+ + "&agencyUid=agency123"
123
+ + "&jobUids=job123"
124
+ + "&targetLocaleIds=fr-FR"
125
+ + "&workflowStepTypes=TRANSLATION"
126
+ + "&workflowStepTypes=REVIEW"
127
+ + "&fields=includeTranslationResource%2CincludeJob%2CincludeFuzzyMatchProfile"
128
+ + "&limit=100"
129
+ + "&offset=0");
130
+ assert_1.default.strictEqual(callArgs[1].method, "GET");
131
+ assert_1.default.deepStrictEqual(callArgs[1].headers, {
132
+ Authorization: "test_token_type test_access_token",
133
+ "Content-Type": "application/json",
134
+ "User-Agent": "test_user_agent"
135
+ });
136
+ assert_1.default.deepStrictEqual(result, payload);
137
+ }));
138
+ });
139
+ describe("getWordsCountReportCsv", () => {
140
+ it("Should call CSV endpoint and return CSV string", () => __awaiter(void 0, void 0, void 0, function* () {
141
+ const csvResponse = `projectId,projectName,targetLocaleId,jobUid,jobName,translationResourceName,workflowStepType,wordCount,characterCount
142
+ project123,Test Project,es-ES,job123,Test Job,Test Resource,TRANSLATION,1000,5000
143
+ project123,Test Project,fr-FR,job456,Another Job,Another Resource,REVIEW,500,2500`;
144
+ responseMockTextStub.returns(csvResponse);
145
+ const startDate = new Date("2024-01-01T00:00:00Z");
146
+ const endDate = new Date("2024-12-31T23:59:59Z");
147
+ const params = new word_count_parameters_1.WordCountParameters()
148
+ .setStartDate(startDate)
149
+ .setEndDate(endDate)
150
+ .setAccountUid("account123")
151
+ .setProjectIds(["project123"])
152
+ .setUserUids(["user123"])
153
+ .setAgencyUid("agency123")
154
+ .setJobUids(["job123"])
155
+ .setTargetLocaleIds(["fr-FR"])
156
+ .setWorkflowStepTypes(["TRANSLATION", "REVIEW"])
157
+ .setFields("projectId,projectName,targetLocaleId,jobUid,jobName,translationResourceName,workflowStepType,wordCount,characterCount")
158
+ .setLimit(100)
159
+ .setOffset(0);
160
+ const result = yield reportServiceApi.getWordsCountReportCsv(params);
161
+ sinon_1.default.assert.calledOnce(reportServiceApiFetchStub);
162
+ const callArgs = reportServiceApiFetchStub.getCall(0).args;
163
+ assert_1.default.strictEqual(callArgs[0], "https://test.com/reports-api/v3/word-count/csv"
164
+ + "?startDate=2024-01-01"
165
+ + "&endDate=2024-12-31"
166
+ + "&accountUid=account123"
167
+ + "&projectIds=project123"
168
+ + "&userUids=user123"
169
+ + "&agencyUid=agency123"
170
+ + "&jobUids=job123"
171
+ + "&targetLocaleIds=fr-FR"
172
+ + "&workflowStepTypes=TRANSLATION"
173
+ + "&workflowStepTypes=REVIEW"
174
+ + "&fields=projectId%2CprojectName%2CtargetLocaleId%2CjobUid%2CjobName%2CtranslationResourceName%2CworkflowStepType%2CwordCount%2CcharacterCount"
175
+ + "&limit=100"
176
+ + "&offset=0");
177
+ assert_1.default.strictEqual(callArgs[1].method, "GET");
178
+ assert_1.default.deepStrictEqual(callArgs[1].headers, {
179
+ Authorization: "test_token_type test_access_token",
180
+ "Content-Type": "application/json",
181
+ "User-Agent": "test_user_agent"
182
+ });
183
+ assert_1.default.strictEqual(result, csvResponse);
184
+ }));
185
+ });
186
+ });
187
+ //# sourceMappingURL=report-api.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-api.spec.js","sourceRoot":"","sources":["../../test/report-api.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from "stream";
3
+ declare function streamToString(stream: Readable): Promise<string>;
4
+ export { streamToString };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.streamToString = void 0;
4
+ function streamToString(stream) {
5
+ const chunks = [];
6
+ stream.resume();
7
+ return new Promise((resolve, reject) => {
8
+ stream.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
9
+ stream.on("error", (err) => reject(err));
10
+ stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
11
+ });
12
+ }
13
+ exports.streamToString = streamToString;
14
+ //# sourceMappingURL=stream-to-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-to-string.js","sourceRoot":"","sources":["../../test/stream-to-string.ts"],"names":[],"mappings":";;;AAEA,SAAS,cAAc,CAAC,MAAgB;IACpC,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAEnC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACP,CAAC;AAEQ,wCAAc"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const sinon_1 = __importDefault(require("sinon"));
16
+ const assert_1 = __importDefault(require("assert"));
17
+ const index_1 = require("../api/strings/index");
18
+ const fetch_source_strings_parameters_1 = require("../api/strings/params/fetch-source-strings-parameters");
19
+ const create_strings_parameters_1 = require("../api/strings/params/create-strings-parameters");
20
+ const string_item_parameters_1 = require("../api/strings/params/string-item-parameters");
21
+ const mock_1 = require("./mock");
22
+ describe("SmartlingStringsApi class tests.", () => {
23
+ const projectId = "testProjectId";
24
+ const testProcessUid = "test-process-uid";
25
+ const fileUri = "testStringsFileUri";
26
+ const limit = 25;
27
+ const offset = 0;
28
+ const hashCodes = ["testStringHashCode1", "testStringHashCode2"];
29
+ const hashCodesParams = hashCodes.map((hashCode) => `hashcodes=${hashCode}`).join("&");
30
+ const expectedFetchSourceStringsParams = `${hashCodesParams}&fileUri=${fileUri}&limit=${limit}&offset=${offset}`;
31
+ let stringsApi;
32
+ let fetchSourceStringsParameters;
33
+ let stringsServiceApiFetchStub;
34
+ let stringsServiceApiUaStub;
35
+ let responseMockJsonStub;
36
+ let responseMockTextStub;
37
+ beforeEach(() => {
38
+ fetchSourceStringsParameters = new fetch_source_strings_parameters_1.FetchSourceStringsParameters();
39
+ fetchSourceStringsParameters
40
+ .setHashCodes(hashCodes)
41
+ .setFileUri(fileUri)
42
+ .setLimit(limit)
43
+ .setOffset(offset);
44
+ stringsApi = new index_1.SmartlingStringsApi("https://test.com", mock_1.authMock, mock_1.loggerMock);
45
+ stringsServiceApiFetchStub = sinon_1.default.stub(stringsApi, "fetch");
46
+ stringsServiceApiUaStub = sinon_1.default.stub(stringsApi, "ua");
47
+ responseMockJsonStub = sinon_1.default.stub(mock_1.responseMock, "json");
48
+ responseMockTextStub = sinon_1.default.stub(mock_1.responseMock, "text");
49
+ stringsServiceApiUaStub.returns("test_user_agent");
50
+ stringsServiceApiFetchStub.returns(mock_1.responseMock);
51
+ responseMockJsonStub.returns({
52
+ response: {}
53
+ });
54
+ responseMockTextStub.returns("{\"response\": {}}");
55
+ });
56
+ afterEach(() => {
57
+ stringsServiceApiFetchStub.restore();
58
+ responseMockJsonStub.restore();
59
+ responseMockTextStub.restore();
60
+ stringsServiceApiUaStub.restore();
61
+ });
62
+ describe("Methods", () => {
63
+ it("Fetch source strings", () => __awaiter(void 0, void 0, void 0, function* () {
64
+ yield stringsApi.getSourceStrings(projectId, fetchSourceStringsParameters);
65
+ sinon_1.default.assert.calledOnce(stringsServiceApiFetchStub);
66
+ sinon_1.default.assert.calledWithExactly(stringsServiceApiFetchStub, `https://test.com/strings-api/v2/projects/${projectId}/source-strings?${expectedFetchSourceStringsParams}`, {
67
+ headers: {
68
+ Authorization: "test_token_type test_access_token",
69
+ "Content-Type": "application/json",
70
+ "User-Agent": "test_user_agent"
71
+ },
72
+ method: "get"
73
+ });
74
+ }));
75
+ it("Create strings with empty parameters", () => __awaiter(void 0, void 0, void 0, function* () {
76
+ yield stringsApi.createStrings(projectId, new create_strings_parameters_1.CreateStringsParameters());
77
+ sinon_1.default.assert.calledOnce(stringsServiceApiFetchStub);
78
+ sinon_1.default.assert.calledWithExactly(stringsServiceApiFetchStub, `https://test.com/strings-api/v2/projects/${projectId}`, {
79
+ headers: {
80
+ Authorization: "test_token_type test_access_token",
81
+ "Content-Type": "application/json",
82
+ "User-Agent": "test_user_agent"
83
+ },
84
+ method: "post",
85
+ body: "{}"
86
+ });
87
+ }));
88
+ it("Create strings with single string", () => __awaiter(void 0, void 0, void 0, function* () {
89
+ const stringItem = new string_item_parameters_1.StringItemParameters("Hello World");
90
+ const parameters = new create_strings_parameters_1.CreateStringsParameters()
91
+ .addString(stringItem);
92
+ yield stringsApi.createStrings(projectId, parameters);
93
+ sinon_1.default.assert.calledOnce(stringsServiceApiFetchStub);
94
+ sinon_1.default.assert.calledWithExactly(stringsServiceApiFetchStub, `https://test.com/strings-api/v2/projects/${projectId}`, {
95
+ headers: {
96
+ Authorization: "test_token_type test_access_token",
97
+ "Content-Type": "application/json",
98
+ "User-Agent": "test_user_agent"
99
+ },
100
+ method: "post",
101
+ body: JSON.stringify({
102
+ strings: [stringItem]
103
+ })
104
+ });
105
+ }));
106
+ it("Create strings with full string parameters", () => __awaiter(void 0, void 0, void 0, function* () {
107
+ const stringItem = new string_item_parameters_1.StringItemParameters("Hello World")
108
+ .setVariant("test-variant")
109
+ .setCallbackUrl("https://example.com/callback")
110
+ .setCallbackMethod("POST")
111
+ .setInstruction("Translation instruction")
112
+ .setFormat("html")
113
+ .setMaxLength(100);
114
+ const parameters = new create_strings_parameters_1.CreateStringsParameters()
115
+ .addString(stringItem);
116
+ yield stringsApi.createStrings(projectId, parameters);
117
+ sinon_1.default.assert.calledOnce(stringsServiceApiFetchStub);
118
+ sinon_1.default.assert.calledWithExactly(stringsServiceApiFetchStub, `https://test.com/strings-api/v2/projects/${projectId}`, {
119
+ headers: {
120
+ Authorization: "test_token_type test_access_token",
121
+ "Content-Type": "application/json",
122
+ "User-Agent": "test_user_agent"
123
+ },
124
+ method: "post",
125
+ body: JSON.stringify({
126
+ strings: [stringItem]
127
+ })
128
+ });
129
+ }));
130
+ it("Create strings with namespace and placeholder format", () => __awaiter(void 0, void 0, void 0, function* () {
131
+ const stringItem = new string_item_parameters_1.StringItemParameters("Hello {name}");
132
+ const parameters = new create_strings_parameters_1.CreateStringsParameters()
133
+ .setNamespace("test.namespace")
134
+ .setPlaceholderFormat("java")
135
+ .setPlaceholderFormatCustom("\\[.+?\\]")
136
+ .addString(stringItem);
137
+ yield stringsApi.createStrings(projectId, parameters);
138
+ sinon_1.default.assert.calledOnce(stringsServiceApiFetchStub);
139
+ sinon_1.default.assert.calledWithExactly(stringsServiceApiFetchStub, `https://test.com/strings-api/v2/projects/${projectId}`, {
140
+ headers: {
141
+ Authorization: "test_token_type test_access_token",
142
+ "Content-Type": "application/json",
143
+ "User-Agent": "test_user_agent"
144
+ },
145
+ method: "post",
146
+ body: JSON.stringify({
147
+ namespace: "test.namespace",
148
+ placeholderFormat: "java",
149
+ placeholderFormatCustom: "\\[.+?\\]",
150
+ strings: [stringItem]
151
+ })
152
+ });
153
+ }));
154
+ it("Create strings with multiple strings", () => __awaiter(void 0, void 0, void 0, function* () {
155
+ const stringItem1 = new string_item_parameters_1.StringItemParameters("Hello World");
156
+ const stringItem2 = new string_item_parameters_1.StringItemParameters("Goodbye World")
157
+ .setVariant("variant2");
158
+ const parameters = new create_strings_parameters_1.CreateStringsParameters()
159
+ .setStrings([stringItem1, stringItem2]);
160
+ yield stringsApi.createStrings(projectId, parameters);
161
+ sinon_1.default.assert.calledOnce(stringsServiceApiFetchStub);
162
+ sinon_1.default.assert.calledWithExactly(stringsServiceApiFetchStub, `https://test.com/strings-api/v2/projects/${projectId}`, {
163
+ headers: {
164
+ Authorization: "test_token_type test_access_token",
165
+ "Content-Type": "application/json",
166
+ "User-Agent": "test_user_agent"
167
+ },
168
+ method: "post",
169
+ body: JSON.stringify({
170
+ strings: [stringItem1, stringItem2]
171
+ })
172
+ });
173
+ }));
174
+ it("Should throw error when adding more than 100 strings via addString", () => {
175
+ const parameters = new create_strings_parameters_1.CreateStringsParameters();
176
+ for (let i = 0; i < 100; i += 1) {
177
+ parameters.addString(new string_item_parameters_1.StringItemParameters(`String ${i}`));
178
+ }
179
+ assert_1.default.throws(() => {
180
+ parameters.addString(new string_item_parameters_1.StringItemParameters("String 101"));
181
+ }, /Maximum 100 strings can be posted in any given request/);
182
+ });
183
+ it("Should throw error when setting more than 100 strings via setStrings", () => {
184
+ const strings = Array.from({ length: 101 }, (_, i) => new string_item_parameters_1.StringItemParameters(`String ${i}`));
185
+ const parameters = new create_strings_parameters_1.CreateStringsParameters();
186
+ assert_1.default.throws(() => {
187
+ parameters.setStrings(strings);
188
+ }, /Maximum 100 strings can be posted in any given request/);
189
+ });
190
+ it("Get create string status", () => __awaiter(void 0, void 0, void 0, function* () {
191
+ yield stringsApi.getCreateStringStatus(projectId, testProcessUid);
192
+ sinon_1.default.assert.calledOnce(stringsServiceApiFetchStub);
193
+ sinon_1.default.assert.calledWithExactly(stringsServiceApiFetchStub, `https://test.com/strings-api/v2/projects/${projectId}/processes/${testProcessUid}`, {
194
+ headers: {
195
+ Authorization: "test_token_type test_access_token",
196
+ "Content-Type": "application/json",
197
+ "User-Agent": "test_user_agent"
198
+ },
199
+ method: "get"
200
+ });
201
+ }));
202
+ });
203
+ });
204
+ //# sourceMappingURL=strings.spec.js.map