@expo/entity 0.38.0 → 0.40.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/AuthorizationResultBasedEntityAssociationLoader.d.ts +99 -0
- package/build/AuthorizationResultBasedEntityAssociationLoader.js +124 -0
- package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -0
- package/build/AuthorizationResultBasedEntityLoader.d.ts +1 -1
- package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
- package/build/{EntityMutator.d.ts → AuthorizationResultBasedEntityMutator.d.ts} +5 -17
- package/build/{EntityMutator.js → AuthorizationResultBasedEntityMutator.js} +22 -48
- package/build/AuthorizationResultBasedEntityMutator.js.map +1 -0
- package/build/EnforcingEntityAssociationLoader.d.ts +79 -0
- package/build/EnforcingEntityAssociationLoader.js +62 -0
- package/build/EnforcingEntityAssociationLoader.js.map +1 -0
- package/build/EnforcingEntityCreator.d.ts +24 -0
- package/build/EnforcingEntityCreator.js +32 -0
- package/build/EnforcingEntityCreator.js.map +1 -0
- package/build/EnforcingEntityDeleter.d.ts +17 -0
- package/build/EnforcingEntityDeleter.js +22 -0
- package/build/EnforcingEntityDeleter.js.map +1 -0
- package/build/EnforcingEntityUpdater.d.ts +24 -0
- package/build/EnforcingEntityUpdater.js +32 -0
- package/build/EnforcingEntityUpdater.js.map +1 -0
- package/build/Entity.d.ts +8 -12
- package/build/Entity.js +9 -34
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +12 -91
- package/build/EntityAssociationLoader.js +20 -126
- package/build/EntityAssociationLoader.js.map +1 -1
- package/build/EntityCompanionProvider.d.ts +2 -2
- package/build/EntityCompanionProvider.js.map +1 -1
- package/build/EntityCreator.d.ts +27 -0
- package/build/EntityCreator.js +39 -0
- package/build/EntityCreator.js.map +1 -0
- package/build/EntityDatabaseAdapter.js +2 -2
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityDeleter.d.ts +27 -0
- package/build/EntityDeleter.js +40 -0
- package/build/EntityDeleter.js.map +1 -0
- package/build/EntityLoader.d.ts +4 -14
- package/build/EntityLoader.js +7 -20
- package/build/EntityLoader.js.map +1 -1
- package/build/EntityLoaderFactory.d.ts +2 -2
- package/build/EntityLoaderFactory.js +4 -2
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityMutatorFactory.d.ts +4 -4
- package/build/EntityMutatorFactory.js +4 -4
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.d.ts +3 -3
- package/build/EntitySecondaryCacheLoader.js +1 -3
- package/build/EntitySecondaryCacheLoader.js.map +1 -1
- package/build/EntityUpdater.d.ts +27 -0
- package/build/EntityUpdater.js +40 -0
- package/build/EntityUpdater.js.map +1 -0
- package/build/ReadonlyEntity.d.ts +2 -2
- package/build/ReadonlyEntity.js +4 -6
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +2 -2
- package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
- package/build/ViewerScopedEntityMutatorFactory.d.ts +4 -4
- package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +1 -0
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +273 -0
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +1 -0
- package/build/__tests__/{EntityLoader-constructor-test.js → AuthorizationResultBasedEntityLoader-constructor-test.js} +11 -11
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +1 -0
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +1 -0
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +401 -0
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +1 -0
- package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +1 -0
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js +115 -0
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +1 -0
- package/build/__tests__/Entity-test.js +23 -5
- package/build/__tests__/Entity-test.js.map +1 -1
- package/build/__tests__/EntityAssociationLoader-test.js +14 -184
- package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js +34 -12
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityCompanion-test.js +17 -7
- package/build/__tests__/EntityCompanion-test.js.map +1 -1
- package/build/__tests__/EntityDatabaseAdapter-test.js.map +1 -1
- package/build/__tests__/EntityEdges-test.js +41 -23
- package/build/__tests__/EntityEdges-test.js.map +1 -1
- package/build/__tests__/EntityLoader-test.js +22 -386
- package/build/__tests__/EntityLoader-test.js.map +1 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +4 -3
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
- package/build/__tests__/EntityMutator-test.js +67 -70
- package/build/__tests__/EntityMutator-test.js.map +1 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +17 -7
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.js +7 -7
- package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +36 -24
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
- package/build/__tests__/ReadonlyEntity-test.js +1 -1
- package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +4 -2
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +7 -4
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +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/errors/EntityCacheAdapterError.js +17 -7
- package/build/errors/EntityCacheAdapterError.js.map +1 -1
- package/build/errors/EntityDatabaseAdapterError.js +17 -7
- package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.js +17 -7
- package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
- package/build/errors/EntityNotAuthorizedError.js +17 -7
- package/build/errors/EntityNotAuthorizedError.js.map +1 -1
- package/build/errors/EntityNotFoundError.js +17 -7
- package/build/errors/EntityNotFoundError.js.map +1 -1
- package/build/index.d.ts +19 -11
- package/build/index.js +24 -7
- package/build/index.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/__tests__/EntityDataManager-test.js +42 -32
- package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +17 -7
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js +17 -7
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js +17 -7
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js +17 -7
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/utils/EntityPrivacyUtils.d.ts +32 -4
- package/build/utils/EntityPrivacyUtils.js +68 -24
- package/build/utils/EntityPrivacyUtils.js.map +1 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.js +148 -23
- package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +8 -5
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +1 -1
- 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 +17 -7
- package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
- package/build/utils/testing/StubQueryContextProvider.d.ts +1 -3
- package/build/utils/testing/StubQueryContextProvider.js +1 -3
- package/build/utils/testing/StubQueryContextProvider.js.map +1 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js +2 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +1 -1
- package/build/utils/testing/describeFieldTestCase.js +1 -1
- package/build/utils/testing/describeFieldTestCase.js.map +1 -1
- package/package.json +19 -3
- package/src/AuthorizationResultBasedEntityAssociationLoader.ts +492 -0
- package/src/AuthorizationResultBasedEntityLoader.ts +2 -2
- package/src/{EntityMutator.ts → AuthorizationResultBasedEntityMutator.ts} +62 -58
- package/src/EnforcingEntityAssociationLoader.ts +390 -0
- package/src/EnforcingEntityCreator.ts +55 -0
- package/src/EnforcingEntityDeleter.ts +44 -0
- package/src/EnforcingEntityUpdater.ts +55 -0
- package/src/Entity.ts +20 -65
- package/src/EntityAssociationLoader.ts +38 -495
- package/src/EntityCompanionProvider.ts +5 -2
- package/src/EntityCreator.ts +73 -0
- package/src/EntityDeleter.ts +73 -0
- package/src/EntityLoader.ts +10 -49
- package/src/EntityLoaderFactory.ts +20 -3
- package/src/EntityMutatorFactory.ts +32 -7
- package/src/EntitySecondaryCacheLoader.ts +5 -7
- package/src/EntityUpdater.ts +73 -0
- package/src/ReadonlyEntity.ts +14 -13
- package/src/ViewerScopedEntityLoaderFactory.ts +9 -2
- package/src/ViewerScopedEntityMutatorFactory.ts +29 -4
- package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +354 -0
- package/src/__tests__/{EntityLoader-constructor-test.ts → AuthorizationResultBasedEntityLoader-constructor-test.ts} +17 -10
- package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +730 -0
- package/src/__tests__/EnforcingEntityAssociationLoader-test.ts +253 -0
- package/src/__tests__/Entity-test.ts +24 -5
- package/src/__tests__/EntityAssociationLoader-test.ts +16 -259
- package/src/__tests__/EntityCommonUseCases-test.ts +20 -8
- package/src/__tests__/EntityCompanion-test.ts +1 -1
- package/src/__tests__/EntityDatabaseAdapter-test.ts +6 -6
- package/src/__tests__/EntityEdges-test.ts +24 -16
- package/src/__tests__/EntityLoader-test.ts +25 -675
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +4 -3
- package/src/__tests__/EntityMutator-test.ts +116 -103
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +7 -7
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +36 -24
- package/src/__tests__/ReadonlyEntity-test.ts +1 -1
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +4 -2
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +7 -4
- package/src/__tests__/entityUtils-test.ts +12 -0
- package/src/entityUtils.ts +24 -9
- package/src/index.ts +19 -11
- package/src/internal/EntityFieldTransformationUtils.ts +2 -2
- package/src/internal/__tests__/EntityDataManager-test.ts +29 -29
- package/src/utils/EntityPrivacyUtils.ts +188 -107
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +169 -29
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +8 -5
- 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
- package/src/utils/testing/StubQueryContextProvider.ts +1 -3
- package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +3 -1
- package/build/EntityMutator.js.map +0 -1
- package/build/__tests__/EntityLoader-constructor-test.js.map +0 -1
- /package/build/__tests__/{EntityLoader-constructor-test.d.ts → AuthorizationResultBasedEntityLoader-constructor-test.d.ts} +0 -0
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import nullthrows from 'nullthrows';
|
|
2
|
+
|
|
1
3
|
import Entity from '../../Entity';
|
|
2
4
|
import { EntityCompanionDefinition } from '../../EntityCompanionProvider';
|
|
3
5
|
import EntityConfiguration from '../../EntityConfiguration';
|
|
4
6
|
import { EntityEdgeDeletionBehavior } from '../../EntityFieldDefinition';
|
|
5
7
|
import { UUIDField } from '../../EntityFields';
|
|
6
8
|
import EntityPrivacyPolicy, {
|
|
9
|
+
EntityAuthorizationAction,
|
|
7
10
|
EntityPrivacyPolicyEvaluationContext,
|
|
8
11
|
} from '../../EntityPrivacyPolicy';
|
|
9
12
|
import { EntityQueryContext } from '../../EntityQueryContext';
|
|
@@ -12,34 +15,83 @@ import ViewerContext from '../../ViewerContext';
|
|
|
12
15
|
import AlwaysAllowPrivacyPolicyRule from '../../rules/AlwaysAllowPrivacyPolicyRule';
|
|
13
16
|
import AlwaysDenyPrivacyPolicyRule from '../../rules/AlwaysDenyPrivacyPolicyRule';
|
|
14
17
|
import { RuleEvaluationResult } from '../../rules/PrivacyPolicyRule';
|
|
15
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
canViewerDeleteAsync,
|
|
20
|
+
canViewerUpdateAsync,
|
|
21
|
+
EntityPrivacyEvaluationResult,
|
|
22
|
+
EntityPrivacyEvaluationResultFailure,
|
|
23
|
+
getCanViewerDeleteResultAsync,
|
|
24
|
+
getCanViewerUpdateResultAsync,
|
|
25
|
+
} from '../EntityPrivacyUtils';
|
|
16
26
|
import { createUnitTestEntityCompanionProvider } from '../testing/createUnitTestEntityCompanionProvider';
|
|
17
27
|
|
|
28
|
+
function assertEntityPrivacyEvaluationResultFailure(
|
|
29
|
+
evaluationResult: EntityPrivacyEvaluationResult,
|
|
30
|
+
): asserts evaluationResult is EntityPrivacyEvaluationResultFailure {
|
|
31
|
+
if (evaluationResult.allowed) {
|
|
32
|
+
throw new Error('Evaluation result not failure');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function expectAuthorizationError(
|
|
37
|
+
evaluationResult: EntityPrivacyEvaluationResult,
|
|
38
|
+
{ entityId, action }: { entityId: string; action: EntityAuthorizationAction },
|
|
39
|
+
): void {
|
|
40
|
+
expect(evaluationResult.allowed).toBe(false);
|
|
41
|
+
assertEntityPrivacyEvaluationResultFailure(evaluationResult);
|
|
42
|
+
const authorizationErrors = evaluationResult.authorizationErrors;
|
|
43
|
+
expect(authorizationErrors).toHaveLength(1);
|
|
44
|
+
const authorizationError = nullthrows(authorizationErrors[0]);
|
|
45
|
+
expect(authorizationError.message).toContain(entityId);
|
|
46
|
+
expect(authorizationError.message).toContain(EntityAuthorizationAction[action]);
|
|
47
|
+
}
|
|
48
|
+
|
|
18
49
|
describe(canViewerUpdateAsync, () => {
|
|
19
50
|
it('appropriately executes update privacy policy', async () => {
|
|
20
51
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
21
52
|
const viewerContext = new ViewerContext(companionProvider);
|
|
22
|
-
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext)
|
|
53
|
+
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext)
|
|
54
|
+
.enforcing()
|
|
55
|
+
.createAsync();
|
|
23
56
|
const canViewerUpdate = await canViewerUpdateAsync(SimpleTestDenyDeleteEntity, testEntity);
|
|
24
57
|
expect(canViewerUpdate).toBe(true);
|
|
58
|
+
const canViewerUpdateResult = await getCanViewerUpdateResultAsync(
|
|
59
|
+
SimpleTestDenyDeleteEntity,
|
|
60
|
+
testEntity,
|
|
61
|
+
);
|
|
62
|
+
expect(canViewerUpdateResult.allowed).toBe(true);
|
|
25
63
|
});
|
|
26
64
|
|
|
27
65
|
it('denies when policy denies', async () => {
|
|
28
66
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
29
67
|
const viewerContext = new ViewerContext(companionProvider);
|
|
30
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
68
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
69
|
+
.enforcing()
|
|
70
|
+
.createAsync();
|
|
31
71
|
const canViewerUpdate = await canViewerUpdateAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
32
72
|
expect(canViewerUpdate).toBe(false);
|
|
73
|
+
const canViewerUpdateResult = await getCanViewerUpdateResultAsync(
|
|
74
|
+
SimpleTestDenyUpdateEntity,
|
|
75
|
+
testEntity,
|
|
76
|
+
);
|
|
77
|
+
expectAuthorizationError(canViewerUpdateResult, {
|
|
78
|
+
entityId: testEntity.getID(),
|
|
79
|
+
action: EntityAuthorizationAction.UPDATE,
|
|
80
|
+
});
|
|
33
81
|
});
|
|
34
82
|
|
|
35
83
|
it('rethrows non-authorization errors', async () => {
|
|
36
84
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
37
85
|
const viewerContext = new ViewerContext(companionProvider);
|
|
38
|
-
const testEntity =
|
|
39
|
-
|
|
86
|
+
const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext)
|
|
87
|
+
.enforcing()
|
|
88
|
+
.createAsync();
|
|
40
89
|
await expect(canViewerUpdateAsync(SimpleTestThrowOtherErrorEntity, testEntity)).rejects.toThrow(
|
|
41
90
|
'update error',
|
|
42
91
|
);
|
|
92
|
+
await expect(
|
|
93
|
+
getCanViewerUpdateResultAsync(SimpleTestThrowOtherErrorEntity, testEntity),
|
|
94
|
+
).rejects.toThrow('update error');
|
|
43
95
|
});
|
|
44
96
|
});
|
|
45
97
|
|
|
@@ -47,91 +99,160 @@ describe(canViewerDeleteAsync, () => {
|
|
|
47
99
|
it('appropriately executes update privacy policy', async () => {
|
|
48
100
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
49
101
|
const viewerContext = new ViewerContext(companionProvider);
|
|
50
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
102
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
103
|
+
.enforcing()
|
|
104
|
+
.createAsync();
|
|
51
105
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
52
106
|
expect(canViewerDelete).toBe(true);
|
|
107
|
+
const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
|
|
108
|
+
SimpleTestDenyUpdateEntity,
|
|
109
|
+
testEntity,
|
|
110
|
+
);
|
|
111
|
+
expect(canViewerDeleteResult.allowed).toBe(true);
|
|
53
112
|
});
|
|
54
113
|
|
|
55
114
|
it('denies when policy denies', async () => {
|
|
56
115
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
57
116
|
const viewerContext = new ViewerContext(companionProvider);
|
|
58
|
-
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext)
|
|
117
|
+
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext)
|
|
118
|
+
.enforcing()
|
|
119
|
+
.createAsync();
|
|
59
120
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyDeleteEntity, testEntity);
|
|
60
121
|
expect(canViewerDelete).toBe(false);
|
|
122
|
+
const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
|
|
123
|
+
SimpleTestDenyDeleteEntity,
|
|
124
|
+
testEntity,
|
|
125
|
+
);
|
|
126
|
+
expectAuthorizationError(canViewerDeleteResult, {
|
|
127
|
+
entityId: testEntity.getID(),
|
|
128
|
+
action: EntityAuthorizationAction.DELETE,
|
|
129
|
+
});
|
|
61
130
|
});
|
|
62
131
|
|
|
63
132
|
it('denies when recursive policy denies for CASCADE_DELETE', async () => {
|
|
64
133
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
65
134
|
const viewerContext = new ViewerContext(companionProvider);
|
|
66
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
135
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
136
|
+
.enforcing()
|
|
137
|
+
.createAsync();
|
|
67
138
|
// add another entity referencing testEntity that would cascade deletion to itself when testEntity is deleted
|
|
68
|
-
await LeafDenyDeleteEntity.creator(viewerContext)
|
|
139
|
+
const leafEntity = await LeafDenyDeleteEntity.creator(viewerContext)
|
|
140
|
+
.enforcing()
|
|
69
141
|
.setField('simple_test_deny_update_cascade_delete_id', testEntity.getID())
|
|
70
|
-
.
|
|
142
|
+
.createAsync();
|
|
71
143
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
72
144
|
expect(canViewerDelete).toBe(false);
|
|
145
|
+
const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
|
|
146
|
+
SimpleTestDenyUpdateEntity,
|
|
147
|
+
testEntity,
|
|
148
|
+
);
|
|
149
|
+
expectAuthorizationError(canViewerDeleteResult, {
|
|
150
|
+
entityId: leafEntity.getID(),
|
|
151
|
+
action: EntityAuthorizationAction.DELETE,
|
|
152
|
+
});
|
|
73
153
|
});
|
|
74
154
|
|
|
75
155
|
it('denies when recursive policy denies for SET_NULL', async () => {
|
|
76
156
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
77
157
|
const viewerContext = new ViewerContext(companionProvider);
|
|
78
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
158
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
159
|
+
.enforcing()
|
|
160
|
+
.createAsync();
|
|
79
161
|
// add another entity referencing testEntity that would set null to its column when testEntity is deleted
|
|
80
|
-
await LeafDenyUpdateEntity.creator(viewerContext)
|
|
162
|
+
const leafEntity = await LeafDenyUpdateEntity.creator(viewerContext)
|
|
163
|
+
.enforcing()
|
|
81
164
|
.setField('simple_test_deny_update_set_null_id', testEntity.getID())
|
|
82
|
-
.
|
|
165
|
+
.createAsync();
|
|
83
166
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
84
167
|
expect(canViewerDelete).toBe(false);
|
|
168
|
+
const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
|
|
169
|
+
SimpleTestDenyUpdateEntity,
|
|
170
|
+
testEntity,
|
|
171
|
+
);
|
|
172
|
+
expectAuthorizationError(canViewerDeleteResult, {
|
|
173
|
+
entityId: leafEntity.getID(),
|
|
174
|
+
action: EntityAuthorizationAction.UPDATE,
|
|
175
|
+
});
|
|
85
176
|
});
|
|
86
177
|
|
|
87
178
|
it('allows when recursive policy allows for CASCADE_DELETE and SET_NULL', async () => {
|
|
88
179
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
89
180
|
const viewerContext = new ViewerContext(companionProvider);
|
|
90
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
181
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
182
|
+
.enforcing()
|
|
183
|
+
.createAsync();
|
|
91
184
|
// add another entity referencing testEntity that would cascade deletion to itself when testEntity is deleted
|
|
92
185
|
await LeafDenyUpdateEntity.creator(viewerContext)
|
|
186
|
+
.enforcing()
|
|
93
187
|
.setField('simple_test_deny_update_cascade_delete_id', testEntity.getID())
|
|
94
|
-
.
|
|
188
|
+
.createAsync();
|
|
95
189
|
// add another entity referencing testEntity that would set null to its column when testEntity is deleted
|
|
96
190
|
await LeafDenyDeleteEntity.creator(viewerContext)
|
|
191
|
+
.enforcing()
|
|
97
192
|
.setField('simple_test_deny_update_set_null_id', testEntity.getID())
|
|
98
|
-
.
|
|
193
|
+
.createAsync();
|
|
99
194
|
|
|
100
195
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
101
196
|
expect(canViewerDelete).toBe(true);
|
|
197
|
+
const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
|
|
198
|
+
SimpleTestDenyUpdateEntity,
|
|
199
|
+
testEntity,
|
|
200
|
+
);
|
|
201
|
+
expect(canViewerDeleteResult.allowed).toBe(true);
|
|
102
202
|
});
|
|
103
203
|
|
|
104
204
|
it('rethrows non-authorization errors', async () => {
|
|
105
205
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
106
206
|
const viewerContext = new ViewerContext(companionProvider);
|
|
107
|
-
const testEntity =
|
|
108
|
-
|
|
207
|
+
const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext)
|
|
208
|
+
.enforcing()
|
|
209
|
+
.createAsync();
|
|
109
210
|
await expect(
|
|
110
211
|
canViewerDeleteAsync(SimpleTestThrowOtherErrorEntity, testEntity),
|
|
111
212
|
).rejects.toThrowError('delete error');
|
|
213
|
+
await expect(
|
|
214
|
+
getCanViewerDeleteResultAsync(SimpleTestThrowOtherErrorEntity, testEntity),
|
|
215
|
+
).rejects.toThrowError('delete error');
|
|
112
216
|
});
|
|
113
217
|
|
|
114
218
|
it('returns false when edge cannot be read', async () => {
|
|
115
219
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
116
220
|
const viewerContext = new ViewerContext(companionProvider);
|
|
117
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
118
|
-
|
|
221
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
222
|
+
.enforcing()
|
|
223
|
+
.createAsync();
|
|
224
|
+
const leafEntity = await LeafDenyReadEntity.creator(viewerContext)
|
|
225
|
+
.enforcing()
|
|
119
226
|
.setField('simple_test_id', testEntity.getID())
|
|
120
|
-
.
|
|
227
|
+
.createAsync();
|
|
121
228
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
122
229
|
expect(canViewerDelete).toBe(false);
|
|
230
|
+
const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
|
|
231
|
+
SimpleTestDenyUpdateEntity,
|
|
232
|
+
testEntity,
|
|
233
|
+
);
|
|
234
|
+
expectAuthorizationError(canViewerDeleteResult, {
|
|
235
|
+
entityId: leafEntity.getID(),
|
|
236
|
+
action: EntityAuthorizationAction.READ,
|
|
237
|
+
});
|
|
123
238
|
});
|
|
124
239
|
|
|
125
240
|
it('rethrows non-authorization edge read errors', async () => {
|
|
126
241
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
127
242
|
const viewerContext = new ViewerContext(companionProvider);
|
|
128
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
243
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
244
|
+
.enforcing()
|
|
245
|
+
.createAsync();
|
|
129
246
|
await SimpleTestThrowOtherErrorEntity.creator(viewerContext)
|
|
247
|
+
.enforcing()
|
|
130
248
|
.setField('simple_test_id', testEntity.getID())
|
|
131
|
-
.
|
|
249
|
+
.createAsync();
|
|
132
250
|
await expect(canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity)).rejects.toThrowError(
|
|
133
251
|
'read in cascading delete error',
|
|
134
252
|
);
|
|
253
|
+
await expect(
|
|
254
|
+
getCanViewerDeleteResultAsync(SimpleTestDenyUpdateEntity, testEntity),
|
|
255
|
+
).rejects.toThrowError('read in cascading delete error');
|
|
135
256
|
});
|
|
136
257
|
|
|
137
258
|
it('supports running within a transaction', async () => {
|
|
@@ -140,19 +261,38 @@ describe(canViewerDeleteAsync, () => {
|
|
|
140
261
|
const canViewerDelete = await viewerContext.runInTransactionForDatabaseAdaptorFlavorAsync(
|
|
141
262
|
'postgres',
|
|
142
263
|
async (queryContext) => {
|
|
143
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
).enforceCreateAsync();
|
|
264
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext, queryContext)
|
|
265
|
+
.enforcing()
|
|
266
|
+
.createAsync();
|
|
147
267
|
await LeafDenyReadEntity.creator(viewerContext, queryContext)
|
|
268
|
+
.enforcing()
|
|
148
269
|
.setField('simple_test_id', testEntity.getID())
|
|
149
|
-
.
|
|
270
|
+
.createAsync();
|
|
150
271
|
// this would fail if transactions weren't supported or correctly passed through
|
|
151
272
|
return await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity, queryContext);
|
|
152
273
|
},
|
|
153
274
|
);
|
|
154
|
-
|
|
155
275
|
expect(canViewerDelete).toBe(true);
|
|
276
|
+
|
|
277
|
+
const canViewerDeleteResult = await viewerContext.runInTransactionForDatabaseAdaptorFlavorAsync(
|
|
278
|
+
'postgres',
|
|
279
|
+
async (queryContext) => {
|
|
280
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext, queryContext)
|
|
281
|
+
.enforcing()
|
|
282
|
+
.createAsync();
|
|
283
|
+
await LeafDenyReadEntity.creator(viewerContext, queryContext)
|
|
284
|
+
.enforcing()
|
|
285
|
+
.setField('simple_test_id', testEntity.getID())
|
|
286
|
+
.createAsync();
|
|
287
|
+
// this would fail if transactions weren't supported or correctly passed through
|
|
288
|
+
return await getCanViewerDeleteResultAsync(
|
|
289
|
+
SimpleTestDenyUpdateEntity,
|
|
290
|
+
testEntity,
|
|
291
|
+
queryContext,
|
|
292
|
+
);
|
|
293
|
+
},
|
|
294
|
+
);
|
|
295
|
+
expect(canViewerDeleteResult.allowed).toBe(true);
|
|
156
296
|
});
|
|
157
297
|
});
|
|
158
298
|
|
package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts
CHANGED
|
@@ -21,20 +21,22 @@ describe(canViewerDeleteAsync, () => {
|
|
|
21
21
|
const viewerContext = new ViewerContext(companionProvider);
|
|
22
22
|
|
|
23
23
|
// create root
|
|
24
|
-
const testEntity = await TestEntity.creator(viewerContext).
|
|
24
|
+
const testEntity = await TestEntity.creator(viewerContext).enforcing().createAsync();
|
|
25
25
|
|
|
26
26
|
// create a bunch of leaves referencing root with
|
|
27
27
|
// edgeDeletionPermissionInferenceBehavior = EntityEdgeDeletionPermissionInferenceBehavior.ONE_IMPLIES_ALL
|
|
28
28
|
for (let i = 0; i < 10; i++) {
|
|
29
29
|
await TestLeafEntity.creator(viewerContext)
|
|
30
|
+
.enforcing()
|
|
30
31
|
.setField('test_entity_id', testEntity.getID())
|
|
31
|
-
.
|
|
32
|
+
.createAsync();
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
for (let i = 0; i < 10; i++) {
|
|
35
36
|
await TestLeafLookupByFieldEntity.creator(viewerContext)
|
|
37
|
+
.enforcing()
|
|
36
38
|
.setField('test_entity_id', testEntity.getID())
|
|
37
|
-
.
|
|
39
|
+
.createAsync();
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
const testLeafEntityCompanion =
|
|
@@ -63,13 +65,14 @@ describe(canViewerDeleteAsync, () => {
|
|
|
63
65
|
const viewerContext = new ViewerContext(companionProvider);
|
|
64
66
|
|
|
65
67
|
// create root
|
|
66
|
-
const testEntity = await TestEntity.creator(viewerContext).
|
|
68
|
+
const testEntity = await TestEntity.creator(viewerContext).enforcing().createAsync();
|
|
67
69
|
|
|
68
70
|
// create a bunch of leaves with no edgeDeletionPermissionInferenceBehavior
|
|
69
71
|
for (let i = 0; i < 10; i++) {
|
|
70
72
|
await TestLeafNoInferenceEntity.creator(viewerContext)
|
|
73
|
+
.enforcing()
|
|
71
74
|
.setField('test_entity_id', testEntity.getID())
|
|
72
|
-
.
|
|
75
|
+
.createAsync();
|
|
73
76
|
}
|
|
74
77
|
|
|
75
78
|
const companion =
|
|
@@ -51,7 +51,7 @@ describe(mapKeys, () => {
|
|
|
51
51
|
['hello', 'world'],
|
|
52
52
|
['amphibian', 'creature'],
|
|
53
53
|
]);
|
|
54
|
-
const map2 =
|
|
54
|
+
const map2 = mapKeys(map, (k) => k.length);
|
|
55
55
|
expect(map2.size).toEqual(2);
|
|
56
56
|
expect(map2.get(5)).toEqual('world');
|
|
57
57
|
expect(map2.get(9)).toEqual('creature');
|
|
@@ -127,7 +127,7 @@ export const describePrivacyPolicyRule = <
|
|
|
127
127
|
new Map(),
|
|
128
128
|
);
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
describePrivacyPolicyRuleWithAsyncTestCase(privacyPolicyRule, {
|
|
131
131
|
allowCases: makeCasesMap(allowCases),
|
|
132
132
|
skipCases: makeCasesMap(skipCases),
|
|
133
133
|
denyCases: makeCasesMap(denyCases),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TransactionConfig } from '../../EntityQueryContext';
|
|
2
2
|
import EntityQueryContextProvider from '../../EntityQueryContextProvider';
|
|
3
3
|
|
|
4
|
-
export class StubQueryContextProvider extends EntityQueryContextProvider {
|
|
4
|
+
export default class StubQueryContextProvider extends EntityQueryContextProvider {
|
|
5
5
|
protected getQueryInterface(): any {
|
|
6
6
|
return {};
|
|
7
7
|
}
|
|
@@ -18,5 +18,3 @@ export class StubQueryContextProvider extends EntityQueryContextProvider {
|
|
|
18
18
|
return (transactionScope) => Promise.resolve(transactionScope({}));
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
export default new StubQueryContextProvider();
|
|
@@ -5,6 +5,8 @@ import EntityCompanionProvider from '../../EntityCompanionProvider';
|
|
|
5
5
|
import IEntityMetricsAdapter from '../../metrics/IEntityMetricsAdapter';
|
|
6
6
|
import NoOpEntityMetricsAdapter from '../../metrics/NoOpEntityMetricsAdapter';
|
|
7
7
|
|
|
8
|
+
const queryContextProvider = new StubQueryContextProvider();
|
|
9
|
+
|
|
8
10
|
/**
|
|
9
11
|
* Entity companion provider for use in unit tests. All database and cache implementations
|
|
10
12
|
* are replaced with in-memory simulations.
|
|
@@ -19,7 +21,7 @@ export const createUnitTestEntityCompanionProvider = (
|
|
|
19
21
|
'postgres',
|
|
20
22
|
{
|
|
21
23
|
adapterProvider: new StubDatabaseAdapterProvider(),
|
|
22
|
-
queryContextProvider
|
|
24
|
+
queryContextProvider,
|
|
23
25
|
},
|
|
24
26
|
],
|
|
25
27
|
]),
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EntityMutator.js","sourceRoot":"","sources":["../src/EntityMutator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EntityLoader-constructor-test.js","sourceRoot":"","sources":["../../src/__tests__/EntityLoader-constructor-test.ts"],"names":[],"mappings":"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"}
|