smartystreets-javascript-sdk 5.2.0 → 6.1.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.
- package/dist/cjs/AgentSender.cjs +1 -0
- package/dist/cjs/BaseUrlSender.cjs +1 -0
- package/dist/cjs/Batch.cjs +1 -0
- package/dist/cjs/ClientBuilder.cjs +1 -0
- package/dist/cjs/CustomHeaderSender.cjs +1 -0
- package/dist/cjs/Errors.cjs +1 -0
- package/dist/cjs/HttpSender.cjs +1 -0
- package/dist/cjs/InputData.cjs +1 -0
- package/dist/cjs/LicenseSender.cjs +1 -0
- package/dist/cjs/Request.cjs +1 -0
- package/dist/cjs/Response.cjs +1 -0
- package/dist/cjs/RetrySender.cjs +1 -0
- package/dist/cjs/SharedCredentials.cjs +1 -0
- package/dist/cjs/SigningSender.cjs +1 -0
- package/dist/cjs/StaticCredentials.cjs +1 -0
- package/dist/cjs/StatusCodeSender.cjs +1 -0
- package/dist/cjs/_virtual/Batch.cjs +1 -0
- package/dist/cjs/_virtual/Candidate.cjs +1 -0
- package/dist/cjs/_virtual/Candidate2.cjs +1 -0
- package/dist/cjs/_virtual/ClientBuilder.cjs +1 -0
- package/dist/cjs/_virtual/Errors.cjs +1 -0
- package/dist/cjs/_virtual/Lookup.cjs +1 -0
- package/dist/cjs/_virtual/Lookup2.cjs +1 -0
- package/dist/cjs/_virtual/Lookup3.cjs +1 -0
- package/dist/cjs/_virtual/Lookup4.cjs +1 -0
- package/dist/cjs/_virtual/Lookup5.cjs +1 -0
- package/dist/cjs/_virtual/Lookup6.cjs +1 -0
- package/dist/cjs/_virtual/Lookup7.cjs +1 -0
- package/dist/cjs/_virtual/Lookup8.cjs +1 -0
- package/dist/cjs/_virtual/Response.cjs +1 -0
- package/dist/cjs/_virtual/Result.cjs +1 -0
- package/dist/cjs/_virtual/Result2.cjs +1 -0
- package/dist/cjs/_virtual/SharedCredentials.cjs +1 -0
- package/dist/cjs/_virtual/StaticCredentials.cjs +1 -0
- package/dist/cjs/_virtual/Suggestion.cjs +1 -0
- package/dist/cjs/_virtual/Suggestion2.cjs +1 -0
- package/dist/cjs/_virtual/_axios.cjs +1 -0
- package/dist/cjs/_virtual/_commonjsHelpers.cjs +1 -0
- package/dist/cjs/_virtual/buildClients.cjs +1 -0
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/international_address_autocomplete/Client.cjs +1 -0
- package/dist/cjs/international_address_autocomplete/Lookup.cjs +1 -0
- package/dist/cjs/international_address_autocomplete/Suggestion.cjs +1 -0
- package/dist/cjs/international_street/Candidate.cjs +1 -0
- package/dist/cjs/international_street/Client.cjs +1 -0
- package/dist/cjs/international_street/Lookup.cjs +1 -0
- package/dist/cjs/package.json.cjs +1 -0
- package/dist/cjs/us_autocomplete_pro/Client.cjs +1 -0
- package/dist/cjs/us_autocomplete_pro/Lookup.cjs +1 -0
- package/dist/cjs/us_autocomplete_pro/Suggestion.cjs +1 -0
- package/dist/cjs/us_enrichment/Client.cjs +1 -0
- package/dist/cjs/us_enrichment/Lookup.cjs +1 -0
- package/dist/cjs/us_enrichment/Response.cjs +1 -0
- package/dist/cjs/us_extract/Address.cjs +1 -0
- package/dist/cjs/us_extract/Client.cjs +1 -0
- package/dist/cjs/us_extract/Lookup.cjs +1 -0
- package/dist/cjs/us_extract/Result.cjs +1 -0
- package/dist/cjs/us_reverse_geo/Client.cjs +1 -0
- package/dist/cjs/us_reverse_geo/Lookup.cjs +1 -0
- package/dist/cjs/us_reverse_geo/Response.cjs +1 -0
- package/dist/cjs/us_reverse_geo/Result.cjs +1 -0
- package/dist/cjs/us_street/Candidate.cjs +1 -0
- package/dist/cjs/us_street/Client.cjs +1 -0
- package/dist/cjs/us_street/Lookup.cjs +1 -0
- package/dist/cjs/us_zipcode/Client.cjs +1 -0
- package/dist/cjs/us_zipcode/Lookup.cjs +1 -0
- package/dist/cjs/us_zipcode/Result.cjs +1 -0
- package/dist/cjs/util/Sleeper.cjs +1 -0
- package/dist/cjs/util/apiToSDKKeyMap.cjs +1 -0
- package/dist/cjs/util/buildClients.cjs +1 -0
- package/dist/cjs/util/buildInputData.cjs +1 -0
- package/dist/cjs/util/buildSmartyResponse.cjs +1 -0
- package/dist/cjs/util/sendBatch.cjs +1 -0
- package/dist/esm/AgentSender.mjs +1 -0
- package/dist/esm/BaseUrlSender.mjs +1 -0
- package/dist/esm/Batch.mjs +1 -0
- package/dist/esm/ClientBuilder.mjs +1 -0
- package/dist/esm/CustomHeaderSender.mjs +1 -0
- package/dist/esm/Errors.mjs +1 -0
- package/dist/esm/HttpSender.mjs +1 -0
- package/dist/esm/InputData.mjs +1 -0
- package/dist/esm/LicenseSender.mjs +1 -0
- package/dist/esm/Request.mjs +1 -0
- package/dist/esm/Response.mjs +1 -0
- package/dist/esm/RetrySender.mjs +1 -0
- package/dist/esm/SharedCredentials.mjs +1 -0
- package/dist/esm/SigningSender.mjs +1 -0
- package/dist/esm/StaticCredentials.mjs +1 -0
- package/dist/esm/StatusCodeSender.mjs +1 -0
- package/dist/esm/_virtual/Batch.mjs +1 -0
- package/dist/esm/_virtual/Candidate.mjs +1 -0
- package/dist/esm/_virtual/Candidate2.mjs +1 -0
- package/dist/esm/_virtual/ClientBuilder.mjs +1 -0
- package/dist/esm/_virtual/Errors.mjs +1 -0
- package/dist/esm/_virtual/Lookup.mjs +1 -0
- package/dist/esm/_virtual/Lookup2.mjs +1 -0
- package/dist/esm/_virtual/Lookup3.mjs +1 -0
- package/dist/esm/_virtual/Lookup4.mjs +1 -0
- package/dist/esm/_virtual/Lookup5.mjs +1 -0
- package/dist/esm/_virtual/Lookup6.mjs +1 -0
- package/dist/esm/_virtual/Lookup7.mjs +1 -0
- package/dist/esm/_virtual/Lookup8.mjs +1 -0
- package/dist/esm/_virtual/Response.mjs +1 -0
- package/dist/esm/_virtual/Result.mjs +1 -0
- package/dist/esm/_virtual/Result2.mjs +1 -0
- package/dist/esm/_virtual/SharedCredentials.mjs +1 -0
- package/dist/esm/_virtual/StaticCredentials.mjs +1 -0
- package/dist/esm/_virtual/Suggestion.mjs +1 -0
- package/dist/esm/_virtual/Suggestion2.mjs +1 -0
- package/dist/esm/_virtual/_axios.mjs +1 -0
- package/dist/esm/_virtual/_commonjsHelpers.mjs +1 -0
- package/dist/esm/_virtual/buildClients.mjs +1 -0
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/international_address_autocomplete/Client.mjs +1 -0
- package/dist/esm/international_address_autocomplete/Lookup.mjs +1 -0
- package/dist/esm/international_address_autocomplete/Suggestion.mjs +1 -0
- package/dist/esm/international_street/Candidate.mjs +1 -0
- package/dist/esm/international_street/Client.mjs +1 -0
- package/dist/esm/international_street/Lookup.mjs +1 -0
- package/dist/esm/package.json.mjs +1 -0
- package/dist/esm/us_autocomplete_pro/Client.mjs +1 -0
- package/dist/esm/us_autocomplete_pro/Lookup.mjs +1 -0
- package/dist/esm/us_autocomplete_pro/Suggestion.mjs +1 -0
- package/dist/esm/us_enrichment/Client.mjs +1 -0
- package/dist/esm/us_enrichment/Lookup.mjs +1 -0
- package/dist/esm/us_enrichment/Response.mjs +1 -0
- package/dist/esm/us_extract/Address.mjs +1 -0
- package/dist/esm/us_extract/Client.mjs +1 -0
- package/dist/esm/us_extract/Lookup.mjs +1 -0
- package/dist/esm/us_extract/Result.mjs +1 -0
- package/dist/esm/us_reverse_geo/Client.mjs +1 -0
- package/dist/esm/us_reverse_geo/Lookup.mjs +1 -0
- package/dist/esm/us_reverse_geo/Response.mjs +1 -0
- package/dist/esm/us_reverse_geo/Result.mjs +1 -0
- package/dist/esm/us_street/Candidate.mjs +1 -0
- package/dist/esm/us_street/Client.mjs +1 -0
- package/dist/esm/us_street/Lookup.mjs +1 -0
- package/dist/esm/us_zipcode/Client.mjs +1 -0
- package/dist/esm/us_zipcode/Lookup.mjs +1 -0
- package/dist/esm/us_zipcode/Result.mjs +1 -0
- package/dist/esm/util/Sleeper.mjs +1 -0
- package/dist/esm/util/apiToSDKKeyMap.mjs +1 -0
- package/dist/esm/util/buildClients.mjs +1 -0
- package/dist/esm/util/buildInputData.mjs +1 -0
- package/dist/esm/util/buildSmartyResponse.mjs +1 -0
- package/dist/esm/util/sendBatch.mjs +1 -0
- package/package.json +26 -6
- package/.github/workflows/node-tests.yml +0 -27
- package/CHANGELOG.md +0 -5
- package/Makefile +0 -28
- package/examples/international_address_autocomplete.js +0 -58
- package/examples/international_street.js +0 -56
- package/examples/us_autocomplete_pro.js +0 -63
- package/examples/us_enrichment.js +0 -36
- package/examples/us_extract.js +0 -40
- package/examples/us_reverse_geo.js +0 -40
- package/examples/us_street.js +0 -73
- package/examples/us_zipcode.js +0 -57
- package/index.js +0 -41
- package/js-sdk-demo.cast +0 -95
- package/src/AgentSender.js +0 -16
- package/src/BaseUrlSender.js +0 -18
- package/src/Batch.js +0 -49
- package/src/ClientBuilder.js +0 -212
- package/src/CustomHeaderSender.js +0 -20
- package/src/Errors.js +0 -100
- package/src/HttpSender.js +0 -66
- package/src/InputData.js +0 -21
- package/src/LicenseSender.js +0 -20
- package/src/Request.js +0 -12
- package/src/Response.js +0 -10
- package/src/RetrySender.js +0 -50
- package/src/SharedCredentials.js +0 -13
- package/src/SigningSender.js +0 -26
- package/src/StaticCredentials.js +0 -13
- package/src/StatusCodeSender.js +0 -35
- package/src/international_address_autocomplete/Client.js +0 -41
- package/src/international_address_autocomplete/Lookup.js +0 -14
- package/src/international_address_autocomplete/Suggestion.js +0 -14
- package/src/international_street/Candidate.js +0 -153
- package/src/international_street/Client.js +0 -42
- package/src/international_street/Lookup.js +0 -85
- package/src/us_autocomplete_pro/Client.js +0 -41
- package/src/us_autocomplete_pro/Lookup.js +0 -29
- package/src/us_autocomplete_pro/Suggestion.js +0 -19
- package/src/us_enrichment/Client.js +0 -112
- package/src/us_enrichment/Lookup.js +0 -13
- package/src/us_enrichment/Response.js +0 -559
- package/src/us_extract/Address.js +0 -17
- package/src/us_extract/Client.js +0 -35
- package/src/us_extract/Lookup.js +0 -24
- package/src/us_extract/Result.js +0 -21
- package/src/us_reverse_geo/Client.js +0 -40
- package/src/us_reverse_geo/Lookup.js +0 -17
- package/src/us_reverse_geo/Response.js +0 -17
- package/src/us_reverse_geo/Result.js +0 -36
- package/src/us_street/Candidate.js +0 -89
- package/src/us_street/Client.js +0 -43
- package/src/us_street/Lookup.js +0 -25
- package/src/us_zipcode/Client.js +0 -39
- package/src/us_zipcode/Lookup.js +0 -16
- package/src/us_zipcode/Result.js +0 -45
- package/src/util/Sleeper.js +0 -8
- package/src/util/apiToSDKKeyMap.js +0 -75
- package/src/util/buildClients.js +0 -48
- package/src/util/buildInputData.js +0 -11
- package/src/util/buildSmartyResponse.js +0 -10
- package/src/util/sendBatch.js +0 -39
- package/tests/fixtures/MockSleeper.js +0 -10
- package/tests/fixtures/mock_senders.js +0 -43
- package/tests/international_address_autocomplete/test_Client.js +0 -86
- package/tests/international_address_autocomplete/test_Lookup.js +0 -55
- package/tests/international_street/test_Candidate.js +0 -268
- package/tests/international_street/test_Client.js +0 -70
- package/tests/international_street/test_Lookup.js +0 -108
- package/tests/test_AgentSender.js +0 -25
- package/tests/test_BaseUrlSender.js +0 -31
- package/tests/test_Batch.js +0 -73
- package/tests/test_CustomHeaderSender.js +0 -31
- package/tests/test_ExtractExample.js +0 -167
- package/tests/test_HttpSender.js +0 -93
- package/tests/test_LicenseSender.js +0 -40
- package/tests/test_RetrySender.js +0 -98
- package/tests/test_SigningSender.js +0 -56
- package/tests/test_StatusCodeSender.js +0 -95
- package/tests/us_autocomplete_pro/test_Client.js +0 -116
- package/tests/us_autocomplete_pro/test_Lookup.js +0 -11
- package/tests/us_autocomplete_pro/test_Suggestion.js +0 -24
- package/tests/us_enrichment/test_Client.js +0 -455
- package/tests/us_enrichment/test_Lookup.js +0 -22
- package/tests/us_enrichment/test_Response.js +0 -739
- package/tests/us_extract/test_Address.js +0 -67
- package/tests/us_extract/test_Client.js +0 -148
- package/tests/us_extract/test_Lookup.js +0 -19
- package/tests/us_extract/test_Result.js +0 -39
- package/tests/us_reverse_geo/test_Client.js +0 -48
- package/tests/us_reverse_geo/test_Lookup.js +0 -14
- package/tests/us_reverse_geo/test_Response.js +0 -44
- package/tests/us_street/test_Candidate.js +0 -133
- package/tests/us_street/test_Client.js +0 -150
- package/tests/us_street/test_Lookup.js +0 -29
- package/tests/us_zipcode/test_Client.js +0 -150
- package/tests/us_zipcode/test_Result.js +0 -81
package/tests/test_Batch.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
const chai = require("chai");
|
|
2
|
-
const expect = chai.expect;
|
|
3
|
-
const errors = require("../src/Errors");
|
|
4
|
-
const Batch = require("../src/Batch");
|
|
5
|
-
const Lookup = require("../src/us_street/Lookup");
|
|
6
|
-
|
|
7
|
-
describe("A batch", function () {
|
|
8
|
-
let batch;
|
|
9
|
-
|
|
10
|
-
beforeEach(function () {
|
|
11
|
-
batch = new Batch();
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
it ("has a lookups field.", function () {
|
|
15
|
-
expect(batch.hasOwnProperty("lookups")).to.equal(true);
|
|
16
|
-
expect(Array.isArray(batch.lookups)).to.equal(true);
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it ("can add a lookup to its array of lookups.", function () {
|
|
20
|
-
expect(batch.lookups.length).to.equal(0);
|
|
21
|
-
batch.add("Hi.");
|
|
22
|
-
expect(batch.lookups.length).to.equal(1);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it ("errors if you add a lookup when it's full.", function () {
|
|
26
|
-
for (let i = 0; i < 100; i++) {
|
|
27
|
-
let lookup = {};
|
|
28
|
-
batch.add(lookup);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
expect(() => batch.add({})).to.throw(errors.BatchFullError);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it ("can be cleared.", function () {
|
|
35
|
-
batch.add("Hi.");
|
|
36
|
-
batch.clear();
|
|
37
|
-
expect(batch.lookups.length).to.equal(0);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it ("has a length.", function () {
|
|
41
|
-
expect(batch.length()).to.equal(0);
|
|
42
|
-
for (let i = 0; i < 50; i++) {
|
|
43
|
-
batch.add(i);
|
|
44
|
-
}
|
|
45
|
-
expect(batch.length()).to.equal(50);
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
it ("returns a lookup by index.", function () {
|
|
49
|
-
for (let i = 0; i < 100; i++) {
|
|
50
|
-
batch.add(i);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
expect(batch.getByIndex(50)).to.equal(50);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it ("returns a lookup by input id.", function () {
|
|
57
|
-
for (let i = 0; i < 100; i++) {
|
|
58
|
-
let lookup = new Lookup();
|
|
59
|
-
lookup.inputId = i;
|
|
60
|
-
batch.add(lookup);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
let expectedLookup = batch.getByIndex(50);
|
|
64
|
-
|
|
65
|
-
expect(batch.getByInputId(50)).to.deep.equal(expectedLookup);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it ("knows if it's empty.", function () {
|
|
69
|
-
expect(batch.isEmpty()).to.equal(true);
|
|
70
|
-
batch.add("1");
|
|
71
|
-
expect(batch.isEmpty()).to.equal(false);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
const chai = require("chai");
|
|
2
|
-
const expect = chai.expect;
|
|
3
|
-
const CustomHeaderSender = require("../src/CustomHeaderSender");
|
|
4
|
-
const Request = require("../src/Request");
|
|
5
|
-
|
|
6
|
-
describe("A custom header sender", function () {
|
|
7
|
-
it ("adds custom headers to the request.", function () {
|
|
8
|
-
function MockSender () {
|
|
9
|
-
this.request;
|
|
10
|
-
|
|
11
|
-
this.send = (request) => {
|
|
12
|
-
this.request = request;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
let mockSender = new MockSender();
|
|
17
|
-
let customHeaders = {
|
|
18
|
-
a: "1",
|
|
19
|
-
b: "2",
|
|
20
|
-
};
|
|
21
|
-
let customHeaderSender = new CustomHeaderSender(mockSender, customHeaders);
|
|
22
|
-
let request = new Request();
|
|
23
|
-
|
|
24
|
-
customHeaderSender.send(request);
|
|
25
|
-
|
|
26
|
-
expect(mockSender.request.headers.hasOwnProperty("a")).to.equal(true);
|
|
27
|
-
expect(mockSender.request.headers.a).to.equal("1");
|
|
28
|
-
expect(mockSender.request.headers.hasOwnProperty("b")).to.equal(true);
|
|
29
|
-
expect(mockSender.request.headers.b).to.equal("2");
|
|
30
|
-
});
|
|
31
|
-
});
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
const chai = require("chai");
|
|
2
|
-
const expect = chai.expect;
|
|
3
|
-
const SmartySDK = require("../index");
|
|
4
|
-
|
|
5
|
-
describe("Extract example test", () => {
|
|
6
|
-
const authId = "";
|
|
7
|
-
const authToken = "";
|
|
8
|
-
const SmartyCore = SmartySDK.core;
|
|
9
|
-
const credentials = new SmartyCore.StaticCredentials(authId, authToken);
|
|
10
|
-
const clientBuilder = new SmartyCore.ClientBuilder(credentials);
|
|
11
|
-
clientBuilder.withBaseUrl("https://us-extract.api.hobbes.smartyops.net");
|
|
12
|
-
|
|
13
|
-
const usExtractClient = clientBuilder.buildUsExtractClient();
|
|
14
|
-
|
|
15
|
-
it("Check multi-line test", async () => {
|
|
16
|
-
if (!(authId && authToken)) {
|
|
17
|
-
expect("bypass").to.equal("bypass");
|
|
18
|
-
} else {
|
|
19
|
-
const lookup = new SmartySDK.usExtract.Lookup(`
|
|
20
|
-
1476 Sandhill Rd, Orem, UT asdlfkjasldfkja sldfj 350 E University Pkwy, Orem, UT 84058 asldfkjasldfj asldkfjasldfj
|
|
21
|
-
417 W 1300 S, Orem, UT asdlfkjasldfkjal skdjf alskdjf 309 E University Pkwy, Orem, UT 84058
|
|
22
|
-
`);
|
|
23
|
-
|
|
24
|
-
lookup.addressesHaveLineBreaks = true;
|
|
25
|
-
lookup.addressesPerLine = 1;
|
|
26
|
-
|
|
27
|
-
const result = await usExtractClient.send(lookup);
|
|
28
|
-
|
|
29
|
-
expect(result.result.meta.addressCount).to.equal(2);
|
|
30
|
-
expect(result.result.meta.verifiedCount).to.equal(2);
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("Check HTML test", async () => {
|
|
36
|
-
if (!(authId && authToken)) {
|
|
37
|
-
expect("bypass").to.equal("bypass");
|
|
38
|
-
} else {
|
|
39
|
-
const lookup = new SmartySDK.usExtract.Lookup(`
|
|
40
|
-
HTML is automatically detected and, if found, ignored. You can override this behavior with API calls by manually setting the 'html' parameter to true or false.
|
|
41
|
-
|
|
42
|
-
For input with <b>HTML code</code> like this, addresses will be scraped from outside the tags. The HTML should be properly formatted, valid HTML.<br><br>
|
|
43
|
-
|
|
44
|
-
7584<span class='street-name'>Big Canyon</span> Anaheim Hills, CA <span class='zip-code'>92808</span><br><br>
|
|
45
|
-
|
|
46
|
-
You can force HTML mode if auto-detect doesn't work properly.
|
|
47
|
-
`);
|
|
48
|
-
|
|
49
|
-
const result = await usExtractClient.send(lookup);
|
|
50
|
-
|
|
51
|
-
expect(result.result.meta.addressCount).to.equal(1);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it("Check addresses with line breaks", async () => {
|
|
56
|
-
if (!(authId && authToken)) {
|
|
57
|
-
expect("bypass").to.equal("bypass");
|
|
58
|
-
} else {
|
|
59
|
-
const lookup = new SmartySDK.usExtract.Lookup(`
|
|
60
|
-
This address is valid:
|
|
61
|
-
|
|
62
|
-
1109 Ninth 85007
|
|
63
|
-
|
|
64
|
-
but this one is not:
|
|
65
|
-
|
|
66
|
-
3777 Las Vegas Blvd
|
|
67
|
-
Las Vegas, Nevada
|
|
68
|
-
|
|
69
|
-
However, this nearby location is valid, despite the poor spelling:
|
|
70
|
-
|
|
71
|
-
3785 Las Vegs Av.
|
|
72
|
-
Los Vegas, Nevada
|
|
73
|
-
`);
|
|
74
|
-
|
|
75
|
-
lookup.addressesHaveLineBreaks = true;
|
|
76
|
-
|
|
77
|
-
const result = await usExtractClient.send(lookup);
|
|
78
|
-
|
|
79
|
-
expect(result.result.meta.addressCount).to.equal(3);
|
|
80
|
-
expect(result.result.meta.verifiedCount).to.equal(2);
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it("Check addresses needing aggressive mode", async () => {
|
|
85
|
-
if (!(authId && authToken)) {
|
|
86
|
-
expect("bypass").to.equal("bypass");
|
|
87
|
-
} else {
|
|
88
|
-
const lookup = new SmartySDK.usExtract.Lookup(`
|
|
89
|
-
With aggressive mode on, popular US cities may be matched if no state or ZIP code can be found.
|
|
90
|
-
|
|
91
|
-
This means addresses like 5455 North 250 West, Provo, can be found even though it doesn't have anything looking like a state or ZIP code following it.
|
|
92
|
-
`);
|
|
93
|
-
|
|
94
|
-
lookup.aggressive = true;
|
|
95
|
-
|
|
96
|
-
const result = await usExtractClient.send(lookup);
|
|
97
|
-
|
|
98
|
-
expect(result.result.meta.addressCount).to.equal(1);
|
|
99
|
-
expect(result.result.meta.verifiedCount).to.equal(1);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
it("Check addresses in URLs", async () => {
|
|
104
|
-
if (!(authId && authToken)) {
|
|
105
|
-
expect("bypass").to.equal("bypass");
|
|
106
|
-
} else {
|
|
107
|
-
const lookup = new SmartySDK.usExtract.Lookup(`
|
|
108
|
-
Smarty can handle addresses in URLs, as long as there are no spaces in them or they are surrounded by quotes.
|
|
109
|
-
|
|
110
|
-
Address in one parameter: https://maps.google.com/?q=1+Rosedale+St+Baltimore+MD&ie=UTF8
|
|
111
|
-
or,
|
|
112
|
-
same URL with spaces surrounded by quotes: "https://maps.google.com/?q=1 Rosedale St Baltimore MD&ie=UTF8"
|
|
113
|
-
...
|
|
114
|
-
|
|
115
|
-
Address across multiple parameters: https://example.com/?street=4004%20Grant%20St%20&state=WA&zipcode=98660&city=Vancouver
|
|
116
|
-
We can find them either way.
|
|
117
|
-
`);
|
|
118
|
-
|
|
119
|
-
const result = await usExtractClient.send(lookup);
|
|
120
|
-
|
|
121
|
-
expect(result.result.meta.addressCount).to.equal(3);
|
|
122
|
-
expect(result.result.meta.verifiedCount).to.equal(3);
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it("Check address with unicode character", async () => {
|
|
127
|
-
if (!(authId && authToken)) {
|
|
128
|
-
expect("bypass").to.equal("bypass");
|
|
129
|
-
} else {
|
|
130
|
-
const lookup = new SmartySDK.usExtract.Lookup(`
|
|
131
|
-
This address has a Unicode character in it (the special í in María): 123 María Lane Tempe, AZ, 85284
|
|
132
|
-
|
|
133
|
-
Addresses with Unicode can still be found and verified.
|
|
134
|
-
`);
|
|
135
|
-
|
|
136
|
-
const result = await usExtractClient.send(lookup);
|
|
137
|
-
|
|
138
|
-
expect(result.result.meta.addressCount).to.equal(1);
|
|
139
|
-
expect(result.result.meta.verifiedCount).to.equal(1);
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
it("Check more addresses needing aggressive mode", async () => {
|
|
144
|
-
if (!(authId && authToken)) {
|
|
145
|
-
expect("bypass").to.equal("bypass");
|
|
146
|
-
} else {
|
|
147
|
-
const lookup = new SmartySDK.usExtract.Lookup(`
|
|
148
|
-
Try this one with and without aggressive mode. The '10379' looks like a ZIP code but is actually a primary number:
|
|
149
|
-
|
|
150
|
-
8465 Park Meadows Center Drive
|
|
151
|
-
Lone Tree, CO
|
|
152
|
-
303-799-3400
|
|
153
|
-
|
|
154
|
-
10379 South State Street
|
|
155
|
-
Sandy, UT 84070
|
|
156
|
-
801-432-5100
|
|
157
|
-
|
|
158
|
-
This input has two addresses and only one is found without aggressive mode.
|
|
159
|
-
`);
|
|
160
|
-
|
|
161
|
-
const result = await usExtractClient.send(lookup);
|
|
162
|
-
|
|
163
|
-
expect(result.result.meta.addressCount).to.equal(1);
|
|
164
|
-
expect(result.result.meta.verifiedCount).to.equal(1);
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
});
|
package/tests/test_HttpSender.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
const chai = require("chai");
|
|
2
|
-
const expect = chai.expect;
|
|
3
|
-
const Request = require("../src/Request");
|
|
4
|
-
const HttpSender = require("../src/HttpSender");
|
|
5
|
-
const {buildSmartyResponse} = require("../src/util/buildSmartyResponse");
|
|
6
|
-
|
|
7
|
-
describe ("An Axios implementation of a HTTP sender", function () {
|
|
8
|
-
it("adds a data payload to the HTTP request config.", function () {
|
|
9
|
-
let expectedPayload = "test payload";
|
|
10
|
-
let request = new Request(expectedPayload);
|
|
11
|
-
let sender = new HttpSender();
|
|
12
|
-
let requestConfig = sender.buildRequestConfig(request);
|
|
13
|
-
|
|
14
|
-
expect(requestConfig.hasOwnProperty("data")).to.equal(true);
|
|
15
|
-
expect(requestConfig.data).to.equal(expectedPayload);
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
it ("adds a POST method to the HTTP request config when appropriate.", function () {
|
|
19
|
-
let request = new Request("test payload");
|
|
20
|
-
let sender = new HttpSender();
|
|
21
|
-
let requestConfig = sender.buildRequestConfig(request);
|
|
22
|
-
|
|
23
|
-
expect(requestConfig.hasOwnProperty("method")).to.equal(true);
|
|
24
|
-
expect(requestConfig.method).to.equal("POST");
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it ("adds a GET method to the HTTP request config when appropriate.", function () {
|
|
28
|
-
let request = new Request();
|
|
29
|
-
let sender = new HttpSender();
|
|
30
|
-
let requestConfig = sender.buildRequestConfig(request);
|
|
31
|
-
|
|
32
|
-
expect(requestConfig.hasOwnProperty("method")).to.equal(true);
|
|
33
|
-
expect(requestConfig.method).to.equal("GET");
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it ("add a timeout to the HTTP request config.", function () {
|
|
37
|
-
let request = new Request("test payload");
|
|
38
|
-
let sender = new HttpSender();
|
|
39
|
-
let requestConfig = sender.buildRequestConfig(request);
|
|
40
|
-
|
|
41
|
-
let customTimeoutSender = new HttpSender(5);
|
|
42
|
-
let customTimeoutRequestConfig = customTimeoutSender.buildRequestConfig(request);
|
|
43
|
-
|
|
44
|
-
expect(requestConfig.hasOwnProperty("timeout")).to.equal(true);
|
|
45
|
-
expect(requestConfig.timeout).to.equal(10000);
|
|
46
|
-
|
|
47
|
-
expect(customTimeoutRequestConfig.timeout).to.equal(5);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it ("adds parameters to the HTTP request config.", function () {
|
|
51
|
-
let request = new Request("");
|
|
52
|
-
let sender = new HttpSender();
|
|
53
|
-
request.parameters.test = "1";
|
|
54
|
-
let requestConfig = sender.buildRequestConfig(request);
|
|
55
|
-
|
|
56
|
-
expect(requestConfig.hasOwnProperty("params")).to.equal(true);
|
|
57
|
-
expect(requestConfig.params).to.deep.equal(request.parameters);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it ("adds headers to the HTTP request config.", function () {
|
|
61
|
-
let request = new Request("");
|
|
62
|
-
let sender = new HttpSender();
|
|
63
|
-
let requestConfig = sender.buildRequestConfig(request);
|
|
64
|
-
let version = require("../package.json").version;
|
|
65
|
-
|
|
66
|
-
expect(requestConfig.hasOwnProperty("headers")).to.equal(true);
|
|
67
|
-
expect(requestConfig.headers["Content-Type"]).to.equal("application/json; charset=utf-8");
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
it ("has a response with the right status code.", function () {
|
|
71
|
-
let sender = new HttpSender();
|
|
72
|
-
let mockResponse = {
|
|
73
|
-
status: 200
|
|
74
|
-
};
|
|
75
|
-
let smartyResponse = buildSmartyResponse(mockResponse);
|
|
76
|
-
|
|
77
|
-
expect(smartyResponse.hasOwnProperty("statusCode")).to.equal(true);
|
|
78
|
-
expect(smartyResponse.statusCode).to.equal(200);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
it ("has a response with a payload.", function () {
|
|
82
|
-
let sender = new HttpSender();
|
|
83
|
-
let mockData = [1, 2, 3];
|
|
84
|
-
let mockResponse = {
|
|
85
|
-
status: 200,
|
|
86
|
-
data: mockData
|
|
87
|
-
};
|
|
88
|
-
let smartyResponse = buildSmartyResponse(mockResponse);
|
|
89
|
-
|
|
90
|
-
expect(smartyResponse.hasOwnProperty("payload")).to.equal(true);
|
|
91
|
-
expect(smartyResponse.payload).to.equal(mockData);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
const chai = require("chai");
|
|
2
|
-
const expect = chai.expect;
|
|
3
|
-
const LicenseSender = require("../src/LicenseSender");
|
|
4
|
-
const Request = require("../src/Request");
|
|
5
|
-
|
|
6
|
-
describe("A license sender", function () {
|
|
7
|
-
let innerSender;
|
|
8
|
-
let request;
|
|
9
|
-
let licenses;
|
|
10
|
-
let licenseSender;
|
|
11
|
-
|
|
12
|
-
beforeEach(() => {
|
|
13
|
-
innerSender = {
|
|
14
|
-
send: () => true
|
|
15
|
-
};
|
|
16
|
-
request = new Request();
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
it("appends licenses to parameters.", function () {
|
|
20
|
-
licenses = ["0", "1", "2"];
|
|
21
|
-
licenseSender = new LicenseSender(innerSender, licenses);
|
|
22
|
-
licenseSender.send(request);
|
|
23
|
-
|
|
24
|
-
expect(request.parameters).contains({"license": "0,1,2"});
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it("doesn't append license to query if array is empty.", function () {
|
|
28
|
-
licenses = [];
|
|
29
|
-
licenseSender = new LicenseSender(innerSender, licenses);
|
|
30
|
-
licenseSender.send(request);
|
|
31
|
-
|
|
32
|
-
expect(request.parameters).to.not.have.property("license");
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("returns a promise.", function () {
|
|
36
|
-
licenses = [];
|
|
37
|
-
licenseSender = new LicenseSender(innerSender, licenses);
|
|
38
|
-
expect(licenseSender.send(request) instanceof Promise).to.equal(true);
|
|
39
|
-
});
|
|
40
|
-
});
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
const chai = require("chai");
|
|
2
|
-
const expect = chai.expect;
|
|
3
|
-
const RetrySender = require("../src/RetrySender");
|
|
4
|
-
const {MockSenderWithStatusCodesAndHeaders} = require("./fixtures/mock_senders");
|
|
5
|
-
const Request = require("../src/Request.js");
|
|
6
|
-
const MockSleeper = require("./fixtures/MockSleeper.js");
|
|
7
|
-
|
|
8
|
-
async function sendWithRetry(retries, inner, sleeper) {
|
|
9
|
-
const request = new Request();
|
|
10
|
-
const sender = new RetrySender(retries, inner, sleeper);
|
|
11
|
-
return await sender.send(request);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
describe ("Retry Sender tests", function () {
|
|
15
|
-
it("test success does not retry", async function () {
|
|
16
|
-
let inner = new MockSenderWithStatusCodesAndHeaders(["200"]);
|
|
17
|
-
await sendWithRetry(5, inner, new MockSleeper());
|
|
18
|
-
|
|
19
|
-
expect(inner.currentStatusCodeIndex).to.equal(1);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("test client error does not retry", async function () {
|
|
23
|
-
let inner = new MockSenderWithStatusCodesAndHeaders(["422"]);
|
|
24
|
-
await sendWithRetry(5, inner, new MockSleeper());
|
|
25
|
-
|
|
26
|
-
expect(inner.currentStatusCodeIndex).to.equal(1);
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it("test will retry until success", async function () {
|
|
30
|
-
let inner = new MockSenderWithStatusCodesAndHeaders(["500", "500", "500", "200", "500"]);
|
|
31
|
-
await sendWithRetry(10, inner, new MockSleeper());
|
|
32
|
-
|
|
33
|
-
expect(inner.currentStatusCodeIndex).to.equal(4);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it("test return response if retry limit exceeded", async function () {
|
|
37
|
-
let inner = new MockSenderWithStatusCodesAndHeaders(["500", "500", "500", "500", "500"]);
|
|
38
|
-
const sleeper = new MockSleeper();
|
|
39
|
-
const response = await sendWithRetry(4, inner, sleeper);
|
|
40
|
-
|
|
41
|
-
expect(response);
|
|
42
|
-
expect(inner.currentStatusCodeIndex).to.equal(5);
|
|
43
|
-
expect(response.statusCode).to.equal("500");
|
|
44
|
-
expect(sleeper.sleepDurations).to.deep.equal([0, 1, 2, 3]);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it("test backoff does not exceed max", async function () {
|
|
48
|
-
let inner = new MockSenderWithStatusCodesAndHeaders(["500", "500", "500", "500", "500", "500", "500", "500", "500", "500", "500", "500", "500", "200"]);
|
|
49
|
-
const sleeper = new MockSleeper();
|
|
50
|
-
|
|
51
|
-
await sendWithRetry(20, inner, sleeper);
|
|
52
|
-
|
|
53
|
-
expect(sleeper.sleepDurations).to.deep.equal([0,1,2,3,4,5,6,7,8,9,10,10,10]);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it("test empty status does not retry", async function () {
|
|
57
|
-
let inner = new MockSenderWithStatusCodesAndHeaders([]);
|
|
58
|
-
await sendWithRetry(5, inner, new MockSleeper());
|
|
59
|
-
|
|
60
|
-
expect(inner.currentStatusCodeIndex).to.equal(1);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
it("test sleep on rate limit", async function () {
|
|
64
|
-
let inner = new MockSenderWithStatusCodesAndHeaders(["429", "200"]);
|
|
65
|
-
const sleeper = new MockSleeper();
|
|
66
|
-
|
|
67
|
-
await sendWithRetry(5, inner, sleeper);
|
|
68
|
-
|
|
69
|
-
expect(sleeper.sleepDurations).to.deep.equal([10]);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it("test rate limit error return", async function () {
|
|
73
|
-
let inner = new MockSenderWithStatusCodesAndHeaders(["429"], {"Retry-After": 7});
|
|
74
|
-
const sleeper = new MockSleeper();
|
|
75
|
-
|
|
76
|
-
await sendWithRetry(10, inner, sleeper);
|
|
77
|
-
|
|
78
|
-
expect(sleeper.sleepDurations).to.deep.equal([7]);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
it("test retry after invalid value", async function () {
|
|
82
|
-
let inner = new MockSenderWithStatusCodesAndHeaders(["429"], {"Retry-After": "a"});
|
|
83
|
-
const sleeper = new MockSleeper();
|
|
84
|
-
|
|
85
|
-
await sendWithRetry(10, inner, sleeper);
|
|
86
|
-
|
|
87
|
-
expect(sleeper.sleepDurations).to.deep.equal([10]);
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
it("test retry error", async function () {
|
|
91
|
-
let inner = new MockSenderWithStatusCodesAndHeaders(["429"], undefined, "Big Bad");
|
|
92
|
-
const sleeper = new MockSleeper();
|
|
93
|
-
|
|
94
|
-
const response = await sendWithRetry(10, inner, sleeper);
|
|
95
|
-
|
|
96
|
-
expect(response.error).to.equal("Big Bad");
|
|
97
|
-
});
|
|
98
|
-
});
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
const chai = require("chai");
|
|
2
|
-
const expect = chai.expect;
|
|
3
|
-
const Request = require("../src/Request");
|
|
4
|
-
const SigningSender = require("../src/SigningSender");
|
|
5
|
-
const StaticCredentials = require("../src/StaticCredentials");
|
|
6
|
-
const SharedCredentials = require("../src/SharedCredentials");
|
|
7
|
-
const Errors = require("../src/Errors");
|
|
8
|
-
|
|
9
|
-
describe("A signing sender", function () {
|
|
10
|
-
let mockAuthId = "testId";
|
|
11
|
-
let mockAuthToken = "testToken";
|
|
12
|
-
let mockHostName = "testHostName";
|
|
13
|
-
let mockSender = {
|
|
14
|
-
send: request => new Promise()
|
|
15
|
-
};
|
|
16
|
-
let request;
|
|
17
|
-
|
|
18
|
-
beforeEach(function () {
|
|
19
|
-
request = new Request();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("signs a request with static credentials.", function () {
|
|
23
|
-
let staticCredentials = new StaticCredentials(mockAuthId, mockAuthToken);
|
|
24
|
-
let signingSender = new SigningSender(mockSender, staticCredentials);
|
|
25
|
-
|
|
26
|
-
signingSender.send(request);
|
|
27
|
-
|
|
28
|
-
expect(request.parameters.hasOwnProperty("auth-id")).to.equal(true);
|
|
29
|
-
expect(request.parameters["auth-id"]).to.equal(mockAuthId);
|
|
30
|
-
expect(request.parameters.hasOwnProperty("auth-token")).to.equal(true);
|
|
31
|
-
expect(request.parameters["auth-token"]).to.equal(mockAuthToken);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it("signs a request with shared credentials.", function () {
|
|
35
|
-
let sharedCredentials = new SharedCredentials(mockAuthId, mockHostName);
|
|
36
|
-
let signingSender = new SigningSender(mockSender, sharedCredentials);
|
|
37
|
-
|
|
38
|
-
signingSender.send(request);
|
|
39
|
-
|
|
40
|
-
expect(request.parameters.hasOwnProperty("key")).to.equal(true);
|
|
41
|
-
expect(request.parameters["key"]).to.equal(mockAuthId);
|
|
42
|
-
expect(request.headers.hasOwnProperty("Referer")).to.equal(true);
|
|
43
|
-
expect(request.headers["Referer"]).to.equal("https://" + mockHostName);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it("errors if signing a POST request with shared credentials.", function () {
|
|
47
|
-
let sharedCredentials = new SharedCredentials(mockAuthId, mockHostName);
|
|
48
|
-
let signingSender = new SigningSender(mockSender, sharedCredentials);
|
|
49
|
-
let mockRequestPayload = {
|
|
50
|
-
foo: "bar",
|
|
51
|
-
};
|
|
52
|
-
request.payload = mockRequestPayload;
|
|
53
|
-
|
|
54
|
-
expect(() => signingSender.send(request)).to.throw(Errors.UnprocessableEntityError);
|
|
55
|
-
});
|
|
56
|
-
});
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
const chai = require("chai");
|
|
2
|
-
const expect = chai.expect;
|
|
3
|
-
const StatusCodeSender = require("../src/StatusCodeSender");
|
|
4
|
-
const Response = require("../src/Response");
|
|
5
|
-
const Request = require("../src/Request");
|
|
6
|
-
const errors = require("../src/Errors");
|
|
7
|
-
|
|
8
|
-
describe("A status code sender", function () {
|
|
9
|
-
it("doesn't attach an error on a 200.", function () {
|
|
10
|
-
let mockSender = {
|
|
11
|
-
send: () => {
|
|
12
|
-
return new Promise((resolve, reject) => {
|
|
13
|
-
resolve(new Response(200));
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
let statusCodeSender = new StatusCodeSender(mockSender);
|
|
19
|
-
let request = new Request();
|
|
20
|
-
|
|
21
|
-
return statusCodeSender.send(request).then(response => {
|
|
22
|
-
expect(response.error === undefined).to.equal(true);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it("gives a custom message for 400", function () {
|
|
27
|
-
const payload = {
|
|
28
|
-
errors: [
|
|
29
|
-
{message: "custom message"}
|
|
30
|
-
]
|
|
31
|
-
};
|
|
32
|
-
return expectedErrorWithPayloadMessage(400, payload);
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
it("returns an error message if payload is undefined", function () {
|
|
36
|
-
return expectedDefaultError()
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
it("gives an Internal Server Error on a 500.", function () {
|
|
40
|
-
return expectedErrorForStatusCode(errors.InternalServerError, 500);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("gives an Service Unavailable error on a 503.", function () {
|
|
44
|
-
return expectedErrorForStatusCode(errors.ServiceUnavailableError, 503);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it("gives an Gateway Timeout error on a 504.", function () {
|
|
48
|
-
return expectedErrorForStatusCode(errors.GatewayTimeoutError, 504);
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
const expectedErrorWithPayloadMessage = (errorCode, payload) => {
|
|
53
|
-
let mockSender = generateMockSender(errorCode, payload);
|
|
54
|
-
let statusCodeSender = new StatusCodeSender(mockSender);
|
|
55
|
-
let request = new Request();
|
|
56
|
-
|
|
57
|
-
return statusCodeSender.send(request).then(() => {
|
|
58
|
-
}, error => {
|
|
59
|
-
expect(error.error).to.be.an.instanceOf(errors.DefaultError);
|
|
60
|
-
expect(error.error.message).to.be.equal(payload.errors[0].message);
|
|
61
|
-
})
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const expectedDefaultError = () => {
|
|
65
|
-
let mockSender = generateMockSender(400);
|
|
66
|
-
let statusCodeSender = new StatusCodeSender(mockSender);
|
|
67
|
-
let request = new Request();
|
|
68
|
-
|
|
69
|
-
return statusCodeSender.send(request).then(() => {
|
|
70
|
-
}, error => {
|
|
71
|
-
expect(error.error).to.be.an.instanceOf(errors.DefaultError);
|
|
72
|
-
expect(error.error.message).to.be.equal("unexpected error");
|
|
73
|
-
})
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
function expectedErrorForStatusCode(expectedError, errorCode) {
|
|
77
|
-
let mockSender = generateMockSender(errorCode);
|
|
78
|
-
let statusCodeSender = new StatusCodeSender(mockSender);
|
|
79
|
-
let request = new Request();
|
|
80
|
-
|
|
81
|
-
return statusCodeSender.send(request).then(() => {
|
|
82
|
-
}, error => {
|
|
83
|
-
expect(error.error).to.be.an.instanceOf(expectedError);
|
|
84
|
-
})
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function generateMockSender(errorCode, payload) {
|
|
88
|
-
return {
|
|
89
|
-
send: () => {
|
|
90
|
-
return new Promise((resolve, reject) => {
|
|
91
|
-
reject(new Response(errorCode, payload))
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
}
|