@forge/util 1.2.3 → 1.3.0-next.1

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.
@@ -1,40 +1,23 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- function __export(m) {
16
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
17
- }
18
2
  Object.defineProperty(exports, "__esModule", { value: true });
19
- var Constraints_1 = require("./Constraints");
20
- __export(require("./AppAris"));
3
+ const tslib_1 = require("tslib");
4
+ const Constraints_1 = require("./Constraints");
5
+ tslib_1.__exportStar(require("./AppAris"), exports);
21
6
  /**
22
7
  * InvalidAriError - an error thrown if an invalid Ari is constructed
23
8
  */
24
- var InvalidAriError = /** @class */ (function (_super) {
25
- __extends(InvalidAriError, _super);
9
+ class InvalidAriError extends Error {
26
10
  /**
27
11
  * Construct an InvalidAriError given an error message
28
12
  *
29
13
  * @param {string} ariString - the ARI that failed to parse
30
14
  * @param {string|undefined} description - The error message
31
15
  */
32
- function InvalidAriError(ariString, description) {
33
- var _this = _super.call(this, "Invalid ari string: " + ariString + (description ? '. ' + description : '')) || this;
34
- _this.ariString = ariString;
16
+ constructor(ariString, description) {
17
+ super(`Invalid ari string: ${ariString}${description ? '. ' + description : ''}`);
18
+ this.ariString = ariString;
35
19
  // Support correct inheritance in ES5
36
- Object.setPrototypeOf(_this, InvalidAriError.prototype);
37
- return _this;
20
+ Object.setPrototypeOf(this, InvalidAriError.prototype);
38
21
  }
39
22
  /**
40
23
  * Construct an InvalidAriError given some constraint violations
@@ -42,11 +25,10 @@ var InvalidAriError = /** @class */ (function (_super) {
42
25
  * @param {string} ariString - the ARI that failed to parse
43
26
  * @param {ConstraintViolation<Object>[]} violations - The array of constraint errors
44
27
  */
45
- InvalidAriError.withConstraintViolations = function (ariString, violations) {
46
- return new InvalidAriError(ariString, violations.map(function (v) { return v.toString(); }).join('\n'));
47
- };
48
- return InvalidAriError;
49
- }(Error));
28
+ static withConstraintViolations(ariString, violations) {
29
+ return new InvalidAriError(ariString, violations.map((v) => v.toString()).join('\n'));
30
+ }
31
+ }
50
32
  exports.InvalidAriError = InvalidAriError;
51
33
  function matchesSegment(value1, value2) {
52
34
  if (value1 === value2) {
@@ -58,23 +40,29 @@ function matchesSegment(value1, value2) {
58
40
  return false;
59
41
  }
60
42
  // constraints are based on draft of v2 spec https://hello.atlassian.net/wiki/spaces/ARCH/pages/161909310/Atlassian+Resource+Identifier+Spec+draft-2.0#AtlassianResourceIdentifierSpec(draft-2.0)-Syntax
61
- var basicCharConstraint = Constraints_1.pattern(/^[a-z][a-z.-]*$/);
62
- var resourceOwnerConstraints = [Constraints_1.lengthBetween(3, 255), basicCharConstraint];
63
- var resourceTypeConstraints = [Constraints_1.lengthBetween(3, 255), basicCharConstraint];
64
- var cloudIdConstraints = [Constraints_1.lengthBetween(36, 255)];
65
- var siteResourceType = 'site';
66
- var resourceIdChars = /[\w-._~:@]/.source;
67
- var resourceIdConstraints = [Constraints_1.pattern(new RegExp("^" + resourceIdChars + "+(/" + resourceIdChars + "*)*(;v=" + resourceIdChars + "*)*$"))];
43
+ const basicCharConstraint = Constraints_1.pattern(/^[a-z][a-z.-]*$/);
44
+ /**
45
+ * resourceType allows for capitalized letters to support Identity ARIs (`ari:cloud:identity::userGrant/<...>`)
46
+ * It's a violation of the spec, but we still need to support that.
47
+ * See https://hello.atlassian.net/wiki/spaces/ARCH/pages/161909310/Atlassian+Resource+Identifier+Spec+draft-2.0
48
+ */
49
+ const resourceTypeCharConstraints = Constraints_1.pattern(/^[a-z][a-z.-]*$/i);
50
+ const resourceOwnerConstraints = [Constraints_1.lengthBetween(3, 255), basicCharConstraint];
51
+ const resourceTypeConstraints = [Constraints_1.lengthBetween(3, 255), resourceTypeCharConstraints];
52
+ const cloudIdConstraints = [Constraints_1.lengthBetween(3, 255)];
53
+ const siteResourceType = 'site';
54
+ const resourceIdChars = /[\w-._~:@#]/.source;
55
+ const resourceIdConstraints = [Constraints_1.pattern(new RegExp(`^${resourceIdChars}+(/${resourceIdChars}*)*(;v=${resourceIdChars}*)*$`))];
68
56
  /**
69
57
  * Returns an Ari that is of the latest version of the Ari spec that we support. Any legacy formats
70
58
  * (like those for site wide ARIs) are upgraded to their latest form.
71
59
  */
72
60
  function upgrade(values) {
73
- var resourceId = values.resourceId, resourceOwner = values.resourceOwner, cloudId = values.cloudId;
61
+ const { resourceId, resourceOwner, cloudId } = values;
74
62
  // note: The new ARI spec has not defined a format for system wide contexts so we exclude them from upgrade
75
63
  if (!resourceId && cloudId) {
76
64
  return {
77
- resourceOwner: resourceOwner,
65
+ resourceOwner,
78
66
  resourceType: siteResourceType,
79
67
  resourceId: cloudId,
80
68
  };
@@ -83,7 +71,13 @@ function upgrade(values) {
83
71
  return values;
84
72
  }
85
73
  }
86
- var ResourceIdentifier = /** @class */ (function () {
74
+ class ResourceIdentifier {
75
+ get cloudId() {
76
+ if (this.resourceType === siteResourceType) {
77
+ return this.internalCloudId ? this.internalCloudId : this.resourceId;
78
+ }
79
+ return this.internalCloudId;
80
+ }
87
81
  /**
88
82
  * Create a new Ari
89
83
  *
@@ -97,24 +91,14 @@ var ResourceIdentifier = /** @class */ (function () {
97
91
  *
98
92
  * @throws {InvalidAriError} if the provided segments fail to pass validation
99
93
  */
100
- function ResourceIdentifier(values) {
101
- var _a = upgrade(values), resourceId = _a.resourceId, resourceOwner = _a.resourceOwner, resourceType = _a.resourceType, cloudId = _a.cloudId;
94
+ constructor(values) {
95
+ const { resourceId, resourceOwner, resourceType, cloudId } = upgrade(values);
102
96
  this.resourceOwner = resourceOwner;
103
97
  this.internalCloudId = cloudId;
104
98
  this.resourceType = resourceType;
105
99
  this.resourceId = resourceId;
106
100
  this.validate();
107
101
  }
108
- Object.defineProperty(ResourceIdentifier.prototype, "cloudId", {
109
- get: function () {
110
- if (this.resourceType === siteResourceType) {
111
- return this.internalCloudId ? this.internalCloudId : this.resourceId;
112
- }
113
- return this.internalCloudId;
114
- },
115
- enumerable: true,
116
- configurable: true
117
- });
118
102
  /**
119
103
  * Parse a string as an Ari
120
104
  *
@@ -122,16 +106,16 @@ var ResourceIdentifier = /** @class */ (function () {
122
106
  * @returns {Ari} the parsed ari
123
107
  * @throws {InvalidAriError} if the string could not be correctly parsed as an Ari.
124
108
  */
125
- ResourceIdentifier.parse = function (ariString) {
109
+ static parse(ariString) {
126
110
  if (!ariString) {
127
111
  throw new InvalidAriError(ariString);
128
112
  }
129
- var match = ariString.match(/^ari:cloud:([^:/]+):([^:/]*):([^:/]*)\/(.*)$/);
113
+ const match = ariString.match(/^ari:cloud:([^:/]+):([^:/]*):([^:/]*)\/(.*)$/);
130
114
  if (!match || (match.length !== 5)) {
131
115
  throw new InvalidAriError(ariString);
132
116
  }
133
- var terms = match.map(function (a) { return a && a.length > 0 ? a : undefined; });
134
- var resourceOwner = terms[1];
117
+ const terms = match.map((a) => a && a.length > 0 ? a : undefined);
118
+ const resourceOwner = terms[1];
135
119
  if (!resourceOwner) {
136
120
  throw new InvalidAriError(ariString);
137
121
  }
@@ -141,41 +125,41 @@ var ResourceIdentifier = /** @class */ (function () {
141
125
  resourceType: terms[3],
142
126
  resourceId: terms[4]
143
127
  });
144
- };
145
- ResourceIdentifier.parseEncoded = function (encodedAriString) {
128
+ }
129
+ static parseEncoded(encodedAriString) {
146
130
  return parse(decodeURIComponent(encodedAriString));
147
- };
131
+ }
148
132
  /**
149
133
  * Converts this Ari to a string.
150
134
  */
151
- ResourceIdentifier.prototype.toString = function () {
135
+ toString() {
152
136
  if (!this.ariString) {
153
- var resourceId = this.resourceType === siteResourceType && this.internalCloudId ? this.internalCloudId : (this.resourceId || '');
154
- var resourceType = this.resourceType || '';
155
- var sanitizedCloudId = this.resourceType === siteResourceType ? '' : this.internalCloudId || '';
156
- this.ariString = "ari:cloud:" + this.resourceOwner + ":" + sanitizedCloudId + ":" + resourceType + "/" + resourceId;
137
+ const resourceId = this.resourceType === siteResourceType && this.internalCloudId ? this.internalCloudId : (this.resourceId || '');
138
+ const resourceType = this.resourceType || '';
139
+ const sanitizedCloudId = this.resourceType === siteResourceType ? '' : this.internalCloudId || '';
140
+ this.ariString = `ari:cloud:${this.resourceOwner}:${sanitizedCloudId}:${resourceType}/${resourceId}`;
157
141
  }
158
142
  return this.ariString;
159
- };
143
+ }
160
144
  /**
161
145
  * Converts this object to its json representation
162
146
  */
163
- ResourceIdentifier.prototype.toJSON = function () {
147
+ toJSON() {
164
148
  return this.toString();
165
- };
149
+ }
166
150
  /**
167
151
  * Checks if this context is the same as another context
168
152
  *
169
153
  * @param {Ari} other - the other parameter to match with
170
154
  * @returns {boolean} - true if all segments of both Aris are equal, false otherwise
171
155
  */
172
- ResourceIdentifier.prototype.equals = function (other) {
156
+ equals(other) {
173
157
  return other instanceof ResourceIdentifier
174
158
  && this.resourceOwner === other.resourceOwner
175
159
  && this.cloudId === other.cloudId
176
160
  && this.resourceType === other.resourceType
177
161
  && this.resourceId === other.resourceId;
178
- };
162
+ }
179
163
  /**
180
164
  * This method checks if the current context contains the other context.
181
165
  *
@@ -185,9 +169,9 @@ var ResourceIdentifier = /** @class */ (function () {
185
169
  * @param {Ari} other
186
170
  * @returns {boolean}
187
171
  */
188
- ResourceIdentifier.prototype.contains = function (other) {
172
+ contains(other) {
189
173
  return this.matches(new ResourceIdentifier(other));
190
- };
174
+ }
191
175
  /**
192
176
  * Checks if this context is the same as or contains the provided context.
193
177
  *
@@ -202,42 +186,41 @@ var ResourceIdentifier = /** @class */ (function () {
202
186
  * @param {Ari} other - the other parameter to match with
203
187
  * @returns {boolean} true if this Ari is the same as the other Ari, or matches the other Ari. False otherwise.
204
188
  */
205
- ResourceIdentifier.prototype.matches = function (other) {
189
+ matches(other) {
206
190
  return matchesSegment(this.resourceOwner, other.resourceOwner)
207
191
  && matchesSegment(this.cloudId, other.cloudId)
208
192
  && ((this.resourceType === siteResourceType && !!other.resourceType) || matchesSegment(this.resourceType, other.resourceType))
209
193
  && ((this.resourceType === siteResourceType && !!other.resourceType) || matchesSegment(this.resourceId, other.resourceId));
210
- };
211
- ResourceIdentifier.prototype.validateSiteWide = function () {
212
- var _a = this, resourceType = _a.resourceType, cloudId = _a.cloudId;
194
+ }
195
+ validateSiteWide() {
196
+ const { resourceType, cloudId } = this;
213
197
  if (resourceType === siteResourceType && !cloudId) {
214
198
  return new Constraints_1.GeneralValidationError('site wide ARIs must have a cloudId');
215
199
  }
216
- };
217
- ResourceIdentifier.prototype.validate = function () {
218
- var constraintViolations = [
200
+ }
201
+ validate() {
202
+ const constraintViolations = [
219
203
  Constraints_1.validateField(this, 'resourceOwner', resourceOwnerConstraints),
220
204
  Constraints_1.validateField(this, 'resourceType', resourceTypeConstraints),
221
205
  Constraints_1.validateField(this, 'resourceId', resourceIdConstraints),
222
206
  Constraints_1.validateField(this, 'cloudId', cloudIdConstraints),
223
207
  this.validateSiteWide()
224
208
  ]
225
- .filter(function (v) { return v; });
209
+ .filter((v) => v);
226
210
  if (constraintViolations.length > 0) {
227
211
  throw InvalidAriError.withConstraintViolations(this.toString(), constraintViolations);
228
212
  }
229
213
  if (this.resourceId !== undefined && this.resourceType === undefined) {
230
214
  throw new InvalidAriError(this.toString(), 'The resource type must be specified if the resource id is defined.');
231
215
  }
232
- };
233
- ResourceIdentifier.prototype.urlEncode = function () {
216
+ }
217
+ urlEncode() {
234
218
  return encodeURIComponent(this.toString());
235
- };
236
- ResourceIdentifier.prototype.urlDecode = function () {
219
+ }
220
+ urlDecode() {
237
221
  return decodeURIComponent(this.toString());
238
- };
239
- return ResourceIdentifier;
240
- }());
222
+ }
223
+ }
241
224
  exports.ResourceIdentifier = ResourceIdentifier;
242
225
  /**
243
226
  * Parse a string as an Ari
@@ -1 +1 @@
1
- {"version":3,"file":"Index.js","sourceRoot":"","sources":["../lib/Index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Index.js","sourceRoot":"","sources":["../lib/Index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "cs-ari",
3
- "version": "1.10.0",
3
+ "version": "1.12.1",
4
+ "license": "ISC",
4
5
  "description": "An implementation of the Atlassian Resource Identifier (ARI) scheme for Connect as a Service (CaaS)",
5
6
  "publishConfig": {
6
7
  "registry": "https://packages.atlassian.com"
@@ -14,9 +15,12 @@
14
15
  "test": "mocha --reporter mocha-multi --reporter-options spec=-,xunit=xunit.xml --require ts-node/register `find ./lib -name '*.spec.ts' -print`",
15
16
  "lint": "tslint -c ../../tslint.json --project tsconfig.json --project",
16
17
  "format": "tsfmt -r && tslint -c ../../tslint.json --project tsconfig.json --fix --force",
17
- "bamboo": "npm install -g yarn@0.18.0 && yarn && yarn test"
18
+ "bamboo": "npm install -g yarn@0.18.0 && yarn && yarn test",
19
+ "yarn-deduplicate": "yarn-deduplicate"
20
+ },
21
+ "dependencies": {
22
+ "ts-is-present": "^1.1.1"
18
23
  },
19
- "dependencies": {},
20
24
  "devDependencies": {
21
25
  "@types/chai": "^4.1.7",
22
26
  "@types/mocha": "^5.2.7",
@@ -29,7 +33,8 @@
29
33
  "ts-node": "^8.2.0",
30
34
  "tslint": "^5.17.0",
31
35
  "typescript": "^3.5.1",
32
- "typescript-formatter": "7.2.2"
36
+ "typescript-formatter": "7.2.2",
37
+ "yarn-deduplicate": "^1.1.1"
33
38
  },
34
39
  "typings": "./dist/Index.d.ts"
35
40
  }
@@ -1,18 +1,20 @@
1
- <testsuite name="Mocha Tests" tests="97" failures="0" errors="0" skipped="0" timestamp="Mon, 29 Jul 2019 01:39:16 GMT" time="0.08">
1
+ <testsuite name="Mocha Tests" tests="107" failures="0" errors="0" skipped="0" timestamp="Fri, 28 Aug 2020 02:29:05 GMT" time="0.05">
2
2
  <testcase classname="Ari toString" name="should correctly serialise ari when all fields are present" time="0.001"/>
3
3
  <testcase classname="Ari toString" name="should correctly serialise ari when cloudId is omitted" time="0"/>
4
4
  <testcase classname="Ari toString" name="should correctly serialise ari when a system wide user context provided" time="0"/>
5
5
  <testcase classname="Ari toString" name="should correctly serialise ari when resourceId is omitted" time="0"/>
6
6
  <testcase classname="Ari toString" name="should correctly serialise ari when resourceId and resourceType are omitted" time="0"/>
7
- <testcase classname="Ari toString" name="should correctly serialise ari when resourceOwner contains a full stop" time="0.001"/>
7
+ <testcase classname="Ari toString" name="should correctly serialise ari when resourceOwner contains a full stop" time="0"/>
8
8
  <testcase classname="Ari toString" name="should correctly serialise ari when resourceOwner contains a dash" time="0"/>
9
9
  <testcase classname="Ari toString" name="should correctly serialise ari when a global system context provided" time="0"/>
10
10
  <testcase classname="Ari toString" name="should correctly serialise ari when cloudId and resourceId are both UUIDs" time="0"/>
11
11
  <testcase classname="Ari toString" name="should correctly serialise ari when application wide system context provided" time="0"/>
12
12
  <testcase classname="Ari toString" name="should correctly serialise ari when site wide context" time="0"/>
13
13
  <testcase classname="Ari toString" name="should correctly serialise ari when ARI has colon in resource id" time="0"/>
14
+ <testcase classname="Ari toString" name="should correctly serialise ari when ARI has hash in resource id" time="0"/>
14
15
  <testcase classname="Ari toString" name="should correctly serialise ari when ARI has path characters in resource id" time="0"/>
15
- <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when all fields are present" time="0.001"/>
16
+ <testcase classname="Ari toString" name="should correctly serialise ari when resourceType is capitalized" time="0"/>
17
+ <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when all fields are present" time="0"/>
16
18
  <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when cloudId is omitted" time="0"/>
17
19
  <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when a system wide user context provided" time="0"/>
18
20
  <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when resourceId is omitted" time="0"/>
@@ -24,26 +26,28 @@
24
26
  <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when application wide system context provided" time="0"/>
25
27
  <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when site wide context" time="0"/>
26
28
  <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when ARI has colon in resource id" time="0"/>
29
+ <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when ARI has hash in resource id" time="0"/>
27
30
  <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when ARI has path characters in resource id" time="0"/>
28
- <testcase classname="Ari parse" name="should throw InvalidAriError when ariString is invalid" time="0.002"/>
31
+ <testcase classname="Ari JSON.stringify" name="should correctly serialise ari when resourceType is capitalized" time="0"/>
32
+ <testcase classname="Ari parse" name="should throw InvalidAriError when ariString is invalid" time="0.001"/>
29
33
  <testcase classname="Ari parse" name="should throw InvalidAriError when resourceOwner is null" time="0"/>
30
- <testcase classname="Ari parse" name="should throw InvalidAriError when resourceOwner too short" time="0"/>
34
+ <testcase classname="Ari parse" name="should throw InvalidAriError when resourceOwner too short" time="0.001"/>
31
35
  <testcase classname="Ari parse" name="should throw InvalidAriError when resourceOwner starts with a -" time="0"/>
32
36
  <testcase classname="Ari parse" name="should throw InvalidAriError when resourceOwner starts with a ." time="0.001"/>
33
- <testcase classname="Ari parse" name="should throw InvalidAriError when resourceType starts with a -" time="0.001"/>
34
- <testcase classname="Ari parse" name="should throw InvalidAriError when resourceType starts with a ." time="0"/>
37
+ <testcase classname="Ari parse" name="should throw InvalidAriError when resourceType starts with a -" time="0"/>
38
+ <testcase classname="Ari parse" name="should throw InvalidAriError when resourceType starts with a ." time="0.001"/>
35
39
  <testcase classname="Ari parse" name="should throw InvalidAriError when cloudId too short" time="0"/>
36
- <testcase classname="Ari parse" name="should throw InvalidAriError when resourceId contains a %" time="0.001"/>
37
- <testcase classname="Ari parse" name="should throw InvalidAriError when both resourceOwner and cloudId too short" time="0.001"/>
38
- <testcase classname="Ari parse" name="should throw InvalidAriError when a resource id is provided but the cloud id or resource type is not specified" time="0.001"/>
40
+ <testcase classname="Ari parse" name="should throw InvalidAriError when resourceId contains a %" time="0"/>
41
+ <testcase classname="Ari parse" name="should throw InvalidAriError when both resourceOwner and cloudId too short" time="0"/>
42
+ <testcase classname="Ari parse" name="should throw InvalidAriError when a resource id is provided but the cloud id or resource type is not specified" time="0"/>
39
43
  <testcase classname="Ari parse" name="should throw InvalidAriError when a site wide resourceType without a cloudId" time="0"/>
40
44
  <testcase classname="Ari parse" name="should correctly format ARI in case of site resource type and cloud id" time="0"/>
41
45
  <testcase classname="Ari parse" name="should correctly format ARI in case of site resource type and resource id" time="0"/>
42
46
  <testcase classname="Ari parse" name="should correctly parse ari when all fields are present" time="0"/>
43
47
  <testcase classname="Ari parse" name="should correctly parse ari when cloudId is omitted" time="0"/>
44
- <testcase classname="Ari parse" name="should correctly parse ari when a system wide user context provided" time="0.001"/>
48
+ <testcase classname="Ari parse" name="should correctly parse ari when a system wide user context provided" time="0"/>
45
49
  <testcase classname="Ari parse" name="should correctly parse ari when resourceId is omitted" time="0"/>
46
- <testcase classname="Ari parse" name="should correctly parse ari when resourceId and resourceType are omitted" time="0.001"/>
50
+ <testcase classname="Ari parse" name="should correctly parse ari when resourceId and resourceType are omitted" time="0"/>
47
51
  <testcase classname="Ari parse" name="should correctly parse ari when resourceOwner contains a full stop" time="0"/>
48
52
  <testcase classname="Ari parse" name="should correctly parse ari when resourceOwner contains a dash" time="0"/>
49
53
  <testcase classname="Ari parse" name="should correctly parse ari when a global system context provided" time="0"/>
@@ -51,41 +55,47 @@
51
55
  <testcase classname="Ari parse" name="should correctly parse ari when application wide system context provided" time="0"/>
52
56
  <testcase classname="Ari parse" name="should correctly parse ari when site wide context" time="0"/>
53
57
  <testcase classname="Ari parse" name="should correctly parse ari when ARI has colon in resource id" time="0"/>
58
+ <testcase classname="Ari parse" name="should correctly parse ari when ARI has hash in resource id" time="0"/>
54
59
  <testcase classname="Ari parse" name="should correctly parse ari when ARI has path characters in resource id" time="0"/>
60
+ <testcase classname="Ari parse" name="should correctly parse ari when resourceType is capitalized" time="0.001"/>
55
61
  <testcase classname="Ari urlEncodeAri and urlDecodeAri" name="should be able to urlEncodeAri and urlDecodeAri the ARI" time="0.001"/>
56
62
  <testcase classname="Ari urlEncodeAri and urlDecodeAri" name="should be able to urlEncodeAri and urlDecodeAri the ARI when a part of resource Id has a /" time="0"/>
57
63
  <testcase classname="Ari urlEncodeAri and urlDecodeAri" name="should be able to parse a encoded ARI" time="0"/>
58
- <testcase classname="Ari contains" name="should return true when both contexts are the same" time="0.001"/>
59
- <testcase classname="Ari contains" name="should return true when self is broader than other context" time="0"/>
60
- <testcase classname="Ari contains" name="should return false when other context is broader than self" time="0.012"/>
61
- <testcase classname="Ari contains" name="should return false when self resource Id is different than other context resource Id" time="0"/>
64
+ <testcase classname="Ari contains" name="should return true when both contexts are the same" time="0"/>
65
+ <testcase classname="Ari contains" name="should return true when self is broader than other context" time="0.001"/>
66
+ <testcase classname="Ari contains" name="should return false when other context is broader than self" time="0"/>
67
+ <testcase classname="Ari contains" name="should return false when self resource Id is different than other context resource Id" time="0.001"/>
62
68
  <testcase classname="Ari contains" name="should return false when self resource type is different than other context resource type" time="0"/>
63
69
  <testcase classname="Ari contains" name="should return false when self cloud Id is different than other cloud Id" time="0"/>
64
70
  <testcase classname="Ari contains" name="should return false when self resource owner is different than other" time="0"/>
65
71
  <testcase classname="Ari contains" name="should return false when self cloud Id is undefined" time="0"/>
66
72
  <testcase classname="Ari contains" name="should contain site resource type ARI with cloudIds in different fields" time="0"/>
67
73
  <testcase classname="Ari cloudId" name="should return cloud ids for site resource type" time="0"/>
68
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an app ari" time="0.003"/>
69
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an environment group ari" time="0.002"/>
70
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an environment group ari with version" time="0"/>
71
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an extension group ari" time="0.001"/>
72
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when a static extension-group group ari" time="0.001"/>
73
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when a defaulted static environment group ari" time="0.001"/>
74
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an extension group ari with version" time="0.001"/>
74
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an app ari" time="0.002"/>
75
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an environment group ari" time="0"/>
76
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an environment group ari with version" time="0.001"/>
77
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an extension group ari" time="0"/>
78
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when a static extension-group group ari" time="0"/>
79
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when a defaulted static environment group ari" time="0"/>
80
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an extension group ari with version" time="0"/>
75
81
  <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when a static extension-group group ari with version" time="0"/>
76
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when a defaulted static environment group ari with version" time="0"/>
77
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an extension ari" time="0.001"/>
78
- <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an extension ari with static extension group" time="0"/>
82
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when a defaulted static environment group ari with version" time="0.001"/>
83
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an extension ari" time="0"/>
84
+ <testcase classname="AppFamilyAri parseAppAri" name="should correctly parse ari when an extension ari with static extension group" time="0.001"/>
85
+ <testcase classname="AppFamilyAri parseAppAri" name="should throw InvalidAriError when app ID is not a valid UUID" time="0"/>
86
+ <testcase classname="AppFamilyAri parseAppAri" name="should throw InvalidAriError when environment ID is not a valid UUID" time="0.001"/>
87
+ <testcase classname="AppFamilyAri parseAppAri" name="should throw InvalidAriError when extension group ID is not a valid UUID" time="0"/>
79
88
  <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when extra segs on app ari" time="0"/>
80
- <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when extra segs on environment ari" time="0"/>
81
- <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when extra segs on extension group ari" time="0.001"/>
89
+ <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when extra segs on environment ari" time="0.001"/>
90
+ <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when extra segs on extension group ari" time="0"/>
82
91
  <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when extra segs on extension ari" time="0"/>
83
- <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when too few segs on extension ari" time="0"/>
92
+ <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when too few segs on extension ari" time="0.001"/>
84
93
  <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when too few segs on extension group ari" time="0"/>
85
- <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when too few segs on environment ari" time="0.001"/>
94
+ <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when too few segs on environment ari" time="0"/>
86
95
  <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when too few segs on app ari" time="0"/>
87
- <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when empty segs on extension group ari" time="0.001"/>
88
- <testcase classname="AppFamilyAri toAri" name="should correctly convert to ari when an app ari" time="0.001"/>
96
+ <testcase classname="AppFamilyAri parseAppAri" name="should throw InvalidAriError when empty first seg on extension group ARI" time="0"/>
97
+ <testcase classname="AppFamilyAri parseAppAri" name="should throw NotAppFamilyAriError when empty segs on extension group ari" time="0"/>
98
+ <testcase classname="AppFamilyAri toAri" name="should correctly convert to ari when an app ari" time="0"/>
89
99
  <testcase classname="AppFamilyAri toAri" name="should correctly convert to ari when an environment group ari" time="0"/>
90
100
  <testcase classname="AppFamilyAri toAri" name="should correctly convert to ari when an environment group ari with version" time="0"/>
91
101
  <testcase classname="AppFamilyAri toAri" name="should correctly convert to ari when an extension group ari" time="0"/>