@expo/entity 0.37.0 → 0.39.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/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
- package/build/EntityCompanionProvider.d.ts +2 -2
- package/build/EntityCompanionProvider.js.map +1 -1
- package/build/EntityDatabaseAdapter.js +2 -2
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityFieldDefinition.d.ts +35 -1
- package/build/EntityFieldDefinition.js +29 -1
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityMutator.js +1 -1
- package/build/EntityMutator.js.map +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityCompanion-test.js.map +1 -1
- package/build/__tests__/EntityDatabaseAdapter-test.js.map +1 -1
- package/build/__tests__/EntityLoader-constructor-test.js +1 -1
- package/build/__tests__/entityUtils-test.js +8 -0
- package/build/__tests__/entityUtils-test.js.map +1 -1
- package/build/entityUtils.d.ts +7 -0
- package/build/entityUtils.js +20 -10
- package/build/entityUtils.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
- package/build/testfixtures/TestEntity.d.ts +4 -4
- package/build/testfixtures/TestEntity.js +4 -4
- package/build/testfixtures/TestEntity.js.map +1 -1
- package/build/utils/EntityPrivacyUtils.d.ts +32 -4
- package/build/utils/EntityPrivacyUtils.js +92 -23
- package/build/utils/EntityPrivacyUtils.js.map +1 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.js +85 -4
- package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +1 -0
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +178 -0
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +1 -0
- package/build/utils/collections/__tests__/maps-test.js +1 -1
- package/build/utils/collections/__tests__/maps-test.js.map +1 -1
- package/build/utils/collections/maps.js +2 -2
- package/build/utils/collections/maps.js.map +1 -1
- package/build/utils/mergeEntityMutationTriggerConfigurations.js +1 -2
- package/build/utils/mergeEntityMutationTriggerConfigurations.js.map +1 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +1 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +1 -1
- package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
- package/build/utils/testing/describeFieldTestCase.js +1 -1
- package/build/utils/testing/describeFieldTestCase.js.map +1 -1
- package/package.json +2 -2
- package/src/AuthorizationResultBasedEntityLoader.ts +1 -1
- package/src/EntityCompanionProvider.ts +5 -2
- package/src/EntityFieldDefinition.ts +38 -1
- package/src/EntityMutator.ts +1 -1
- package/src/__tests__/EntityCommonUseCases-test.ts +4 -4
- package/src/__tests__/EntityCompanion-test.ts +1 -1
- package/src/__tests__/EntityDatabaseAdapter-test.ts +6 -6
- package/src/__tests__/EntityLoader-constructor-test.ts +1 -1
- package/src/__tests__/entityUtils-test.ts +12 -0
- package/src/entityUtils.ts +24 -9
- package/src/internal/EntityFieldTransformationUtils.ts +2 -2
- package/src/internal/__tests__/EntityDataManager-test.ts +4 -4
- package/src/testfixtures/TestEntity.ts +7 -4
- package/src/utils/EntityPrivacyUtils.ts +223 -106
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +119 -5
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +254 -0
- package/src/utils/collections/__tests__/maps-test.ts +1 -1
- package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +1 -1
- package/src/utils/testing/StubDatabaseAdapter.ts +1 -1
|
@@ -63,7 +63,7 @@ class TestEntity extends Entity_1.default {
|
|
|
63
63
|
getBlah() {
|
|
64
64
|
return 'Hello World!';
|
|
65
65
|
}
|
|
66
|
-
static async
|
|
66
|
+
static async helloAsync(viewerContext, testValue) {
|
|
67
67
|
const fields = {
|
|
68
68
|
customIdField: testValue,
|
|
69
69
|
testIndexedField: 'hello',
|
|
@@ -79,13 +79,13 @@ class TestEntity extends Entity_1.default {
|
|
|
79
79
|
selectedFields: fields,
|
|
80
80
|
}));
|
|
81
81
|
}
|
|
82
|
-
static async
|
|
82
|
+
static async returnErrorAsync(_viewerContext) {
|
|
83
83
|
return (0, results_1.result)(new Error('return entity'));
|
|
84
84
|
}
|
|
85
|
-
static async
|
|
85
|
+
static async throwErrorAsync(_viewerContext) {
|
|
86
86
|
throw new Error('threw entity');
|
|
87
87
|
}
|
|
88
|
-
static async
|
|
88
|
+
static async nonResultAsync(_viewerContext, testValue) {
|
|
89
89
|
return testValue;
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/TestEntity.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA+C;AAE/C,uDAA+B;AAE/B,iFAAyD;AACzD,kDAA8E;AAC9E,iFAAyD;AAEzD,yGAAiF;AAWpE,QAAA,uBAAuB,GAAG,IAAI,6BAAmB,CAAa;IACzE,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,oCAAoC;IAC/C,MAAM,EAAE;QACN,aAAa,EAAE,IAAI,wBAAS,CAAC;YAC3B,UAAU,EAAE,WAAW;SACxB,CAAC;QACF,gBAAgB,EAAE,IAAI,0BAAW,CAAC;YAChC,UAAU,EAAE,YAAY;YACxB,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,WAAW,EAAE,IAAI,0BAAW,CAAC;YAC3B,UAAU,EAAE,cAAc;SAC3B,CAAC;QACF,QAAQ,EAAE,IAAI,uBAAQ,CAAC;YACrB,UAAU,EAAE,cAAc;SAC3B,CAAC;QACF,SAAS,EAAE,IAAI,wBAAS,CAAC;YACvB,UAAU,EAAE,YAAY;SACzB,CAAC;QACF,aAAa,EAAE,IAAI,0BAAW,CAAC;YAC7B,UAAU,EAAE,gBAAgB;SAC7B,CAAC;KACH;IACD,qBAAqB,EAAE,UAAU;IACjC,kBAAkB,EAAE,OAAO;CAC5B,CAAC,CAAC;AAEH,MAAa,uBAAwB,SAAQ,6BAK5C;IAC6B,SAAS,GAAG;QACtC,IAAI,sCAA4B,EAAiD;KAClF,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,sCAA4B,EAAiD;KAClF,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,sCAA4B,EAAiD;KAClF,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,sCAA4B,EAAiD;KAClF,CAAC;CACH;AAlBD,0DAkBC;AAED,MAAqB,UAAW,SAAQ,gBAAyC;IAC/E,MAAM,CAAC,yBAAyB;QAO9B,OAAO;YACL,WAAW,EAAE,UAAU;YACvB,mBAAmB,EAAE,+BAAuB;YAC5C,kBAAkB,EAAE,uBAAuB;SAC5C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"TestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/TestEntity.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA+C;AAE/C,uDAA+B;AAE/B,iFAAyD;AACzD,kDAA8E;AAC9E,iFAAyD;AAEzD,yGAAiF;AAWpE,QAAA,uBAAuB,GAAG,IAAI,6BAAmB,CAAa;IACzE,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,oCAAoC;IAC/C,MAAM,EAAE;QACN,aAAa,EAAE,IAAI,wBAAS,CAAC;YAC3B,UAAU,EAAE,WAAW;SACxB,CAAC;QACF,gBAAgB,EAAE,IAAI,0BAAW,CAAC;YAChC,UAAU,EAAE,YAAY;YACxB,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,WAAW,EAAE,IAAI,0BAAW,CAAC;YAC3B,UAAU,EAAE,cAAc;SAC3B,CAAC;QACF,QAAQ,EAAE,IAAI,uBAAQ,CAAC;YACrB,UAAU,EAAE,cAAc;SAC3B,CAAC;QACF,SAAS,EAAE,IAAI,wBAAS,CAAC;YACvB,UAAU,EAAE,YAAY;SACzB,CAAC;QACF,aAAa,EAAE,IAAI,0BAAW,CAAC;YAC7B,UAAU,EAAE,gBAAgB;SAC7B,CAAC;KACH;IACD,qBAAqB,EAAE,UAAU;IACjC,kBAAkB,EAAE,OAAO;CAC5B,CAAC,CAAC;AAEH,MAAa,uBAAwB,SAAQ,6BAK5C;IAC6B,SAAS,GAAG;QACtC,IAAI,sCAA4B,EAAiD;KAClF,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,sCAA4B,EAAiD;KAClF,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,sCAA4B,EAAiD;KAClF,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,sCAA4B,EAAiD;KAClF,CAAC;CACH;AAlBD,0DAkBC;AAED,MAAqB,UAAW,SAAQ,gBAAyC;IAC/E,MAAM,CAAC,yBAAyB;QAO9B,OAAO;YACL,WAAW,EAAE,UAAU;YACvB,mBAAmB,EAAE,+BAAuB;YAC5C,kBAAkB,EAAE,uBAAuB;SAC5C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,aAA4B,EAC5B,SAAiB;QAEjB,MAAM,MAAM,GAAG;YACb,aAAa,EAAE,SAAS;YACxB,gBAAgB,EAAE,OAAO;YACzB,WAAW,EAAE,OAAO;YACpB,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,aAAa,EAAE,IAAI;SACpB,CAAC;QACF,OAAO,IAAA,gBAAM,EACX,IAAI,UAAU,CAAC;YACb,aAAa;YACb,EAAE,EAAE,SAAS;YACb,cAAc,EAAE,MAAM;YACtB,cAAc,EAAE,MAAM;SACvB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,cAA6B;QACzD,OAAO,IAAA,gBAAM,EAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,cAA6B;QACxD,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,cAA6B,EAAE,SAAiB;QAC1E,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AApDD,6BAoDC"}
|
|
@@ -2,6 +2,15 @@ import Entity, { IEntityClass } from '../Entity';
|
|
|
2
2
|
import EntityPrivacyPolicy from '../EntityPrivacyPolicy';
|
|
3
3
|
import { EntityQueryContext } from '../EntityQueryContext';
|
|
4
4
|
import ViewerContext from '../ViewerContext';
|
|
5
|
+
import EntityNotAuthorizedError from '../errors/EntityNotAuthorizedError';
|
|
6
|
+
export type EntityPrivacyEvaluationResultSuccess = {
|
|
7
|
+
allowed: true;
|
|
8
|
+
};
|
|
9
|
+
export type EntityPrivacyEvaluationResultFailure = {
|
|
10
|
+
allowed: false;
|
|
11
|
+
authorizationErrors: EntityNotAuthorizedError<any, any, any, any, any>[];
|
|
12
|
+
};
|
|
13
|
+
export type EntityPrivacyEvaluationResult = EntityPrivacyEvaluationResultSuccess | EntityPrivacyEvaluationResultFailure;
|
|
5
14
|
/**
|
|
6
15
|
* Check whether an entity loaded by a viewer can be updated by that same viewer.
|
|
7
16
|
*
|
|
@@ -19,16 +28,35 @@ import ViewerContext from '../ViewerContext';
|
|
|
19
28
|
* @param sourceEntity - entity loaded by viewer
|
|
20
29
|
* @param queryContext - query context in which to perform the check
|
|
21
30
|
*/
|
|
22
|
-
export declare function canViewerUpdateAsync<
|
|
31
|
+
export declare function canViewerUpdateAsync<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields>(entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, sourceEntity: TEntity, queryContext?: EntityQueryContext): Promise<boolean>;
|
|
32
|
+
/**
|
|
33
|
+
* Check whether an entity loaded by a viewer can be updated by that same viewer and return the evaluation result.
|
|
34
|
+
*
|
|
35
|
+
* @see canViewerUpdateAsync
|
|
36
|
+
*
|
|
37
|
+
* @param entityClass - class of entity
|
|
38
|
+
* @param sourceEntity - entity loaded by viewer
|
|
39
|
+
* @param queryContext - query context in which to perform the check
|
|
40
|
+
*/
|
|
41
|
+
export declare function getCanViewerUpdateResultAsync<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields>(entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, sourceEntity: TEntity, queryContext?: EntityQueryContext): Promise<EntityPrivacyEvaluationResult>;
|
|
23
42
|
/**
|
|
24
43
|
* Check whether a single entity loaded by a viewer can be deleted by that same viewer.
|
|
25
44
|
* This recursively checks edge cascade permissions (EntityEdgeDeletionBehavior) as well.
|
|
26
45
|
*
|
|
27
|
-
* @
|
|
28
|
-
*
|
|
46
|
+
* @see canViewerUpdateAsync
|
|
47
|
+
*
|
|
48
|
+
* @param entityClass - class of entity
|
|
49
|
+
* @param sourceEntity - entity loaded by viewer
|
|
50
|
+
* @param queryContext - query context in which to perform the check
|
|
51
|
+
*/
|
|
52
|
+
export declare function canViewerDeleteAsync<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields>(entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, sourceEntity: TEntity, queryContext?: EntityQueryContext): Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Check whether a single entity loaded by a viewer can be deleted by that same viewer and return the evaluation result.
|
|
55
|
+
*
|
|
56
|
+
* @see canViewerDeleteAsync
|
|
29
57
|
*
|
|
30
58
|
* @param entityClass - class of entity
|
|
31
59
|
* @param sourceEntity - entity loaded by viewer
|
|
32
60
|
* @param queryContext - query context in which to perform the check
|
|
33
61
|
*/
|
|
34
|
-
export declare function
|
|
62
|
+
export declare function getCanViewerDeleteResultAsync<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields>(entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, sourceEntity: TEntity, queryContext?: EntityQueryContext): Promise<EntityPrivacyEvaluationResult>;
|
|
@@ -3,7 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.canViewerUpdateAsync = canViewerUpdateAsync;
|
|
7
|
+
exports.getCanViewerUpdateResultAsync = getCanViewerUpdateResultAsync;
|
|
8
|
+
exports.canViewerDeleteAsync = canViewerDeleteAsync;
|
|
9
|
+
exports.getCanViewerDeleteResultAsync = getCanViewerDeleteResultAsync;
|
|
7
10
|
const results_1 = require("@expo/results");
|
|
8
11
|
const EntityFieldDefinition_1 = require("../EntityFieldDefinition");
|
|
9
12
|
const entityUtils_1 = require("../entityUtils");
|
|
@@ -26,6 +29,24 @@ const EntityNotAuthorizedError_1 = __importDefault(require("../errors/EntityNotA
|
|
|
26
29
|
* @param queryContext - query context in which to perform the check
|
|
27
30
|
*/
|
|
28
31
|
async function canViewerUpdateAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
32
|
+
.getViewerContext()
|
|
33
|
+
.getViewerScopedEntityCompanionForClass(entityClass)
|
|
34
|
+
.getQueryContextProvider()
|
|
35
|
+
.getQueryContext()) {
|
|
36
|
+
const result = await canViewerUpdateInternalAsync(entityClass, sourceEntity,
|
|
37
|
+
/* cascadingDeleteCause */ null, queryContext);
|
|
38
|
+
return result.allowed;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check whether an entity loaded by a viewer can be updated by that same viewer and return the evaluation result.
|
|
42
|
+
*
|
|
43
|
+
* @see canViewerUpdateAsync
|
|
44
|
+
*
|
|
45
|
+
* @param entityClass - class of entity
|
|
46
|
+
* @param sourceEntity - entity loaded by viewer
|
|
47
|
+
* @param queryContext - query context in which to perform the check
|
|
48
|
+
*/
|
|
49
|
+
async function getCanViewerUpdateResultAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
29
50
|
.getViewerContext()
|
|
30
51
|
.getViewerScopedEntityCompanionForClass(entityClass)
|
|
31
52
|
.getQueryContextProvider()
|
|
@@ -33,7 +54,6 @@ async function canViewerUpdateAsync(entityClass, sourceEntity, queryContext = so
|
|
|
33
54
|
return await canViewerUpdateInternalAsync(entityClass, sourceEntity,
|
|
34
55
|
/* cascadingDeleteCause */ null, queryContext);
|
|
35
56
|
}
|
|
36
|
-
exports.canViewerUpdateAsync = canViewerUpdateAsync;
|
|
37
57
|
async function canViewerUpdateInternalAsync(entityClass, sourceEntity, cascadingDeleteCause, queryContext) {
|
|
38
58
|
const companion = sourceEntity
|
|
39
59
|
.getViewerContext()
|
|
@@ -42,26 +62,43 @@ async function canViewerUpdateInternalAsync(entityClass, sourceEntity, cascading
|
|
|
42
62
|
const evaluationResult = await (0, results_1.asyncResult)(privacyPolicy.authorizeUpdateAsync(sourceEntity.getViewerContext(), queryContext, { previousValue: null, cascadingDeleteCause }, sourceEntity, companion.getMetricsAdapter()));
|
|
43
63
|
if (!evaluationResult.ok) {
|
|
44
64
|
if (evaluationResult.reason instanceof EntityNotAuthorizedError_1.default) {
|
|
45
|
-
return false;
|
|
65
|
+
return { allowed: false, authorizationErrors: [evaluationResult.reason] };
|
|
46
66
|
}
|
|
47
67
|
else {
|
|
48
68
|
throw evaluationResult.reason;
|
|
49
69
|
}
|
|
50
70
|
}
|
|
51
|
-
return
|
|
71
|
+
return { allowed: true };
|
|
52
72
|
}
|
|
53
73
|
/**
|
|
54
74
|
* Check whether a single entity loaded by a viewer can be deleted by that same viewer.
|
|
55
75
|
* This recursively checks edge cascade permissions (EntityEdgeDeletionBehavior) as well.
|
|
56
76
|
*
|
|
57
|
-
* @
|
|
58
|
-
* See remarks for canViewerUpdate.
|
|
77
|
+
* @see canViewerUpdateAsync
|
|
59
78
|
*
|
|
60
79
|
* @param entityClass - class of entity
|
|
61
80
|
* @param sourceEntity - entity loaded by viewer
|
|
62
81
|
* @param queryContext - query context in which to perform the check
|
|
63
82
|
*/
|
|
64
83
|
async function canViewerDeleteAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
84
|
+
.getViewerContext()
|
|
85
|
+
.getViewerScopedEntityCompanionForClass(entityClass)
|
|
86
|
+
.getQueryContextProvider()
|
|
87
|
+
.getQueryContext()) {
|
|
88
|
+
const result = await canViewerDeleteInternalAsync(entityClass, sourceEntity,
|
|
89
|
+
/* cascadingDeleteCause */ null, queryContext);
|
|
90
|
+
return result.allowed;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Check whether a single entity loaded by a viewer can be deleted by that same viewer and return the evaluation result.
|
|
94
|
+
*
|
|
95
|
+
* @see canViewerDeleteAsync
|
|
96
|
+
*
|
|
97
|
+
* @param entityClass - class of entity
|
|
98
|
+
* @param sourceEntity - entity loaded by viewer
|
|
99
|
+
* @param queryContext - query context in which to perform the check
|
|
100
|
+
*/
|
|
101
|
+
async function getCanViewerDeleteResultAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
65
102
|
.getViewerContext()
|
|
66
103
|
.getViewerScopedEntityCompanionForClass(entityClass)
|
|
67
104
|
.getQueryContextProvider()
|
|
@@ -69,7 +106,6 @@ async function canViewerDeleteAsync(entityClass, sourceEntity, queryContext = so
|
|
|
69
106
|
return await canViewerDeleteInternalAsync(entityClass, sourceEntity,
|
|
70
107
|
/* cascadingDeleteCause */ null, queryContext);
|
|
71
108
|
}
|
|
72
|
-
exports.canViewerDeleteAsync = canViewerDeleteAsync;
|
|
73
109
|
async function canViewerDeleteInternalAsync(entityClass, sourceEntity, cascadingDeleteCause, queryContext) {
|
|
74
110
|
const viewerContext = sourceEntity.getViewerContext();
|
|
75
111
|
const entityCompanionProvider = viewerContext.entityCompanionProvider;
|
|
@@ -80,7 +116,7 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, cascading
|
|
|
80
116
|
const evaluationResult = await (0, results_1.asyncResult)(privacyPolicy.authorizeDeleteAsync(sourceEntity.getViewerContext(), queryContext, { previousValue: null, cascadingDeleteCause }, sourceEntity, viewerScopedCompanion.getMetricsAdapter()));
|
|
81
117
|
if (!evaluationResult.ok) {
|
|
82
118
|
if (evaluationResult.reason instanceof EntityNotAuthorizedError_1.default) {
|
|
83
|
-
return false;
|
|
119
|
+
return { allowed: false, authorizationErrors: [evaluationResult.reason] };
|
|
84
120
|
}
|
|
85
121
|
else {
|
|
86
122
|
throw evaluationResult.reason;
|
|
@@ -119,42 +155,75 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, cascading
|
|
|
119
155
|
if (associatedConfiguration !== entityConfiguration) {
|
|
120
156
|
continue;
|
|
121
157
|
}
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
158
|
+
const edgeDeletionPermissionInferenceBehavior = association.edgeDeletionAuthorizationInferenceBehavior;
|
|
159
|
+
let entityResultsToCheckForInboundEdge;
|
|
160
|
+
if (edgeDeletionPermissionInferenceBehavior ===
|
|
161
|
+
EntityFieldDefinition_1.EntityEdgeDeletionAuthorizationInferenceBehavior.ONE_IMPLIES_ALL) {
|
|
162
|
+
const singleEntityToTestForInboundEdge = await loader
|
|
163
|
+
.withAuthorizationResults()
|
|
164
|
+
.loadFirstByFieldEqualityConjunctionAsync([
|
|
165
|
+
{
|
|
166
|
+
fieldName,
|
|
167
|
+
fieldValue: association.associatedEntityLookupByField
|
|
168
|
+
? sourceEntity.getField(association.associatedEntityLookupByField)
|
|
169
|
+
: sourceEntity.getID(),
|
|
170
|
+
},
|
|
171
|
+
], { orderBy: [] });
|
|
172
|
+
entityResultsToCheckForInboundEdge = singleEntityToTestForInboundEdge
|
|
173
|
+
? [singleEntityToTestForInboundEdge]
|
|
174
|
+
: [];
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const entityResultsForInboundEdge = await loader
|
|
178
|
+
.withAuthorizationResults()
|
|
179
|
+
.loadManyByFieldEqualingAsync(fieldName, association.associatedEntityLookupByField
|
|
180
|
+
? sourceEntity.getField(association.associatedEntityLookupByField)
|
|
181
|
+
: sourceEntity.getID());
|
|
182
|
+
entityResultsToCheckForInboundEdge = entityResultsForInboundEdge;
|
|
183
|
+
}
|
|
184
|
+
const failedEntityLoadResults = (0, entityUtils_1.failedResults)(entityResultsToCheckForInboundEdge);
|
|
128
185
|
for (const failedResult of failedEntityLoadResults) {
|
|
129
186
|
if (failedResult.reason instanceof EntityNotAuthorizedError_1.default) {
|
|
130
|
-
return false;
|
|
187
|
+
return { allowed: false, authorizationErrors: [failedResult.reason] };
|
|
131
188
|
}
|
|
132
189
|
else {
|
|
133
190
|
throw failedResult.reason;
|
|
134
191
|
}
|
|
135
192
|
}
|
|
136
193
|
// all results should be success at this point due to check above
|
|
137
|
-
const entitiesForInboundEdge =
|
|
194
|
+
const entitiesForInboundEdge = entityResultsToCheckForInboundEdge.map((r) => r.enforceValue());
|
|
138
195
|
switch (association.edgeDeletionBehavior) {
|
|
139
196
|
case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE:
|
|
140
197
|
case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE_ONLY: {
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
198
|
+
const canDeleteEvaluationResults = await Promise.all(entitiesForInboundEdge.map((entity) => canViewerDeleteInternalAsync(inboundEdge, entity, newCascadingDeleteCause, queryContext)));
|
|
199
|
+
const reducedEvaluationResult = reduceEvaluationResults(canDeleteEvaluationResults);
|
|
200
|
+
if (!reducedEvaluationResult.allowed) {
|
|
201
|
+
return reducedEvaluationResult;
|
|
144
202
|
}
|
|
145
203
|
break;
|
|
146
204
|
}
|
|
147
205
|
case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL:
|
|
148
206
|
case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL_INVALIDATE_CACHE_ONLY: {
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
207
|
+
const canUpdateEvaluationResults = await Promise.all(entitiesForInboundEdge.map((entity) => canViewerUpdateInternalAsync(inboundEdge, entity, newCascadingDeleteCause, queryContext)));
|
|
208
|
+
const reducedEvaluationResult = reduceEvaluationResults(canUpdateEvaluationResults);
|
|
209
|
+
if (!reducedEvaluationResult.allowed) {
|
|
210
|
+
return reducedEvaluationResult;
|
|
152
211
|
}
|
|
153
212
|
break;
|
|
154
213
|
}
|
|
155
214
|
}
|
|
156
215
|
}
|
|
157
216
|
}
|
|
158
|
-
return true;
|
|
217
|
+
return { allowed: true };
|
|
218
|
+
}
|
|
219
|
+
function reduceEvaluationResults(evaluationResults) {
|
|
220
|
+
const [successResults, failureResults] = (0, entityUtils_1.partitionArray)(evaluationResults, (evaluationResult) => evaluationResult.allowed);
|
|
221
|
+
if (successResults.length === evaluationResults.length) {
|
|
222
|
+
return { allowed: true };
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
allowed: false,
|
|
226
|
+
authorizationErrors: failureResults.flatMap((failureResult) => failureResult.authorizationErrors),
|
|
227
|
+
};
|
|
159
228
|
}
|
|
160
229
|
//# sourceMappingURL=EntityPrivacyUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPrivacyUtils.js","sourceRoot":"","sources":["../../src/utils/EntityPrivacyUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EntityPrivacyUtils.js","sourceRoot":"","sources":["../../src/utils/EntityPrivacyUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const nullthrows_1 = __importDefault(require("nullthrows"));
|
|
6
30
|
const Entity_1 = __importDefault(require("../../Entity"));
|
|
7
31
|
const EntityConfiguration_1 = __importDefault(require("../../EntityConfiguration"));
|
|
8
32
|
const EntityFieldDefinition_1 = require("../../EntityFieldDefinition");
|
|
9
33
|
const EntityFields_1 = require("../../EntityFields");
|
|
10
|
-
const EntityPrivacyPolicy_1 =
|
|
34
|
+
const EntityPrivacyPolicy_1 = __importStar(require("../../EntityPrivacyPolicy"));
|
|
11
35
|
const ViewerContext_1 = __importDefault(require("../../ViewerContext"));
|
|
12
36
|
const AlwaysAllowPrivacyPolicyRule_1 = __importDefault(require("../../rules/AlwaysAllowPrivacyPolicyRule"));
|
|
13
37
|
const AlwaysDenyPrivacyPolicyRule_1 = __importDefault(require("../../rules/AlwaysDenyPrivacyPolicyRule"));
|
|
14
38
|
const PrivacyPolicyRule_1 = require("../../rules/PrivacyPolicyRule");
|
|
15
39
|
const EntityPrivacyUtils_1 = require("../EntityPrivacyUtils");
|
|
16
40
|
const createUnitTestEntityCompanionProvider_1 = require("../testing/createUnitTestEntityCompanionProvider");
|
|
41
|
+
function assertEntityPrivacyEvaluationResultFailure(evaluationResult) {
|
|
42
|
+
if (evaluationResult.allowed) {
|
|
43
|
+
throw new Error('Evaluation result not failure');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function expectAuthorizationError(evaluationResult, { entityId, action }) {
|
|
47
|
+
expect(evaluationResult.allowed).toBe(false);
|
|
48
|
+
assertEntityPrivacyEvaluationResultFailure(evaluationResult);
|
|
49
|
+
const authorizationErrors = evaluationResult.authorizationErrors;
|
|
50
|
+
expect(authorizationErrors).toHaveLength(1);
|
|
51
|
+
const authorizationError = (0, nullthrows_1.default)(authorizationErrors[0]);
|
|
52
|
+
expect(authorizationError.message).toContain(entityId);
|
|
53
|
+
expect(authorizationError.message).toContain(EntityPrivacyPolicy_1.EntityAuthorizationAction[action]);
|
|
54
|
+
}
|
|
17
55
|
describe(EntityPrivacyUtils_1.canViewerUpdateAsync, () => {
|
|
18
56
|
it('appropriately executes update privacy policy', async () => {
|
|
19
57
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
@@ -21,6 +59,8 @@ describe(EntityPrivacyUtils_1.canViewerUpdateAsync, () => {
|
|
|
21
59
|
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext).enforceCreateAsync();
|
|
22
60
|
const canViewerUpdate = await (0, EntityPrivacyUtils_1.canViewerUpdateAsync)(SimpleTestDenyDeleteEntity, testEntity);
|
|
23
61
|
expect(canViewerUpdate).toBe(true);
|
|
62
|
+
const canViewerUpdateResult = await (0, EntityPrivacyUtils_1.getCanViewerUpdateResultAsync)(SimpleTestDenyDeleteEntity, testEntity);
|
|
63
|
+
expect(canViewerUpdateResult.allowed).toBe(true);
|
|
24
64
|
});
|
|
25
65
|
it('denies when policy denies', async () => {
|
|
26
66
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
@@ -28,12 +68,18 @@ describe(EntityPrivacyUtils_1.canViewerUpdateAsync, () => {
|
|
|
28
68
|
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).enforceCreateAsync();
|
|
29
69
|
const canViewerUpdate = await (0, EntityPrivacyUtils_1.canViewerUpdateAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
30
70
|
expect(canViewerUpdate).toBe(false);
|
|
71
|
+
const canViewerUpdateResult = await (0, EntityPrivacyUtils_1.getCanViewerUpdateResultAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
72
|
+
expectAuthorizationError(canViewerUpdateResult, {
|
|
73
|
+
entityId: testEntity.getID(),
|
|
74
|
+
action: EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE,
|
|
75
|
+
});
|
|
31
76
|
});
|
|
32
77
|
it('rethrows non-authorization errors', async () => {
|
|
33
78
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
34
79
|
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
35
80
|
const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext).enforceCreateAsync();
|
|
36
81
|
await expect((0, EntityPrivacyUtils_1.canViewerUpdateAsync)(SimpleTestThrowOtherErrorEntity, testEntity)).rejects.toThrow('update error');
|
|
82
|
+
await expect((0, EntityPrivacyUtils_1.getCanViewerUpdateResultAsync)(SimpleTestThrowOtherErrorEntity, testEntity)).rejects.toThrow('update error');
|
|
37
83
|
});
|
|
38
84
|
});
|
|
39
85
|
describe(EntityPrivacyUtils_1.canViewerDeleteAsync, () => {
|
|
@@ -43,6 +89,8 @@ describe(EntityPrivacyUtils_1.canViewerDeleteAsync, () => {
|
|
|
43
89
|
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).enforceCreateAsync();
|
|
44
90
|
const canViewerDelete = await (0, EntityPrivacyUtils_1.canViewerDeleteAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
45
91
|
expect(canViewerDelete).toBe(true);
|
|
92
|
+
const canViewerDeleteResult = await (0, EntityPrivacyUtils_1.getCanViewerDeleteResultAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
93
|
+
expect(canViewerDeleteResult.allowed).toBe(true);
|
|
46
94
|
});
|
|
47
95
|
it('denies when policy denies', async () => {
|
|
48
96
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
@@ -50,28 +98,43 @@ describe(EntityPrivacyUtils_1.canViewerDeleteAsync, () => {
|
|
|
50
98
|
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext).enforceCreateAsync();
|
|
51
99
|
const canViewerDelete = await (0, EntityPrivacyUtils_1.canViewerDeleteAsync)(SimpleTestDenyDeleteEntity, testEntity);
|
|
52
100
|
expect(canViewerDelete).toBe(false);
|
|
101
|
+
const canViewerDeleteResult = await (0, EntityPrivacyUtils_1.getCanViewerDeleteResultAsync)(SimpleTestDenyDeleteEntity, testEntity);
|
|
102
|
+
expectAuthorizationError(canViewerDeleteResult, {
|
|
103
|
+
entityId: testEntity.getID(),
|
|
104
|
+
action: EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE,
|
|
105
|
+
});
|
|
53
106
|
});
|
|
54
107
|
it('denies when recursive policy denies for CASCADE_DELETE', async () => {
|
|
55
108
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
56
109
|
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
57
110
|
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).enforceCreateAsync();
|
|
58
111
|
// add another entity referencing testEntity that would cascade deletion to itself when testEntity is deleted
|
|
59
|
-
await LeafDenyDeleteEntity.creator(viewerContext)
|
|
112
|
+
const leafEntity = await LeafDenyDeleteEntity.creator(viewerContext)
|
|
60
113
|
.setField('simple_test_deny_update_cascade_delete_id', testEntity.getID())
|
|
61
114
|
.enforceCreateAsync();
|
|
62
115
|
const canViewerDelete = await (0, EntityPrivacyUtils_1.canViewerDeleteAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
63
116
|
expect(canViewerDelete).toBe(false);
|
|
117
|
+
const canViewerDeleteResult = await (0, EntityPrivacyUtils_1.getCanViewerDeleteResultAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
118
|
+
expectAuthorizationError(canViewerDeleteResult, {
|
|
119
|
+
entityId: leafEntity.getID(),
|
|
120
|
+
action: EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE,
|
|
121
|
+
});
|
|
64
122
|
});
|
|
65
123
|
it('denies when recursive policy denies for SET_NULL', async () => {
|
|
66
124
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
67
125
|
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
68
126
|
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).enforceCreateAsync();
|
|
69
127
|
// add another entity referencing testEntity that would set null to its column when testEntity is deleted
|
|
70
|
-
await LeafDenyUpdateEntity.creator(viewerContext)
|
|
128
|
+
const leafEntity = await LeafDenyUpdateEntity.creator(viewerContext)
|
|
71
129
|
.setField('simple_test_deny_update_set_null_id', testEntity.getID())
|
|
72
130
|
.enforceCreateAsync();
|
|
73
131
|
const canViewerDelete = await (0, EntityPrivacyUtils_1.canViewerDeleteAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
74
132
|
expect(canViewerDelete).toBe(false);
|
|
133
|
+
const canViewerDeleteResult = await (0, EntityPrivacyUtils_1.getCanViewerDeleteResultAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
134
|
+
expectAuthorizationError(canViewerDeleteResult, {
|
|
135
|
+
entityId: leafEntity.getID(),
|
|
136
|
+
action: EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE,
|
|
137
|
+
});
|
|
75
138
|
});
|
|
76
139
|
it('allows when recursive policy allows for CASCADE_DELETE and SET_NULL', async () => {
|
|
77
140
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
@@ -87,22 +150,30 @@ describe(EntityPrivacyUtils_1.canViewerDeleteAsync, () => {
|
|
|
87
150
|
.enforceCreateAsync();
|
|
88
151
|
const canViewerDelete = await (0, EntityPrivacyUtils_1.canViewerDeleteAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
89
152
|
expect(canViewerDelete).toBe(true);
|
|
153
|
+
const canViewerDeleteResult = await (0, EntityPrivacyUtils_1.getCanViewerDeleteResultAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
154
|
+
expect(canViewerDeleteResult.allowed).toBe(true);
|
|
90
155
|
});
|
|
91
156
|
it('rethrows non-authorization errors', async () => {
|
|
92
157
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
93
158
|
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
94
159
|
const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext).enforceCreateAsync();
|
|
95
160
|
await expect((0, EntityPrivacyUtils_1.canViewerDeleteAsync)(SimpleTestThrowOtherErrorEntity, testEntity)).rejects.toThrowError('delete error');
|
|
161
|
+
await expect((0, EntityPrivacyUtils_1.getCanViewerDeleteResultAsync)(SimpleTestThrowOtherErrorEntity, testEntity)).rejects.toThrowError('delete error');
|
|
96
162
|
});
|
|
97
163
|
it('returns false when edge cannot be read', async () => {
|
|
98
164
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
99
165
|
const viewerContext = new ViewerContext_1.default(companionProvider);
|
|
100
166
|
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).enforceCreateAsync();
|
|
101
|
-
await LeafDenyReadEntity.creator(viewerContext)
|
|
167
|
+
const leafEntity = await LeafDenyReadEntity.creator(viewerContext)
|
|
102
168
|
.setField('simple_test_id', testEntity.getID())
|
|
103
169
|
.enforceCreateAsync();
|
|
104
170
|
const canViewerDelete = await (0, EntityPrivacyUtils_1.canViewerDeleteAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
105
171
|
expect(canViewerDelete).toBe(false);
|
|
172
|
+
const canViewerDeleteResult = await (0, EntityPrivacyUtils_1.getCanViewerDeleteResultAsync)(SimpleTestDenyUpdateEntity, testEntity);
|
|
173
|
+
expectAuthorizationError(canViewerDeleteResult, {
|
|
174
|
+
entityId: leafEntity.getID(),
|
|
175
|
+
action: EntityPrivacyPolicy_1.EntityAuthorizationAction.READ,
|
|
176
|
+
});
|
|
106
177
|
});
|
|
107
178
|
it('rethrows non-authorization edge read errors', async () => {
|
|
108
179
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
@@ -112,6 +183,7 @@ describe(EntityPrivacyUtils_1.canViewerDeleteAsync, () => {
|
|
|
112
183
|
.setField('simple_test_id', testEntity.getID())
|
|
113
184
|
.enforceCreateAsync();
|
|
114
185
|
await expect((0, EntityPrivacyUtils_1.canViewerDeleteAsync)(SimpleTestDenyUpdateEntity, testEntity)).rejects.toThrowError('read in cascading delete error');
|
|
186
|
+
await expect((0, EntityPrivacyUtils_1.getCanViewerDeleteResultAsync)(SimpleTestDenyUpdateEntity, testEntity)).rejects.toThrowError('read in cascading delete error');
|
|
115
187
|
});
|
|
116
188
|
it('supports running within a transaction', async () => {
|
|
117
189
|
const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
|
|
@@ -125,6 +197,15 @@ describe(EntityPrivacyUtils_1.canViewerDeleteAsync, () => {
|
|
|
125
197
|
return await (0, EntityPrivacyUtils_1.canViewerDeleteAsync)(SimpleTestDenyUpdateEntity, testEntity, queryContext);
|
|
126
198
|
});
|
|
127
199
|
expect(canViewerDelete).toBe(true);
|
|
200
|
+
const canViewerDeleteResult = await viewerContext.runInTransactionForDatabaseAdaptorFlavorAsync('postgres', async (queryContext) => {
|
|
201
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext, queryContext).enforceCreateAsync();
|
|
202
|
+
await LeafDenyReadEntity.creator(viewerContext, queryContext)
|
|
203
|
+
.setField('simple_test_id', testEntity.getID())
|
|
204
|
+
.enforceCreateAsync();
|
|
205
|
+
// this would fail if transactions weren't supported or correctly passed through
|
|
206
|
+
return await (0, EntityPrivacyUtils_1.getCanViewerDeleteResultAsync)(SimpleTestDenyUpdateEntity, testEntity, queryContext);
|
|
207
|
+
});
|
|
208
|
+
expect(canViewerDeleteResult.allowed).toBe(true);
|
|
128
209
|
});
|
|
129
210
|
});
|
|
130
211
|
class DenyUpdateEntityPrivacyPolicy extends EntityPrivacyPolicy_1.default {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPrivacyUtils-test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/EntityPrivacyUtils-test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EntityPrivacyUtils-test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/EntityPrivacyUtils-test.ts"],"names":[],"mappings":"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"}
|
package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|