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,29 @@
1
+ name: Publish Package
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - '*.*.*'
7
+
8
+ permissions:
9
+ id-token: write # Required for OIDC
10
+ contents: read
11
+
12
+ jobs:
13
+ publish:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - uses: actions/setup-node@v4
19
+ with:
20
+ node-version: '20'
21
+ registry-url: 'https://registry.npmjs.org'
22
+
23
+ # Ensure npm 11.5.1 or later is installed
24
+ - name: Update npm
25
+ run: npm install -g npm@latest
26
+ - run: npm ci
27
+ - run: npm run build --if-present
28
+ - run: npm test
29
+ - run: npm publish
package/README.md CHANGED
@@ -13,6 +13,19 @@ Engines support
13
13
  * `1.x.x` - node < 18
14
14
  * `2.x.x` - node >= 18
15
15
 
16
+ Publishing to NPM
17
+ -----------------
18
+
19
+ 1. Make your changes.
20
+ 2. Put `*.*.*` semver tag.
21
+ 3. Tag triggers `.github/workflows/publish.yml` github action which pushes this package to NPM.
22
+
23
+ NPM integration setup
24
+ ---------------------
25
+
26
+ 1. In [package](https://www.npmjs.com/package/smartling-api-sdk-nodejs) settings at npmjs.com we set up `Trusted Pubkished` integration with github repo.
27
+ 2. In repo we have `.github/workflows/publish.yml` github action for publishing.
28
+
16
29
  Bug tracker
17
30
  -----------
18
31
 
@@ -20,7 +33,6 @@ Have a bug? Please create an issue here on GitHub!
20
33
 
21
34
  https://github.com/Smartling/api-sdk-nodejs/issues
22
35
 
23
-
24
36
  Hacking
25
37
  -------
26
38
 
@@ -24,5 +24,31 @@ export enum FileType {
24
24
  PRES = "pres",
25
25
  MADCAP = "madcap",
26
26
  YAML = "yaml",
27
- MARKDOWN = "markdown"
27
+ MARKDOWN = "markdown",
28
+ PHP_RESOURCE = "php_resource",
29
+ FREEMARKER = "freemarker",
30
+ TMX = "tmx",
31
+ XLIFF_CAT = "xliff_cat",
32
+ NONE = "none",
33
+ DITA = "dita",
34
+ DITA_ZIP = "dita_zip",
35
+ VTT = "vtt",
36
+ PDF = "pdf",
37
+ RTF = "rtf",
38
+ FLARE = "flare",
39
+ FLUENT = "fluent",
40
+ XLSX_TEMPLATE = "xlsx_template",
41
+ SVG = "svg",
42
+ DOCM = "docm",
43
+ XLIFF2 = "xliff2",
44
+ ARB = "arb",
45
+ XCSTRINGS = "xcstrings",
46
+ VSDX = "vsdx",
47
+ VSDM = "vsdm",
48
+ MDX = "mdx",
49
+ IMAGE_PNG = "image_png",
50
+ IMAGE_JPG = "image_jpg",
51
+ IMAGE_WEBP = "image_webp",
52
+ IMAGE_GIF = "image_gif",
53
+ IMAGE_BMP = "image_bmp"
28
54
  }
@@ -24,5 +24,31 @@ export declare enum FileType {
24
24
  PRES = "pres",
25
25
  MADCAP = "madcap",
26
26
  YAML = "yaml",
27
- MARKDOWN = "markdown"
27
+ MARKDOWN = "markdown",
28
+ PHP_RESOURCE = "php_resource",
29
+ FREEMARKER = "freemarker",
30
+ TMX = "tmx",
31
+ XLIFF_CAT = "xliff_cat",
32
+ NONE = "none",
33
+ DITA = "dita",
34
+ DITA_ZIP = "dita_zip",
35
+ VTT = "vtt",
36
+ PDF = "pdf",
37
+ RTF = "rtf",
38
+ FLARE = "flare",
39
+ FLUENT = "fluent",
40
+ XLSX_TEMPLATE = "xlsx_template",
41
+ SVG = "svg",
42
+ DOCM = "docm",
43
+ XLIFF2 = "xliff2",
44
+ ARB = "arb",
45
+ XCSTRINGS = "xcstrings",
46
+ VSDX = "vsdx",
47
+ VSDM = "vsdm",
48
+ MDX = "mdx",
49
+ IMAGE_PNG = "image_png",
50
+ IMAGE_JPG = "image_jpg",
51
+ IMAGE_WEBP = "image_webp",
52
+ IMAGE_GIF = "image_gif",
53
+ IMAGE_BMP = "image_bmp"
28
54
  }
@@ -29,5 +29,31 @@ var FileType;
29
29
  FileType["MADCAP"] = "madcap";
30
30
  FileType["YAML"] = "yaml";
31
31
  FileType["MARKDOWN"] = "markdown";
32
+ FileType["PHP_RESOURCE"] = "php_resource";
33
+ FileType["FREEMARKER"] = "freemarker";
34
+ FileType["TMX"] = "tmx";
35
+ FileType["XLIFF_CAT"] = "xliff_cat";
36
+ FileType["NONE"] = "none";
37
+ FileType["DITA"] = "dita";
38
+ FileType["DITA_ZIP"] = "dita_zip";
39
+ FileType["VTT"] = "vtt";
40
+ FileType["PDF"] = "pdf";
41
+ FileType["RTF"] = "rtf";
42
+ FileType["FLARE"] = "flare";
43
+ FileType["FLUENT"] = "fluent";
44
+ FileType["XLSX_TEMPLATE"] = "xlsx_template";
45
+ FileType["SVG"] = "svg";
46
+ FileType["DOCM"] = "docm";
47
+ FileType["XLIFF2"] = "xliff2";
48
+ FileType["ARB"] = "arb";
49
+ FileType["XCSTRINGS"] = "xcstrings";
50
+ FileType["VSDX"] = "vsdx";
51
+ FileType["VSDM"] = "vsdm";
52
+ FileType["MDX"] = "mdx";
53
+ FileType["IMAGE_PNG"] = "image_png";
54
+ FileType["IMAGE_JPG"] = "image_jpg";
55
+ FileType["IMAGE_WEBP"] = "image_webp";
56
+ FileType["IMAGE_GIF"] = "image_gif";
57
+ FileType["IMAGE_BMP"] = "image_bmp";
32
58
  })(FileType = exports.FileType || (exports.FileType = {}));
