delectusnon 1.0.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/.prettierignore +2 -0
- package/.travis.yml +33 -0
- package/.vscode/launch.json +24 -0
- package/.vscode/settings.json +3 -0
- package/demos/ago-node-cli/README.md +29 -0
- package/demos/ago-node-cli/ago.js +32 -0
- package/demos/ago-node-cli/index.js +11 -0
- package/demos/ago-node-cli/lib/item-export-command.js +48 -0
- package/demos/ago-node-cli/lib/item-search-command.js +35 -0
- package/demos/ago-node-cli/package-lock.json +172 -0
- package/demos/ago-node-cli/package.json +30 -0
- package/demos/attachments/README.md +5 -0
- package/demos/attachments/index.html +164 -0
- package/demos/attachments/package-lock.json +182 -0
- package/demos/attachments/package.json +18 -0
- package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
- package/demos/batch-geocoder-node/README.md +15 -0
- package/demos/batch-geocoder-node/batch-geocode.js +118 -0
- package/demos/batch-geocoder-node/config-template.js +18 -0
- package/demos/batch-geocoder-node/package-lock.json +116 -0
- package/demos/batch-geocoder-node/package.json +39 -0
- package/demos/express/README.md +10 -0
- package/demos/express/config.json.template +3 -0
- package/demos/express/package-lock.json +473 -0
- package/demos/express/package.json +18 -0
- package/demos/express/server.js +28 -0
- package/demos/feature-service-browser/README.md +6 -0
- package/demos/feature-service-browser/index.html +122 -0
- package/demos/feature-service-browser/package-lock.json +182 -0
- package/demos/feature-service-browser/package.json +18 -0
- package/demos/geocoder-browser/README.md +10 -0
- package/demos/geocoder-browser/config.js.template +1 -0
- package/demos/geocoder-browser/index.html +131 -0
- package/demos/geocoder-browser/package-lock.json +182 -0
- package/demos/geocoder-browser/package.json +19 -0
- package/demos/geocoder-browser/post-sign-in.html +25 -0
- package/demos/jsapi-integration/README.md +8 -0
- package/demos/jsapi-integration/config.js +6 -0
- package/demos/jsapi-integration/index.html +79 -0
- package/demos/jsapi-integration/package-lock.json +184 -0
- package/demos/jsapi-integration/package.json +19 -0
- package/demos/oauth2-browser/README.md +12 -0
- package/demos/oauth2-browser/authenticate.html +32 -0
- package/demos/oauth2-browser/config.js.template +6 -0
- package/demos/oauth2-browser/index.html +202 -0
- package/demos/oauth2-browser/logo.svg +4 -0
- package/demos/oauth2-browser/package-lock.json +163 -0
- package/demos/oauth2-browser/package.json +18 -0
- package/demos/oauth2-browser/style.css +36 -0
- package/demos/oauth2-browser-retry/README.md +25 -0
- package/demos/oauth2-browser-retry/authenticate.html +21 -0
- package/demos/oauth2-browser-retry/index.html +116 -0
- package/demos/oauth2-browser-retry/logo.svg +4 -0
- package/demos/vue/.env.example +11 -0
- package/demos/vue/.eslintrc.js +17 -0
- package/demos/vue/.postcssrc.js +5 -0
- package/demos/vue/README.md +17 -0
- package/demos/vue/babel.config.js +3 -0
- package/demos/vue/package-lock.json +11323 -0
- package/demos/vue/package.json +33 -0
- package/demos/vue/public/favicon.ico +0 -0
- package/demos/vue/public/index.html +24 -0
- package/demos/vue/src/assets/logo.svg +29 -0
- package/demos/vue/src/components/App.vue +308 -0
- package/demos/vue/src/components/Authenticate.vue +65 -0
- package/demos/vue/src/components/Loader.vue +230 -0
- package/demos/vue/src/main.js +92 -0
- package/docs/FAQ.md +28 -0
- package/docs/HISTORY.md +62 -0
- package/docs/acetate.config.js +223 -0
- package/docs/build-typedoc.js +301 -0
- package/docs/src/_layout.html +82 -0
- package/docs/src/api/_declaration.html +496 -0
- package/docs/src/api/_layout.html +127 -0
- package/docs/src/api/_package.html +13 -0
- package/docs/src/api/index.html +23 -0
- package/docs/src/guides/_layout.html +24 -0
- package/docs/src/guides/amd-requirejs-dojo.md +40 -0
- package/docs/src/guides/babel-and-rollup.md +30 -0
- package/docs/src/guides/babel-and-webpack.md +30 -0
- package/docs/src/guides/browser-authentication.md +31 -0
- package/docs/src/guides/browserify.md +9 -0
- package/docs/src/guides/cli-authentication.md +9 -0
- package/docs/src/guides/client-server-authentication.md +9 -0
- package/docs/src/guides/from-a-cdn.md +36 -0
- package/docs/src/guides/index.md +52 -0
- package/docs/src/guides/node.md +70 -0
- package/docs/src/guides/package-overview.md +8 -0
- package/docs/src/guides/server-authentication.md +9 -0
- package/docs/src/guides/typescript-and-webpack.md +9 -0
- package/docs/src/img/icons.png +0 -0
- package/docs/src/img/icons@2x.png +0 -0
- package/docs/src/index.html +12 -0
- package/docs/src/js/api-search.js +112 -0
- package/docs/src/js/nav-toggle.js +41 -0
- package/docs/src/sass/_highlight.scss +96 -0
- package/docs/src/sass/_icons.scss +157 -0
- package/docs/src/sass/style.scss +169 -0
- package/jasmine.json +7 -0
- package/karma.conf.js +100 -0
- package/lerna.json +8 -0
- package/notes/README.md +88 -0
- package/package.json +88 -0
- package/packages/arcgis-rest-auth/README.md +64 -0
- package/packages/arcgis-rest-auth/package-lock.json +11 -0
- package/packages/arcgis-rest-auth/package.json +51 -0
- package/packages/arcgis-rest-auth/src/ApplicationSession.ts +109 -0
- package/packages/arcgis-rest-auth/src/UserSession.ts +873 -0
- package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +24 -0
- package/packages/arcgis-rest-auth/src/fetch-token.ts +52 -0
- package/packages/arcgis-rest-auth/src/generate-token.ts +39 -0
- package/packages/arcgis-rest-auth/src/index.ts +8 -0
- package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
- package/packages/arcgis-rest-auth/test/UserSession.test.ts +995 -0
- package/packages/arcgis-rest-auth/test/fetchToken.test.ts +112 -0
- package/packages/arcgis-rest-auth/test/generateToken.test.ts +130 -0
- package/packages/arcgis-rest-auth/test/utils.ts +14 -0
- package/packages/arcgis-rest-auth/tsconfig.json +6 -0
- package/packages/arcgis-rest-common-types/README.md +61 -0
- package/packages/arcgis-rest-common-types/package.json +38 -0
- package/packages/arcgis-rest-common-types/src/group.ts +54 -0
- package/packages/arcgis-rest-common-types/src/index.ts +467 -0
- package/packages/arcgis-rest-common-types/src/item.ts +45 -0
- package/packages/arcgis-rest-common-types/src/webmap.ts +1232 -0
- package/packages/arcgis-rest-common-types/tsconfig.json +11 -0
- package/packages/arcgis-rest-feature-service/README.md +70 -0
- package/packages/arcgis-rest-feature-service/package-lock.json +11 -0
- package/packages/arcgis-rest-feature-service/package.json +50 -0
- package/packages/arcgis-rest-feature-service/src/add.ts +81 -0
- package/packages/arcgis-rest-feature-service/src/addAttachment.ts +65 -0
- package/packages/arcgis-rest-feature-service/src/delete.ts +85 -0
- package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +68 -0
- package/packages/arcgis-rest-feature-service/src/getAttachments.ts +64 -0
- package/packages/arcgis-rest-feature-service/src/helpers.ts +80 -0
- package/packages/arcgis-rest-feature-service/src/index.ts +12 -0
- package/packages/arcgis-rest-feature-service/src/query.ts +172 -0
- package/packages/arcgis-rest-feature-service/src/queryRelated.ts +91 -0
- package/packages/arcgis-rest-feature-service/src/update.ts +81 -0
- package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +74 -0
- package/packages/arcgis-rest-feature-service/test/attachments.test.ts +203 -0
- package/packages/arcgis-rest-feature-service/test/features.test.ts +252 -0
- package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +279 -0
- package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
- package/packages/arcgis-rest-feature-service/tsconfig.json +6 -0
- package/packages/arcgis-rest-feature-service-admin/README.md +66 -0
- package/packages/arcgis-rest-feature-service-admin/package-lock.json +11 -0
- package/packages/arcgis-rest-feature-service-admin/package.json +53 -0
- package/packages/arcgis-rest-feature-service-admin/src/addTo.ts +70 -0
- package/packages/arcgis-rest-feature-service-admin/src/create.ts +195 -0
- package/packages/arcgis-rest-feature-service-admin/src/index.ts +2 -0
- package/packages/arcgis-rest-feature-service-admin/test/addTo.test.ts +310 -0
- package/packages/arcgis-rest-feature-service-admin/test/create.test.ts +412 -0
- package/packages/arcgis-rest-feature-service-admin/test/mocks/move.ts +14 -0
- package/packages/arcgis-rest-feature-service-admin/test/mocks/service.ts +72 -0
- package/packages/arcgis-rest-feature-service-admin/tsconfig.json +6 -0
- package/packages/arcgis-rest-geocoder/README.md +79 -0
- package/packages/arcgis-rest-geocoder/package-lock.json +11 -0
- package/packages/arcgis-rest-geocoder/package.json +52 -0
- package/packages/arcgis-rest-geocoder/src/bulk.ts +102 -0
- package/packages/arcgis-rest-geocoder/src/geocode.ts +117 -0
- package/packages/arcgis-rest-geocoder/src/helpers.ts +79 -0
- package/packages/arcgis-rest-geocoder/src/index.ts +8 -0
- package/packages/arcgis-rest-geocoder/src/reverse.ts +84 -0
- package/packages/arcgis-rest-geocoder/src/suggest.ts +72 -0
- package/packages/arcgis-rest-geocoder/test/bulk.test.ts +113 -0
- package/packages/arcgis-rest-geocoder/test/geocode.test.ts +121 -0
- package/packages/arcgis-rest-geocoder/test/helpers.test.ts +113 -0
- package/packages/arcgis-rest-geocoder/test/mocks/responses.ts +591 -0
- package/packages/arcgis-rest-geocoder/test/reverse.test.ts +126 -0
- package/packages/arcgis-rest-geocoder/test/suggest.test.ts +77 -0
- package/packages/arcgis-rest-geocoder/tsconfig.json +6 -0
- package/packages/arcgis-rest-groups/README.md +64 -0
- package/packages/arcgis-rest-groups/package-lock.json +11 -0
- package/packages/arcgis-rest-groups/package.json +52 -0
- package/packages/arcgis-rest-groups/src/create.ts +34 -0
- package/packages/arcgis-rest-groups/src/get.ts +95 -0
- package/packages/arcgis-rest-groups/src/helpers.ts +26 -0
- package/packages/arcgis-rest-groups/src/index.ts +11 -0
- package/packages/arcgis-rest-groups/src/notification.ts +77 -0
- package/packages/arcgis-rest-groups/src/protect.ts +40 -0
- package/packages/arcgis-rest-groups/src/remove.ts +23 -0
- package/packages/arcgis-rest-groups/src/search.ts +64 -0
- package/packages/arcgis-rest-groups/src/update.ts +36 -0
- package/packages/arcgis-rest-groups/test/crud.test.ts +104 -0
- package/packages/arcgis-rest-groups/test/get.test.ts +101 -0
- package/packages/arcgis-rest-groups/test/mocks/responses.ts +141 -0
- package/packages/arcgis-rest-groups/test/notification.test.ts +102 -0
- package/packages/arcgis-rest-groups/test/protect.test.ts +64 -0
- package/packages/arcgis-rest-groups/test/search.test.ts +85 -0
- package/packages/arcgis-rest-groups/tsconfig.json +6 -0
- package/packages/arcgis-rest-items/README.md +66 -0
- package/packages/arcgis-rest-items/package-lock.json +11 -0
- package/packages/arcgis-rest-items/package.json +52 -0
- package/packages/arcgis-rest-items/src/add.ts +103 -0
- package/packages/arcgis-rest-items/src/create.ts +110 -0
- package/packages/arcgis-rest-items/src/get.ts +79 -0
- package/packages/arcgis-rest-items/src/helpers.ts +147 -0
- package/packages/arcgis-rest-items/src/index.ts +11 -0
- package/packages/arcgis-rest-items/src/protect.ts +38 -0
- package/packages/arcgis-rest-items/src/remove.ts +58 -0
- package/packages/arcgis-rest-items/src/search.ts +78 -0
- package/packages/arcgis-rest-items/src/update.ts +134 -0
- package/packages/arcgis-rest-items/test/add.test.ts +256 -0
- package/packages/arcgis-rest-items/test/create.test.ts +371 -0
- package/packages/arcgis-rest-items/test/get.test.ts +181 -0
- package/packages/arcgis-rest-items/test/mocks/foo.zip +0 -0
- package/packages/arcgis-rest-items/test/mocks/item.ts +33 -0
- package/packages/arcgis-rest-items/test/mocks/resources.ts +31 -0
- package/packages/arcgis-rest-items/test/mocks/search.ts +63 -0
- package/packages/arcgis-rest-items/test/protect.test.ts +122 -0
- package/packages/arcgis-rest-items/test/remove.test.ts +161 -0
- package/packages/arcgis-rest-items/test/search.test.ts +159 -0
- package/packages/arcgis-rest-items/test/update.test.ts +450 -0
- package/packages/arcgis-rest-items/tsconfig.json +6 -0
- package/packages/arcgis-rest-request/README.md +65 -0
- package/packages/arcgis-rest-request/package-lock.json +11 -0
- package/packages/arcgis-rest-request/package.json +42 -0
- package/packages/arcgis-rest-request/src/index.ts +13 -0
- package/packages/arcgis-rest-request/src/request.ts +293 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISAuthError.ts +67 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -0
- package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
- package/packages/arcgis-rest-request/src/utils/check-for-errors.ts +65 -0
- package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +34 -0
- package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +23 -0
- package/packages/arcgis-rest-request/src/utils/get-portal-url.ts +25 -0
- package/packages/arcgis-rest-request/src/utils/get-portal.ts +45 -0
- package/packages/arcgis-rest-request/src/utils/process-params.ts +99 -0
- package/packages/arcgis-rest-request/test/mocks/errors.ts +68 -0
- package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
- package/packages/arcgis-rest-request/test/mocks/portal.ts +112 -0
- package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
- package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
- package/packages/arcgis-rest-request/test/request.test.ts +299 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +170 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
- package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
- package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +133 -0
- package/packages/arcgis-rest-request/test/utils/get-portal-url.test.ts +37 -0
- package/packages/arcgis-rest-request/test/utils/portal.test.ts +97 -0
- package/packages/arcgis-rest-request/test/utils/process-params.test.ts +193 -0
- package/packages/arcgis-rest-request/tsconfig.json +6 -0
- package/packages/arcgis-rest-sharing/README.md +67 -0
- package/packages/arcgis-rest-sharing/package-lock.json +11 -0
- package/packages/arcgis-rest-sharing/package.json +57 -0
- package/packages/arcgis-rest-sharing/src/access.ts +85 -0
- package/packages/arcgis-rest-sharing/src/group-sharing.ts +211 -0
- package/packages/arcgis-rest-sharing/src/helpers.ts +82 -0
- package/packages/arcgis-rest-sharing/src/index.ts +5 -0
- package/packages/arcgis-rest-sharing/test/access.test.ts +154 -0
- package/packages/arcgis-rest-sharing/test/group-sharing.test.ts +566 -0
- package/packages/arcgis-rest-sharing/test/helpers.test.ts +55 -0
- package/packages/arcgis-rest-sharing/test/mocks/sharing.ts +18 -0
- package/packages/arcgis-rest-sharing/tsconfig.json +6 -0
- package/packages/arcgis-rest-users/README.md +71 -0
- package/packages/arcgis-rest-users/package-lock.json +11 -0
- package/packages/arcgis-rest-users/package.json +51 -0
- package/packages/arcgis-rest-users/src/get.ts +69 -0
- package/packages/arcgis-rest-users/src/index.ts +6 -0
- package/packages/arcgis-rest-users/src/invitation.ts +166 -0
- package/packages/arcgis-rest-users/src/notification.ts +73 -0
- package/packages/arcgis-rest-users/test/get.test.ts +99 -0
- package/packages/arcgis-rest-users/test/invitation.test.ts +169 -0
- package/packages/arcgis-rest-users/test/mocks/invitation.ts +70 -0
- package/packages/arcgis-rest-users/test/mocks/notification.ts +34 -0
- package/packages/arcgis-rest-users/test/mocks/user.ts +173 -0
- package/packages/arcgis-rest-users/test/notification.test.ts +83 -0
- package/packages/arcgis-rest-users/tsconfig.json +6 -0
- package/support/changelog.js +394 -0
- package/support/deploy-doc-site.js +16 -0
- package/support/publish.sh +43 -0
- package/support/test-helpers.js +8 -0
- package/tsconfig.json +69 -0
- package/tslint.json +15 -0
- package/umd-base-profile.js +82 -0
- package/umd-production-profile.js +13 -0
@@ -0,0 +1,99 @@
|
|
1
|
+
/* Copyright (c) 2017 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
/**
|
5
|
+
* Checks parameters to see if we should use FormData to send the request
|
6
|
+
* @param params The object whose keys will be encoded.
|
7
|
+
* @return A boolean indicating if FormData will be required.
|
8
|
+
*/
|
9
|
+
export function requiresFormData(params: any) {
|
10
|
+
return Object.keys(params).some(key => {
|
11
|
+
const value = params[key];
|
12
|
+
|
13
|
+
if (!value) {
|
14
|
+
return false;
|
15
|
+
}
|
16
|
+
|
17
|
+
const type = value.constructor.name;
|
18
|
+
|
19
|
+
switch (type) {
|
20
|
+
case "Array":
|
21
|
+
return false;
|
22
|
+
case "Object":
|
23
|
+
return false;
|
24
|
+
case "Date":
|
25
|
+
return false;
|
26
|
+
case "Function":
|
27
|
+
return false;
|
28
|
+
case "Boolean":
|
29
|
+
return false;
|
30
|
+
case "String":
|
31
|
+
return false;
|
32
|
+
case "Number":
|
33
|
+
return false;
|
34
|
+
default:
|
35
|
+
return true;
|
36
|
+
}
|
37
|
+
});
|
38
|
+
}
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Converts parameters to the proper representation to send to the ArcGIS REST API.
|
42
|
+
* @param params The object whose keys will be encoded.
|
43
|
+
* @return A new object with properly encoded values.
|
44
|
+
*/
|
45
|
+
export function processParams(params: any): any {
|
46
|
+
const newParams: any = {};
|
47
|
+
|
48
|
+
Object.keys(params).forEach(key => {
|
49
|
+
const param = params[key];
|
50
|
+
if (
|
51
|
+
!param &&
|
52
|
+
param !== 0 &&
|
53
|
+
typeof param !== "boolean" &&
|
54
|
+
typeof param !== "string"
|
55
|
+
) {
|
56
|
+
return;
|
57
|
+
}
|
58
|
+
const type = param.constructor.name;
|
59
|
+
|
60
|
+
let value: any;
|
61
|
+
|
62
|
+
// properly encodes objects, arrays and dates for arcgis.com and other services.
|
63
|
+
// ported from https://github.com/Esri/esri-leaflet/blob/master/src/Request.js#L22-L30
|
64
|
+
// also see https://github.com/Esri/arcgis-rest-js/issues/18:
|
65
|
+
// null, undefined, function are excluded. If you want to send an empty key you need to send an empty string "".
|
66
|
+
switch (type) {
|
67
|
+
case "Array":
|
68
|
+
// Based on the first element of the array, classify array as an array of objects to be stringified
|
69
|
+
// or an array of non-objects to be comma-separated
|
70
|
+
value =
|
71
|
+
param[0] &&
|
72
|
+
param[0].constructor &&
|
73
|
+
param[0].constructor.name === "Object"
|
74
|
+
? JSON.stringify(param)
|
75
|
+
: param.join(",");
|
76
|
+
break;
|
77
|
+
case "Object":
|
78
|
+
value = JSON.stringify(param);
|
79
|
+
break;
|
80
|
+
case "Date":
|
81
|
+
value = param.valueOf();
|
82
|
+
break;
|
83
|
+
case "Function":
|
84
|
+
value = null;
|
85
|
+
break;
|
86
|
+
case "Boolean":
|
87
|
+
value = param + "";
|
88
|
+
break;
|
89
|
+
default:
|
90
|
+
value = param;
|
91
|
+
break;
|
92
|
+
}
|
93
|
+
if (value || value === 0 || typeof value === "string") {
|
94
|
+
newParams[key] = value;
|
95
|
+
}
|
96
|
+
});
|
97
|
+
|
98
|
+
return newParams;
|
99
|
+
}
|
@@ -0,0 +1,68 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
export const ArcGISOnlineError: any = {
|
5
|
+
error: {
|
6
|
+
code: 400,
|
7
|
+
message: "'type' and 'title' property required.",
|
8
|
+
details: []
|
9
|
+
}
|
10
|
+
};
|
11
|
+
|
12
|
+
export const ArcGISOnlineAuthError: any = {
|
13
|
+
error: {
|
14
|
+
code: 498,
|
15
|
+
message: "Invalid token.",
|
16
|
+
details: []
|
17
|
+
}
|
18
|
+
};
|
19
|
+
|
20
|
+
export const ArcGISOnlineErrorNoMessageCode: any = {
|
21
|
+
error: {
|
22
|
+
code: 403,
|
23
|
+
message:
|
24
|
+
"You do not have permissions to access this resource or perform this operation.",
|
25
|
+
details: []
|
26
|
+
}
|
27
|
+
};
|
28
|
+
|
29
|
+
export const ArcGISOnlineErrorNoCode: any = {
|
30
|
+
error: {
|
31
|
+
message:
|
32
|
+
"You do not have permissions to access this resource or perform this operation.",
|
33
|
+
details: []
|
34
|
+
}
|
35
|
+
};
|
36
|
+
|
37
|
+
export const ArcGISServerTokenRequired: any = {
|
38
|
+
error: {
|
39
|
+
code: 499,
|
40
|
+
message: "Token Required",
|
41
|
+
messageCode: "GWM_0003",
|
42
|
+
details: ["Token Required"]
|
43
|
+
}
|
44
|
+
};
|
45
|
+
|
46
|
+
export const BillingError: any = {
|
47
|
+
code: 500,
|
48
|
+
message: "Error getting subscription info",
|
49
|
+
status: "failure",
|
50
|
+
details: null as any
|
51
|
+
};
|
52
|
+
|
53
|
+
export const BillingErrorWithCode200: any = {
|
54
|
+
code: 200,
|
55
|
+
message: null,
|
56
|
+
status: "failure"
|
57
|
+
};
|
58
|
+
|
59
|
+
export const TaskErrorWithJSON: any = {
|
60
|
+
status: "failed",
|
61
|
+
statusMessage:
|
62
|
+
'{"code":400,"message":"Index was outside the bounds of the array."}'
|
63
|
+
};
|
64
|
+
|
65
|
+
export const TaskError: any = {
|
66
|
+
status: "failed",
|
67
|
+
statusMessage: "failed"
|
68
|
+
};
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
export const GeoJSONFeatureCollection: any = {
|
5
|
+
type: "FeatureCollection",
|
6
|
+
crs: {
|
7
|
+
type: "name",
|
8
|
+
properties: {
|
9
|
+
name: "EPSG:4326"
|
10
|
+
}
|
11
|
+
},
|
12
|
+
features: []
|
13
|
+
};
|
@@ -0,0 +1,112 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { IPortal } from "../../src/utils/get-portal";
|
5
|
+
|
6
|
+
export const PortalResponse: IPortal = {
|
7
|
+
access: "public",
|
8
|
+
allSSL: false,
|
9
|
+
allowedRedirectUris: [],
|
10
|
+
analysisLayersGroupQuery:
|
11
|
+
'title:"Living Atlas Analysis Layers" AND owner:esri',
|
12
|
+
authorizedCrossOriginDomains: [],
|
13
|
+
availableCredits: 9584.193,
|
14
|
+
basemapGalleryGroupQuery: "id:06d589ea1fdb47768ee3870f497333c0",
|
15
|
+
canListApps: false,
|
16
|
+
canListData: false,
|
17
|
+
canListPreProvisionedItems: false,
|
18
|
+
canProvisionDirectPurchase: false,
|
19
|
+
canSearchPublic: true,
|
20
|
+
canShareBingPublic: false,
|
21
|
+
canSharePublic: true,
|
22
|
+
canSignInArcGIS: true,
|
23
|
+
canSignInIDP: true,
|
24
|
+
colorSetsGroupQuery: 'title:"Esri Colors" AND owner:esri_en',
|
25
|
+
commentsEnabled: true,
|
26
|
+
created: 1392336986000,
|
27
|
+
creditAssignments: "enabled",
|
28
|
+
culture: "en",
|
29
|
+
customBaseUrl: "mapsdevext.arcgis.com",
|
30
|
+
databaseQuota: -1,
|
31
|
+
databaseUsage: -1,
|
32
|
+
defaultBasemap: {},
|
33
|
+
defaultExtent: {
|
34
|
+
type: "extent",
|
35
|
+
xmin: -8589300.590116454,
|
36
|
+
ymin: 4692777.971239516,
|
37
|
+
xmax: -8562027.314872108,
|
38
|
+
ymax: 4722244.554454538,
|
39
|
+
spatialReference: {
|
40
|
+
wkid: 102100
|
41
|
+
}
|
42
|
+
},
|
43
|
+
defaultUserCreditAssignment: 100,
|
44
|
+
defaultVectorBasemap: {
|
45
|
+
baseMapLayers: [],
|
46
|
+
title: "Topographic"
|
47
|
+
},
|
48
|
+
description: "We're the DC R&D Center",
|
49
|
+
eueiEnabled: false,
|
50
|
+
featuredGroups: [],
|
51
|
+
featuredGroupsId: "",
|
52
|
+
featuredItemsGroupQuery: "",
|
53
|
+
galleryTemplatesGroupQuery: 'title:"Gallery Templates" AND owner:esri_en',
|
54
|
+
hasCategorySchema: false,
|
55
|
+
helpBase: "http://docdev.arcgis.com/en/arcgis-online/",
|
56
|
+
helpMap: {},
|
57
|
+
helperServices: {},
|
58
|
+
homePageFeaturedContent: "",
|
59
|
+
homePageFeaturedContentCount: 12,
|
60
|
+
id: "LjjARY1mkhxulWPq",
|
61
|
+
isPortal: false,
|
62
|
+
layerTemplatesGroupQuery: 'title:"Esri Layer Templates" AND owner:esri_en',
|
63
|
+
livingAtlasGroupQuery: 'title:"Featured Maps And Apps" AND owner:esri',
|
64
|
+
maxTokenExpirationMinutes: -1,
|
65
|
+
metadataEditable: true,
|
66
|
+
metadataFormats: ["iso19139"],
|
67
|
+
modified: 1511894763000,
|
68
|
+
name: "Washington, DC",
|
69
|
+
notificationsEnabled: false,
|
70
|
+
portalHostname: "devext.arcgis.com",
|
71
|
+
portalMode: "multitenant",
|
72
|
+
portalName: "ArcGIS Online",
|
73
|
+
portalProperties: {},
|
74
|
+
portalThumbnail: null,
|
75
|
+
region: "WO",
|
76
|
+
rotatorPanels: [
|
77
|
+
{
|
78
|
+
id: "banner-2",
|
79
|
+
innerHTML:
|
80
|
+
"<img src='images/banner-2.jpg' style='-webkit-border-radius:0 0 10px 10px; -moz-border-radius:0 0 10px 10px; -o-border-radius:0 0 10px 10px; border-radius:0 0 10px 10px; margin-top:0; width:960px; height:180px;'/><div style='position:absolute; bottom:80px; left:80px; max-height:65px; width:660px; margin:0;'><img src='http://dc.mapsdevext.arcgis.com/sharing/rest/portals/self/resources/thumbnail.png?token=SECURITY_TOKEN' alt='Washington, DC' class='esriFloatLeading esriTrailingMargin025' style='margin-bottom:0; max-height:100px;'/><span style='position:absolute; bottom:0; margin-bottom:0; line-height:normal; font-family:HelveticaNeue,Verdana; font-weight:600; font-size:32px; color:#369;'>Washington, DC</span></div>"
|
81
|
+
}
|
82
|
+
],
|
83
|
+
showHomePageDescription: false,
|
84
|
+
staticImagesUrl: "http://static.arcgis.com/images",
|
85
|
+
storageQuota: 2199023255552,
|
86
|
+
storageUsage: 17622609523,
|
87
|
+
stylesGroupQuery: 'title:"Esri Styles" AND owner:esri_en',
|
88
|
+
supportsHostedServices: true,
|
89
|
+
symbolSetsGroupQuery: 'title:"Esri Symbols" AND owner:esri_en',
|
90
|
+
templatesGroupQuery: "id:f233da8d297e4ff9ae992c21f8f4010f",
|
91
|
+
thumbnail: "thumbnail.png",
|
92
|
+
units: "english",
|
93
|
+
updateUserProfileDisabled: false,
|
94
|
+
urlKey: "dc",
|
95
|
+
useStandardizedQuery: true,
|
96
|
+
useVectorBasemaps: false,
|
97
|
+
vectorBasemapGalleryGroupQuery:
|
98
|
+
'title:"ArcGIS Online Vector Basemaps" AND owner:esri_en',
|
99
|
+
subscriptionInfo: {},
|
100
|
+
isHubEnabled: false,
|
101
|
+
ipCntryCode: "US",
|
102
|
+
httpPort: 80,
|
103
|
+
httpsPort: 443,
|
104
|
+
supportsOAuth: true,
|
105
|
+
currentVersion: "5.4",
|
106
|
+
allowedOrigins: [],
|
107
|
+
mfaAdmins: [],
|
108
|
+
contacts: ["dcadmin"],
|
109
|
+
mfaEnabled: false,
|
110
|
+
user: {},
|
111
|
+
appInfo: {}
|
112
|
+
};
|
@@ -0,0 +1,41 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
export const SharingRestInfo = {
|
5
|
+
owningSystemUrl: "http://www.arcgis.com",
|
6
|
+
authInfo: {
|
7
|
+
tokenServicesUrl: "https://www.arcgis.com/sharing/rest/generateToken",
|
8
|
+
isTokenBasedSecurity: true
|
9
|
+
}
|
10
|
+
};
|
11
|
+
|
12
|
+
export const SharingRestInfoHTML = `<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
<html>
|
20
|
+
<head>
|
21
|
+
<title>ArcGIS Portal Directory</title>
|
22
|
+
<link href="/sharing/rest/files/gw.css" rel="stylesheet" type="text/css"/>
|
23
|
+
</head>
|
24
|
+
<body>
|
25
|
+
<br/>
|
26
|
+
<div class="gwDiv">
|
27
|
+
<table class="navTable" width="100%"><tr><td class="breadcrumbs">ArcGIS Portal Directory</td></tr></table>
|
28
|
+
<tr valign="top">
|
29
|
+
<br/><br/>
|
30
|
+
<b>
|
31
|
+
<a href="http://resources.arcgis.com/en/help/arcgis-rest-api/" >API Reference</a>
|
32
|
+
</b>
|
33
|
+
|
34
|
+
</tr>
|
35
|
+
</table>
|
36
|
+
|
37
|
+
</div>
|
38
|
+
|
39
|
+
</body>
|
40
|
+
|
41
|
+
</html>`;
|
@@ -0,0 +1,41 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
export const WebMapAsText =
|
5
|
+
'{"operationalLayers":[{"id":"Alternative_Fueling_Stations_3694","layerType":"ArcGISFeatureLayer","url":"http://services.arcgis.com/rOo16HdIMeOBI4Mb/arcgis/rest/services/Alternative_Fueling_Stations/FeatureServer/0","visibility":true,"opacity":1,"title":"Alternative Fueling Stations","itemId":"44612e6217d34f40b1ce2a48f367e90a","layerDefinition":{"minScale":2896791,"maxScale":0}}],"baseMap":{"baseMapLayers":[{"id":"VectorTile_4047","type":"VectorTileLayer","layerType":"VectorTileLayer","title":"Dark Gray Canvas","styleUrl":"http://www.arcgis.com/sharing/rest/content/items/5ad3948260a147a993ef4865e3fad476/resources/styles/root.json","itemId":"5ad3948260a147a993ef4865e3fad476","visibility":true,"opacity":1}],"title":"Basemap"},"spatialReference":{"wkid":102100,"latestWkid":3857},"authoringApp":"WebMapViewer","authoringAppVersion":"5.1","version":"2.8"}';
|
6
|
+
|
7
|
+
export const WebMapAsJSON = {
|
8
|
+
operationalLayers: [
|
9
|
+
{
|
10
|
+
id: "Alternative_Fueling_Stations_3694",
|
11
|
+
layerType: "ArcGISFeatureLayer",
|
12
|
+
url:
|
13
|
+
"http://services.arcgis.com/rOo16HdIMeOBI4Mb/arcgis/rest/services/Alternative_Fueling_Stations/FeatureServer/0",
|
14
|
+
visibility: true,
|
15
|
+
opacity: 1,
|
16
|
+
title: "Alternative Fueling Stations",
|
17
|
+
itemId: "44612e6217d34f40b1ce2a48f367e90a",
|
18
|
+
layerDefinition: { minScale: 2896791, maxScale: 0 }
|
19
|
+
}
|
20
|
+
],
|
21
|
+
baseMap: {
|
22
|
+
baseMapLayers: [
|
23
|
+
{
|
24
|
+
id: "VectorTile_4047",
|
25
|
+
type: "VectorTileLayer",
|
26
|
+
layerType: "VectorTileLayer",
|
27
|
+
title: "Dark Gray Canvas",
|
28
|
+
styleUrl:
|
29
|
+
"http://www.arcgis.com/sharing/rest/content/items/5ad3948260a147a993ef4865e3fad476/resources/styles/root.json",
|
30
|
+
itemId: "5ad3948260a147a993ef4865e3fad476",
|
31
|
+
visibility: true,
|
32
|
+
opacity: 1
|
33
|
+
}
|
34
|
+
],
|
35
|
+
title: "Basemap"
|
36
|
+
},
|
37
|
+
spatialReference: { wkid: 102100, latestWkid: 3857 },
|
38
|
+
authoringApp: "WebMapViewer",
|
39
|
+
authoringAppVersion: "5.1",
|
40
|
+
version: "2.8"
|
41
|
+
};
|
@@ -0,0 +1,299 @@
|
|
1
|
+
/* Copyright (c) 2018 Environmental Systems Research Institute, Inc.
|
2
|
+
* Apache-2.0 */
|
3
|
+
|
4
|
+
import { request, ErrorTypes } from "../src/index";
|
5
|
+
import * as fetchMock from "fetch-mock";
|
6
|
+
import {
|
7
|
+
SharingRestInfo,
|
8
|
+
SharingRestInfoHTML
|
9
|
+
} from "./mocks/sharing-rest-info";
|
10
|
+
import { ArcGISOnlineError } from "./mocks/errors";
|
11
|
+
import { WebMapAsText, WebMapAsJSON } from "./mocks/webmap";
|
12
|
+
import { GeoJSONFeatureCollection } from "./mocks/geojson-feature-collection";
|
13
|
+
|
14
|
+
describe("request()", () => {
|
15
|
+
afterEach(fetchMock.restore);
|
16
|
+
|
17
|
+
it("should make a basic POST request", done => {
|
18
|
+
fetchMock.once("*", SharingRestInfo);
|
19
|
+
|
20
|
+
request("https://www.arcgis.com/sharing/rest/info")
|
21
|
+
.then(response => {
|
22
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
23
|
+
expect(url).toEqual("https://www.arcgis.com/sharing/rest/info");
|
24
|
+
expect(options.method).toBe("POST");
|
25
|
+
expect(response).toEqual(SharingRestInfo);
|
26
|
+
expect(options.body).toContain("f=json");
|
27
|
+
done();
|
28
|
+
})
|
29
|
+
.catch(e => {
|
30
|
+
fail(e);
|
31
|
+
});
|
32
|
+
});
|
33
|
+
|
34
|
+
it("should make a basic GET request", done => {
|
35
|
+
fetchMock.once("*", SharingRestInfo);
|
36
|
+
|
37
|
+
request("https://www.arcgis.com/sharing/rest/info", {
|
38
|
+
httpMethod: "GET"
|
39
|
+
})
|
40
|
+
.then(response => {
|
41
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
42
|
+
expect(url).toEqual("https://www.arcgis.com/sharing/rest/info?f=json");
|
43
|
+
expect(options.method).toBe("GET");
|
44
|
+
expect(response).toEqual(SharingRestInfo);
|
45
|
+
done();
|
46
|
+
})
|
47
|
+
.catch(e => {
|
48
|
+
fail(e);
|
49
|
+
});
|
50
|
+
});
|
51
|
+
|
52
|
+
it("should make a basic GET request for text", done => {
|
53
|
+
fetchMock.once("*", WebMapAsText);
|
54
|
+
|
55
|
+
request(
|
56
|
+
"https://www.arcgis.com/sharing/rest/content/items/43a8e51789044d9480a20089a84129ad/data",
|
57
|
+
{
|
58
|
+
httpMethod: "GET",
|
59
|
+
params: { f: "text" }
|
60
|
+
}
|
61
|
+
)
|
62
|
+
.then(response => {
|
63
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
64
|
+
expect(url).toEqual(
|
65
|
+
"https://www.arcgis.com/sharing/rest/content/items/43a8e51789044d9480a20089a84129ad/data?f=text"
|
66
|
+
);
|
67
|
+
expect(options.method).toBe("GET");
|
68
|
+
expect(response).toEqual(WebMapAsText);
|
69
|
+
done();
|
70
|
+
})
|
71
|
+
.catch(e => {
|
72
|
+
fail(e);
|
73
|
+
});
|
74
|
+
});
|
75
|
+
|
76
|
+
it("should make a basic GET request for html", done => {
|
77
|
+
fetchMock.once("*", SharingRestInfoHTML);
|
78
|
+
|
79
|
+
request("https://www.arcgis.com/sharing/rest/info", {
|
80
|
+
httpMethod: "GET",
|
81
|
+
params: { f: "html" }
|
82
|
+
})
|
83
|
+
.then(response => {
|
84
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
85
|
+
expect(url).toEqual("https://www.arcgis.com/sharing/rest/info?f=html");
|
86
|
+
expect(options.method).toBe("GET");
|
87
|
+
expect(response).toEqual(SharingRestInfoHTML);
|
88
|
+
done();
|
89
|
+
})
|
90
|
+
.catch(e => {
|
91
|
+
fail(e);
|
92
|
+
});
|
93
|
+
});
|
94
|
+
|
95
|
+
it("should make a basic GET request for geojson", done => {
|
96
|
+
fetchMock.once("*", GeoJSONFeatureCollection);
|
97
|
+
|
98
|
+
request(
|
99
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer/0/query",
|
100
|
+
{
|
101
|
+
httpMethod: "GET",
|
102
|
+
params: { where: "1=1", f: "geojson" }
|
103
|
+
}
|
104
|
+
)
|
105
|
+
.then(response => {
|
106
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
107
|
+
expect(url).toEqual(
|
108
|
+
"https://services1.arcgis.com/ORG/arcgis/rest/services/FEATURE_SERVICE/FeatureServer/0/query?f=geojson&where=1%3D1"
|
109
|
+
);
|
110
|
+
expect(options.method).toBe("GET");
|
111
|
+
expect(response).toEqual(GeoJSONFeatureCollection);
|
112
|
+
done();
|
113
|
+
})
|
114
|
+
.catch(e => {
|
115
|
+
fail(e);
|
116
|
+
});
|
117
|
+
});
|
118
|
+
|
119
|
+
it("should switch from GET to POST when url is longer than specified", done => {
|
120
|
+
fetchMock.once("*", SharingRestInfo);
|
121
|
+
const restInfoUrl = "https://www.arcgis.com/sharing/rest/info";
|
122
|
+
|
123
|
+
request(restInfoUrl, {
|
124
|
+
httpMethod: "GET",
|
125
|
+
// typically consumers would base maxUrlLength on browser/server limits
|
126
|
+
// but for testing, we use an artificially low limit
|
127
|
+
// like this one that assumes no parameters will be added
|
128
|
+
maxUrlLength: restInfoUrl.length
|
129
|
+
})
|
130
|
+
.then(response => {
|
131
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
132
|
+
expect(url).toEqual("https://www.arcgis.com/sharing/rest/info");
|
133
|
+
expect(options.method).toBe("POST");
|
134
|
+
expect(options.body).toContain("f=json");
|
135
|
+
expect(response).toEqual(SharingRestInfo);
|
136
|
+
done();
|
137
|
+
})
|
138
|
+
.catch(e => {
|
139
|
+
fail(e);
|
140
|
+
});
|
141
|
+
});
|
142
|
+
|
143
|
+
it("should use the `authentication` option to authenticate a request", done => {
|
144
|
+
fetchMock.once("*", WebMapAsText);
|
145
|
+
|
146
|
+
const MOCK_AUTH = {
|
147
|
+
portal: "https://www.arcgis.com/sharing/rest",
|
148
|
+
getToken() {
|
149
|
+
return Promise.resolve("token");
|
150
|
+
}
|
151
|
+
};
|
152
|
+
|
153
|
+
request(
|
154
|
+
"https://www.arcgis.com/sharing/rest/content/items/43a8e51789044d9480a20089a84129ad/data",
|
155
|
+
{
|
156
|
+
authentication: MOCK_AUTH
|
157
|
+
}
|
158
|
+
)
|
159
|
+
.then(response => {
|
160
|
+
const [url, options]: [string, RequestInit] = fetchMock.lastCall("*");
|
161
|
+
expect(url).toEqual(
|
162
|
+
"https://www.arcgis.com/sharing/rest/content/items/43a8e51789044d9480a20089a84129ad/data"
|
163
|
+
);
|
164
|
+
expect(options.body).toContain("token=token");
|
165
|
+
expect(response).toEqual(WebMapAsJSON);
|
166
|
+
done();
|
167
|
+
})
|
168
|
+
.catch(e => {
|
169
|
+
fail(e);
|
170
|
+
});
|
171
|
+
});
|
172
|
+
|
173
|
+
it("should re-throw HTTP errors (404, 500, etc)", done => {
|
174
|
+
fetchMock.once("*", 404);
|
175
|
+
|
176
|
+
request(
|
177
|
+
"https://www.arcgis.com/sharing/rest/content/items/43a8e51789044d9480a20089a84129ad/data"
|
178
|
+
).catch(error => {
|
179
|
+
expect(error.name).toBe(ErrorTypes.ArcGISRequestError);
|
180
|
+
expect(error.message).toBe("HTTP 404: Not Found");
|
181
|
+
expect(error instanceof Error).toBeTruthy();
|
182
|
+
expect(error.url).toBe(
|
183
|
+
"https://www.arcgis.com/sharing/rest/content/items/43a8e51789044d9480a20089a84129ad/data"
|
184
|
+
);
|
185
|
+
expect(error.options.params).toEqual({ f: "json" });
|
186
|
+
expect(error.options.httpMethod).toEqual("POST");
|
187
|
+
expect(typeof error.options.fetch).toEqual("function");
|
188
|
+
expect(error.options.fetch.length).toEqual(2);
|
189
|
+
done();
|
190
|
+
});
|
191
|
+
});
|
192
|
+
|
193
|
+
it("should throw errors with information about the request", done => {
|
194
|
+
fetchMock.once("*", ArcGISOnlineError);
|
195
|
+
|
196
|
+
request(
|
197
|
+
"https://www.arcgis.com/sharing/rest/content/items/43a8e51789044d9480a20089a84129ad/data"
|
198
|
+
).catch(error => {
|
199
|
+
expect(error.name).toBe(ErrorTypes.ArcGISRequestError);
|
200
|
+
expect(error.message).toBe("400: 'type' and 'title' property required.");
|
201
|
+
expect(error instanceof Error).toBeTruthy();
|
202
|
+
expect(error.url).toBe(
|
203
|
+
"https://www.arcgis.com/sharing/rest/content/items/43a8e51789044d9480a20089a84129ad/data"
|
204
|
+
);
|
205
|
+
expect(error.options.params).toEqual({ f: "json" });
|
206
|
+
expect(error.options.httpMethod).toEqual("POST");
|
207
|
+
expect(typeof error.options.fetch).toEqual("function");
|
208
|
+
expect(error.options.fetch.length).toEqual(2);
|
209
|
+
done();
|
210
|
+
});
|
211
|
+
});
|
212
|
+
|
213
|
+
it("should allow you to use custom implementations of `fetch`", done => {
|
214
|
+
const MockFetchResponse = {
|
215
|
+
ok: true,
|
216
|
+
json() {
|
217
|
+
return Promise.resolve(SharingRestInfo);
|
218
|
+
},
|
219
|
+
blob() {
|
220
|
+
return Promise.resolve(new Blob([JSON.stringify(SharingRestInfo)]));
|
221
|
+
},
|
222
|
+
text() {
|
223
|
+
return Promise.resolve(JSON.stringify(SharingRestInfo));
|
224
|
+
}
|
225
|
+
};
|
226
|
+
|
227
|
+
const MockFetch = function() {
|
228
|
+
return Promise.resolve(MockFetchResponse);
|
229
|
+
};
|
230
|
+
|
231
|
+
request("https://www.arcgis.com/sharing/rest/info", {
|
232
|
+
fetch: MockFetch as any
|
233
|
+
})
|
234
|
+
.then(response => {
|
235
|
+
expect(response).toEqual(SharingRestInfo);
|
236
|
+
done();
|
237
|
+
})
|
238
|
+
.catch(e => {
|
239
|
+
fail(e);
|
240
|
+
});
|
241
|
+
});
|
242
|
+
|
243
|
+
describe("should throw errors when required dependencies are missing", () => {
|
244
|
+
const oldPromise = Promise;
|
245
|
+
const oldFetch = fetch;
|
246
|
+
const oldFormData = FormData;
|
247
|
+
beforeEach(() => {
|
248
|
+
Promise = undefined;
|
249
|
+
FormData = undefined;
|
250
|
+
Function("return this")().fetch = undefined;
|
251
|
+
});
|
252
|
+
|
253
|
+
afterEach(() => {
|
254
|
+
Promise = oldPromise;
|
255
|
+
FormData = oldFormData;
|
256
|
+
Function("return this")().fetch = oldFetch;
|
257
|
+
});
|
258
|
+
it("should throw for missing dependencies", () => {
|
259
|
+
expect(() => {
|
260
|
+
request("https://www.arcgis.com/sharing/rest/info").catch();
|
261
|
+
}).toThrowError(
|
262
|
+
"`arcgis-rest-request` requires global variables for `fetch`, `Promise` and `FormData` to be present in the global scope. You are missing `fetch`, `Promise`, `FormData`. We recommend installing the `isomorphic-fetch`, `es6-promise`, `isomorphic-form-data` modules at the root of your application to add these to the global scope. See https://bit.ly/2KNwWaJ for more info."
|
263
|
+
);
|
264
|
+
});
|
265
|
+
|
266
|
+
it("should not throw if fetch is not present but a custom fetch is defined", done => {
|
267
|
+
Promise = oldPromise;
|
268
|
+
FormData = oldFormData;
|
269
|
+
|
270
|
+
const MockFetchResponse = {
|
271
|
+
ok: true,
|
272
|
+
json() {
|
273
|
+
return Promise.resolve(SharingRestInfo);
|
274
|
+
},
|
275
|
+
blob() {
|
276
|
+
return Promise.resolve(new Blob([JSON.stringify(SharingRestInfo)]));
|
277
|
+
},
|
278
|
+
text() {
|
279
|
+
return Promise.resolve(JSON.stringify(SharingRestInfo));
|
280
|
+
}
|
281
|
+
};
|
282
|
+
|
283
|
+
const MockFetch = function() {
|
284
|
+
return Promise.resolve(MockFetchResponse);
|
285
|
+
};
|
286
|
+
|
287
|
+
request("https://www.arcgis.com/sharing/rest/info", {
|
288
|
+
fetch: MockFetch as any
|
289
|
+
})
|
290
|
+
.then(response => {
|
291
|
+
expect(response).toEqual(SharingRestInfo);
|
292
|
+
done();
|
293
|
+
})
|
294
|
+
.catch(e => {
|
295
|
+
fail(e);
|
296
|
+
});
|
297
|
+
});
|
298
|
+
});
|
299
|
+
});
|