33
59
  //# sourceMappingURL=file-type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-type.js","sourceRoot":"","sources":["../../../../api/files/params/file-type.ts"],"names":[],"mappings":";;;AAAA,IAAY,QA2BX;AA3BD,WAAY,QAAQ;IAChB,+BAAmB,CAAA;IACnB,uBAAW,CAAA;IACX,+BAAmB,CAAA;IACnB,yBAAa,CAAA;IACb,+CAAmC,CAAA;IACnC,2BAAe,CAAA;IACf,uBAAW,CAAA;IACX,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,qBAAS,CAAA;IACT,yBAAa,CAAA;IACb,qCAAyB,CAAA;IACzB,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,uCAA2B,CAAA;IAC3B,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,yBAAa,CAAA;IACb,6BAAiB,CAAA;IACjB,yBAAa,CAAA;IACb,iCAAqB,CAAA;AACzB,CAAC,EA3BW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA2BnB"}
1
+ {"version":3,"file":"file-type.js","sourceRoot":"","sources":["../../../../api/files/params/file-type.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAqDX;AArDD,WAAY,QAAQ;IAChB,+BAAmB,CAAA;IACnB,uBAAW,CAAA;IACX,+BAAmB,CAAA;IACnB,yBAAa,CAAA;IACb,+CAAmC,CAAA;IACnC,2BAAe,CAAA;IACf,uBAAW,CAAA;IACX,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,qBAAS,CAAA;IACT,yBAAa,CAAA;IACb,qCAAyB,CAAA;IACzB,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,uCAA2B,CAAA;IAC3B,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,yBAAa,CAAA;IACb,6BAAiB,CAAA;IACjB,yBAAa,CAAA;IACb,iCAAqB,CAAA;IACrB,yCAA6B,CAAA;IAC7B,qCAAyB,CAAA;IACzB,uBAAW,CAAA;IACX,mCAAuB,CAAA;IACvB,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,iCAAqB,CAAA;IACrB,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,uBAAW,CAAA;IACX,2BAAe,CAAA;IACf,6BAAiB,CAAA;IACjB,2CAA+B,CAAA;IAC/B,uBAAW,CAAA;IACX,yBAAa,CAAA;IACb,6BAAiB,CAAA;IACjB,uBAAW,CAAA;IACX,mCAAuB,CAAA;IACvB,yBAAa,CAAA;IACb,yBAAa,CAAA;IACb,uBAAW,CAAA;IACX,mCAAuB,CAAA;IACvB,mCAAuB,CAAA;IACvB,qCAAyB,CAAA;IACzB,mCAAuB,CAAA;IACvB,mCAAuB,CAAA;AAC3B,CAAC,EArDW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAqDnB"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smartling-api-sdk-nodejs",
3
- "version": "2.29.0",
3
+ "version": "2.31.0",
4
4
  "description": "Package for Smartling API",
5
5
  "main": "built/index.js",
6
6
  "engines": {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
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 assert_1 = __importDefault(require("assert"));
16
+ const static_access_token_provider_1 = require("../api/auth/static-access-token-provider");
17
+ describe("AccessTokenProvider", () => {
18
+ const staticToken = "test.jwt.token";
19
+ it("should return the static token and token type", () => __awaiter(void 0, void 0, void 0, function* () {
20
+ const provider = new static_access_token_provider_1.StaticAccessTokenProvider(staticToken, "Bearer");
21
+ assert_1.default.strictEqual(yield provider.getAccessToken(), staticToken);
22
+ assert_1.default.strictEqual(yield provider.getTokenType(), "Bearer");
23
+ }));
24
+ });
25
+ //# sourceMappingURL=access-token-provider.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-token-provider.spec.js","sourceRoot":"","sources":["../../test/access-token-provider.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,2FAAqF;AAErF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACjC,MAAM,WAAW,GAAG,gBAAgB,CAAC;IAErC,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;QAC3D,MAAM,QAAQ,GAAG,IAAI,wDAAyB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEtE,gBAAM,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;QACjE,gBAAM,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC,CAAA,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,332 @@
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/auth/index");
18
+ const mock_1 = require("./mock");
19
+ const index_2 = require("../api/exception/index");
20
+ describe("Auth class tests.", () => {
21
+ let auth;
22
+ let authMakeRequestStub;
23
+ let authResetRequestTimeStampSpy;
24
+ beforeEach(() => {
25
+ auth = new index_1.SmartlingAuthApi("https://api.smartling.com", "test_user_id", "test_user_secret", mock_1.loggerMock);
26
+ authMakeRequestStub = sinon_1.default.stub(auth, "makeRequest");
27
+ authResetRequestTimeStampSpy = sinon_1.default.spy(auth, "resetRequestTimeStamp");
28
+ });
29
+ afterEach(() => {
30
+ authMakeRequestStub.restore();
31
+ authResetRequestTimeStampSpy.restore();
32
+ });
33
+ describe("Method authenticate.", () => {
34
+ it("Success flow", () => __awaiter(void 0, void 0, void 0, function* () {
35
+ yield auth.authenticate();
36
+ sinon_1.default.assert.calledOnce(authResetRequestTimeStampSpy);
37
+ sinon_1.default.assert.calledOnce(authMakeRequestStub);
38
+ sinon_1.default.assert.calledWithExactly(authMakeRequestStub, "post", "https://api.smartling.com/auth-api/v2/authenticate", "{\"userIdentifier\":\"test_user_id\",\"userSecret\":\"test_user_secret\"}");
39
+ }));
40
+ it("Auth endpoint returned non-200 response code", () => __awaiter(void 0, void 0, void 0, function* () {
41
+ authMakeRequestStub.restore();
42
+ const baseFetchStub = sinon_1.default.stub(auth, "fetch");
43
+ const response401Mock = {
44
+ status: 401
45
+ };
46
+ baseFetchStub.onCall(0).returns(response401Mock);
47
+ baseFetchStub.onCall(1).returns(mock_1.responseMock);
48
+ yield auth.authenticate();
49
+ }));
50
+ });
51
+ describe("Method refreshToken.", () => {
52
+ let authTokenExistsStub;
53
+ let authTokenCanBeRenewedStub;
54
+ let authAuthenticateStub;
55
+ beforeEach(() => {
56
+ authTokenExistsStub = sinon_1.default.stub(auth, "tokenExists");
57
+ authTokenCanBeRenewedStub = sinon_1.default.stub(auth, "tokenCanBeRenewed");
58
+ authAuthenticateStub = sinon_1.default.stub(auth, "authenticate");
59
+ });
60
+ afterEach(() => {
61
+ authTokenExistsStub.restore();
62
+ authTokenCanBeRenewedStub.restore();
63
+ authAuthenticateStub.restore();
64
+ });
65
+ it("Token exists and can be renewed.", () => __awaiter(void 0, void 0, void 0, function* () {
66
+ authTokenExistsStub.returns(true);
67
+ authTokenCanBeRenewedStub.returns(true);
68
+ auth.response = { refreshToken: "test_refresh_token" };
69
+ yield auth.refreshToken();
70
+ sinon_1.default.assert.calledOnce(authTokenExistsStub);
71
+ sinon_1.default.assert.calledOnce(authTokenCanBeRenewedStub);
72
+ sinon_1.default.assert.calledOnce(authResetRequestTimeStampSpy);
73
+ sinon_1.default.assert.calledOnce(authMakeRequestStub);
74
+ sinon_1.default.assert.calledWithExactly(authMakeRequestStub, "post", "https://api.smartling.com/auth-api/v2/authenticate/refresh", "{\"refreshToken\":\"test_refresh_token\"}");
75
+ sinon_1.default.assert.notCalled(authAuthenticateStub);
76
+ }));
77
+ it("Token exists but can't be renewed.", () => __awaiter(void 0, void 0, void 0, function* () {
78
+ authTokenExistsStub.returns(true);
79
+ authTokenCanBeRenewedStub.returns(false);
80
+ auth.response = { refreshToken: "test_refresh_token" };
81
+ yield auth.refreshToken();
82
+ sinon_1.default.assert.calledOnce(authTokenExistsStub);
83
+ sinon_1.default.assert.calledOnce(authTokenCanBeRenewedStub);
84
+ sinon_1.default.assert.notCalled(authResetRequestTimeStampSpy);
85
+ sinon_1.default.assert.notCalled(authMakeRequestStub);
86
+ sinon_1.default.assert.calledOnce(authAuthenticateStub);
87
+ }));
88
+ it("Token doesn't exist but can be renewed.", () => __awaiter(void 0, void 0, void 0, function* () {
89
+ authTokenExistsStub.returns(false);
90
+ authTokenCanBeRenewedStub.returns(true);
91
+ auth.response = { refreshToken: "test_refresh_token" };
92
+ yield auth.refreshToken();
93
+ sinon_1.default.assert.calledOnce(authTokenExistsStub);
94
+ sinon_1.default.assert.notCalled(authTokenCanBeRenewedStub);
95
+ sinon_1.default.assert.notCalled(authResetRequestTimeStampSpy);
96
+ sinon_1.default.assert.notCalled(authMakeRequestStub);
97
+ sinon_1.default.assert.calledOnce(authAuthenticateStub);
98
+ }));
99
+ it("Token doesn't exist and can't be renewed.", () => __awaiter(void 0, void 0, void 0, function* () {
100
+ authTokenExistsStub.returns(false);
101
+ authTokenCanBeRenewedStub.returns(false);
102
+ auth.response = { refreshToken: "test_refresh_token" };
103
+ yield auth.refreshToken();
104
+ sinon_1.default.assert.calledOnce(authTokenExistsStub);
105
+ sinon_1.default.assert.notCalled(authTokenCanBeRenewedStub);
106
+ sinon_1.default.assert.notCalled(authResetRequestTimeStampSpy);
107
+ sinon_1.default.assert.notCalled(authMakeRequestStub);
108
+ sinon_1.default.assert.calledOnce(authAuthenticateStub);
109
+ }));
110
+ });
111
+ it("Method resetToken.", () => __awaiter(void 0, void 0, void 0, function* () {
112
+ auth.requestTimestamp = 1234567890;
113
+ auth.response = { foo: "bar" };
114
+ auth.resetToken();
115
+ assert_1.default.equal(auth.requestTimestamp, 0);
116
+ assert_1.default.deepEqual(auth.response, null);
117
+ }));
118
+ describe("Method getAccessToken.", () => {
119
+ let authTokenExpiredStub;
120
+ let authRefreshTokenStub;
121
+ let authTokenExistsStub;
122
+ let authAuthenticateStub;
123
+ beforeEach(() => {
124
+ authTokenExpiredStub = sinon_1.default.stub(auth, "tokenExpired");
125
+ authRefreshTokenStub = sinon_1.default.stub(auth, "refreshToken");
126
+ authTokenExistsStub = sinon_1.default.stub(auth, "tokenExists");
127
+ authAuthenticateStub = sinon_1.default.stub(auth, "authenticate");
128
+ });
129
+ afterEach(() => {
130
+ authTokenExpiredStub.restore();
131
+ authRefreshTokenStub.restore();
132
+ authTokenExistsStub.restore();
133
+ authAuthenticateStub.restore();
134
+ });
135
+ it("Token is not expired and does exist.", () => __awaiter(void 0, void 0, void 0, function* () {
136
+ authTokenExpiredStub.returns(false);
137
+ authTokenExistsStub.returns(true);
138
+ auth.response = { accessToken: "foo" };
139
+ yield auth.getAccessToken();
140
+ sinon_1.default.assert.calledOnce(authTokenExpiredStub);
141
+ sinon_1.default.assert.notCalled(authRefreshTokenStub);
142
+ sinon_1.default.assert.calledOnce(authTokenExistsStub);
143
+ sinon_1.default.assert.notCalled(authAuthenticateStub);
144
+ }));
145
+ it("Token is expired and doesn't exist.", () => __awaiter(void 0, void 0, void 0, function* () {
146
+ authTokenExpiredStub.returns(true);
147
+ authTokenExistsStub.returns(false);
148
+ authAuthenticateStub.returns({ accessToken: "foo" });
149
+ yield auth.getAccessToken();
150
+ sinon_1.default.assert.calledOnce(authTokenExpiredStub);
151
+ sinon_1.default.assert.calledOnce(authRefreshTokenStub);
152
+ sinon_1.default.assert.calledOnce(authTokenExistsStub);
153
+ sinon_1.default.assert.calledOnce(authAuthenticateStub);
154
+ }));
155
+ it("Token is expired and exists.", () => __awaiter(void 0, void 0, void 0, function* () {
156
+ authTokenExpiredStub.returns(true);
157
+ authTokenExistsStub.returns(true);
158
+ authRefreshTokenStub.returns({ accessToken: "foo" });
159
+ yield auth.getAccessToken();
160
+ sinon_1.default.assert.calledOnce(authTokenExpiredStub);
161
+ sinon_1.default.assert.calledOnce(authRefreshTokenStub);
162
+ sinon_1.default.assert.calledOnce(authTokenExistsStub);
163
+ sinon_1.default.assert.notCalled(authAuthenticateStub);
164
+ }));
165
+ it("Token is not expired and doesn't exist.", () => __awaiter(void 0, void 0, void 0, function* () {
166
+ authTokenExpiredStub.returns(false);
167
+ authTokenExistsStub.returns(false);
168
+ authAuthenticateStub.returns({ accessToken: "foo" });
169
+ yield auth.getAccessToken();
170
+ sinon_1.default.assert.calledOnce(authTokenExpiredStub);
171
+ sinon_1.default.assert.notCalled(authRefreshTokenStub);
172
+ sinon_1.default.assert.calledOnce(authTokenExistsStub);
173
+ sinon_1.default.assert.calledOnce(authAuthenticateStub);
174
+ }));
175
+ it("Refresh token request failed: final attempt to authenticate succeeds.", () => __awaiter(void 0, void 0, void 0, function* () {
176
+ const error = new index_2.SmartlingException("Test exception", { foo: "bar" });
177
+ authTokenExpiredStub.returns(true);
178
+ authRefreshTokenStub.throws(error);
179
+ authAuthenticateStub.returns({ accessToken: "foo" });
180
+ assert_1.default.equal(yield auth.getAccessToken(), "foo");
181
+ assert_1.default.deepEqual(auth.response, {
182
+ accessToken: "foo"
183
+ });
184
+ sinon_1.default.assert.calledOnce(authTokenExpiredStub);
185
+ sinon_1.default.assert.calledOnce(authRefreshTokenStub);
186
+ sinon_1.default.assert.notCalled(authTokenExistsStub);
187
+ sinon_1.default.assert.calledOnce(authAuthenticateStub);
188
+ }));
189
+ it("Refresh token request failed: final attempt to authenticate fails.", () => __awaiter(void 0, void 0, void 0, function* () {
190
+ const refreshError = new index_2.SmartlingException("Refresh failed", { foo: "bar" });
191
+ const authError = new index_2.SmartlingException("Auth failed", { foo: "bar" });
192
+ authTokenExpiredStub.returns(true);
193
+ authRefreshTokenStub.throws(refreshError);
194
+ authAuthenticateStub.throws(authError);
195
+ try {
196
+ yield auth.getAccessToken();
197
+ throw new Error("Exception is not thrown.");
198
+ }
199
+ catch (e) {
200
+ assert_1.default.equal(e.constructor.name, "SmartlingException");
201
+ assert_1.default.equal(e.message, "Failed to get access token");
202
+ assert_1.default.deepEqual(e.payload, { foo: "bar" });
203
+ assert_1.default.equal(e.nestedException, authError);
204
+ }
205
+ finally {
206
+ sinon_1.default.assert.calledOnce(authTokenExpiredStub);
207
+ sinon_1.default.assert.calledOnce(authRefreshTokenStub);
208
+ sinon_1.default.assert.notCalled(authTokenExistsStub);
209
+ sinon_1.default.assert.calledOnce(authAuthenticateStub);
210
+ }
211
+ }));
212
+ });
213
+ describe("Method getTokenType.", () => {
214
+ let authTokenExistsSpy;
215
+ let authAuthenticateStub;
216
+ beforeEach(() => {
217
+ authTokenExistsSpy = sinon_1.default.spy(auth, "tokenExists");
218
+ authAuthenticateStub = sinon_1.default.stub(auth, "authenticate");
219
+ });
220
+ afterEach(() => {
221
+ authTokenExistsSpy.restore();
222
+ authAuthenticateStub.restore();
223
+ });
224
+ it("Token exists.", () => __awaiter(void 0, void 0, void 0, function* () {
225
+ auth.response = {
226
+ accessToken: "test_access_token",
227
+ tokenType: "test_token_type"
228
+ };
229
+ const result = yield auth.getTokenType();
230
+ sinon_1.default.assert.calledOnce(authTokenExistsSpy);
231
+ sinon_1.default.assert.notCalled(authAuthenticateStub);
232
+ assert_1.default.equal(result, "test_token_type");
233
+ }));
234
+ it("Token doesn't exist: re-auth failed.", () => __awaiter(void 0, void 0, void 0, function* () {
235
+ authAuthenticateStub.throws(new index_2.SmartlingException("Failed to get token type"));
236
+ try {
237
+ yield auth.getTokenType();
238
+ throw new Error("Exception is not thrown.");
239
+ }
240
+ catch (e) {
241
+ assert_1.default.equal(e.constructor.name, "SmartlingException");
242
+ assert_1.default.equal(e.message, "Failed to get token type");
243
+ }
244
+ finally {
245
+ sinon_1.default.assert.calledOnce(authTokenExistsSpy);
246
+ sinon_1.default.assert.calledOnce(authAuthenticateStub);
247
+ }
248
+ }));
249
+ it("Token doesn't exist: re-auth succeeded.", () => __awaiter(void 0, void 0, void 0, function* () {
250
+ authAuthenticateStub.returns({
251
+ accessToken: "test_access_token",
252
+ tokenType: "test_token_type"
253
+ });
254
+ const result = yield auth.getTokenType();
255
+ sinon_1.default.assert.calledOnce(authTokenExistsSpy);
256
+ sinon_1.default.assert.calledOnce(authAuthenticateStub);
257
+ assert_1.default.equal(result, "test_token_type");
258
+ }));
259
+ });
260
+ describe("Method tokenExists.", () => {
261
+ it("Response object is set and contains 'accessToken' property.", () => __awaiter(void 0, void 0, void 0, function* () {
262
+ auth.response = {
263
+ accessToken: "test_access_token"
264
+ };
265
+ assert_1.default.equal(auth.tokenExists(), true);
266
+ }));
267
+ it("Response object is set but 'accessToken' property is missing.", () => __awaiter(void 0, void 0, void 0, function* () {
268
+ auth.response = {
269
+ foo: "bar"
270
+ };
271
+ assert_1.default.equal(auth.tokenExists(), false);
272
+ }));
273
+ it("Response object is not set.", () => __awaiter(void 0, void 0, void 0, function* () {
274
+ assert_1.default.equal(auth.tokenExists(), false);
275
+ }));
276
+ });
277
+ describe("Method tokenExpired", () => {
278
+ let authTokenExistsStub;
279
+ beforeEach(() => {
280
+ authTokenExistsStub = sinon_1.default.stub(auth, "tokenExists");
281
+ });
282
+ afterEach(() => {
283
+ authTokenExistsStub.restore();
284
+ });
285
+ it("Expired: token exists and current time > token expiration time.", () => {
286
+ const time = auth.time();
287
+ authTokenExistsStub.returns(true);
288
+ auth.requestTimestamp = time - 120;
289
+ auth.response = { expiresIn: 100 };
290
+ assert_1.default.equal(auth.tokenExpired(), true);
291
+ });
292
+ it("Not expired: token exists and current time <= token expiration time.", () => {
293
+ const time = auth.time();
294
+ authTokenExistsStub.returns(true);
295
+ auth.requestTimestamp = time;
296
+ auth.response = { expiresIn: 100 };
297
+ assert_1.default.equal(auth.tokenExpired(), false);
298
+ });
299
+ it("Not expired: token doesn't exist.", () => {
300
+ authTokenExistsStub.returns(false);
301
+ assert_1.default.equal(auth.tokenExpired(), false);
302
+ });
303
+ });
304
+ describe("Method tokenCanBeRenewed", () => {
305
+ let authTokenExistsStub;
306
+ beforeEach(() => {
307
+ authTokenExistsStub = sinon_1.default.stub(auth, "tokenExists");
308
+ });
309
+ afterEach(() => {
310
+ authTokenExistsStub.restore();
311
+ });
312
+ it("Can be renewed: token exists and current time < request time stamp + 'response.refreshExpiresIn'.", () => {
313
+ const time = auth.time();
314
+ authTokenExistsStub.returns(true);
315
+ auth.requestTimestamp = time;
316
+ auth.response = { refreshExpiresIn: 100 };
317
+ assert_1.default.equal(auth.tokenCanBeRenewed(), true);
318
+ });
319
+ it("Can't be renewed: token exists and current time >= request time stamp + 'response.refreshExpiresIn'.", () => {
320
+ const time = auth.time();
321
+ authTokenExistsStub.returns(true);
322
+ auth.requestTimestamp = time - 120;
323
+ auth.response = { refreshExpiresIn: 100 };
324
+ assert_1.default.equal(auth.tokenCanBeRenewed(), false);
325
+ });
326
+ it("Can't be renewed: token doesn't exist.", () => {
327
+ authTokenExistsStub.returns(false);
328
+ assert_1.default.equal(auth.tokenCanBeRenewed(), false);
329
+ });
330
+ });
331
+ });
332
+ //# sourceMappingURL=auth.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.spec.js","sourceRoot":"","sources":["../../test/auth.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,53 @@
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 assert_1 = __importDefault(require("assert"));
16
+ const sinon_1 = __importDefault(require("sinon"));
17
+ const mock_1 = require("./mock");
18
+ const base_1 = require("../api/base");
19
+ describe("SmartlingBaseFileApi class tests.", () => {
20
+ let mockResponse;
21
+ beforeEach(() => {
22
+ mockResponse = Object.assign(Object.assign({}, mock_1.responseMock), { headers: {
23
+ get: sinon_1.default.stub().returns(null)
24
+ } });
25
+ });
26
+ describe("Methods", () => {
27
+ it("Convert response to dto when response doesn't have headers", () => __awaiter(void 0, void 0, void 0, function* () {
28
+ const fileWithMetadata = yield base_1.SmartlingBaseFileApi.downloadResponseToTranslatedFileDto(mockResponse);
29
+ assert_1.default.ok(fileWithMetadata.contentType === undefined);
30
+ assert_1.default.ok(fileWithMetadata.fileName === undefined);
31
+ assert_1.default.ok(fileWithMetadata.fileContent.byteLength === 1);
32
+ }));
33
+ it("Convert response to dto when response has headers", () => __awaiter(void 0, void 0, void 0, function* () {
34
+ mockResponse.headers.get.onCall(0).returns("application/xml");
35
+ mockResponse.headers.get.onCall(1).returns("attachment; filename=\"test.xml\"");
36
+ mockResponse.headers.get.returns(null);
37
+ const fileWithMetadata = yield base_1.SmartlingBaseFileApi.downloadResponseToTranslatedFileDto(mockResponse);
38
+ assert_1.default.ok(fileWithMetadata.contentType === "application/xml");
39
+ assert_1.default.ok(fileWithMetadata.fileName === "test.xml");
40
+ assert_1.default.ok(fileWithMetadata.fileContent.byteLength === 1);
41
+ }));
42
+ it("Convert response to dto when file name has quotes", () => __awaiter(void 0, void 0, void 0, function* () {
43
+ mockResponse.headers.get.onCall(0).returns("application/xml");
44
+ mockResponse.headers.get.onCall(1).returns("attachment; filename=\"test - \\\"phase 1\\\".xml\"");
45
+ mockResponse.headers.get.returns(null);
46
+ const fileWithMetadata = yield base_1.SmartlingBaseFileApi.downloadResponseToTranslatedFileDto(mockResponse);
47
+ assert_1.default.ok(fileWithMetadata.contentType === "application/xml");
48
+ assert_1.default.ok(fileWithMetadata.fileName === "test - \"phase 1\".xml");
49
+ assert_1.default.ok(fileWithMetadata.fileContent.byteLength === 1);
50
+ }));
51
+ });
52
+ });
53
+ //# sourceMappingURL=base-file.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-file.spec.js","sourceRoot":"","sources":["../../test/base-file.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,kDAA0B;AAC1B,iCAAsC;AACtC,sCAAmD;AAEnD,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAC/C,IAAI,YAAY,CAAC;IAEjB,UAAU,CAAC,GAAG,EAAE;QACZ,YAAY,mCACL,mBAAY,KACf,OAAO,EAAE;gBACL,GAAG,EAAE,eAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,GACJ,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,4DAA4D,EAAE,GAAS,EAAE;YACxE,MAAM,gBAAgB,GAAG,MAAM,2BAAoB,CAAC,mCAAmC,CACnF,YAAwB,CAC3B,CAAC;YAEF,gBAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;YACtD,gBAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;YACnD,gBAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAS,EAAE;YAC/D,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC9D,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;YAChF,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEvC,MAAM,gBAAgB,GAAG,MAAM,2BAAoB,CAAC,mCAAmC,CACnF,YAAwB,CAC3B,CAAC;YAEF,gBAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,KAAK,iBAAiB,CAAC,CAAC;YAC9D,gBAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;YACpD,gBAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAS,EAAE;YAC/D,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC9D,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC;YAClG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEvC,MAAM,gBAAgB,GAAG,MAAM,2BAAoB,CAAC,mCAAmC,CACnF,YAAwB,CAC3B,CAAC;YAEF,gBAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,KAAK,iBAAiB,CAAC,CAAC;YAC9D,gBAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,KAAK,wBAAwB,CAAC,CAAC;YAClE,gBAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAA,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};