All files / realm/blong-access/gateway/access accessCapabilityAdd.ts

100% Statements 59/59
100% Branches 2/2
100% Functions 1/1
100% Lines 59/59

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 601x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 7x 1x  
import {validation} from '@feasibleone/blong';
 
/**
 * `access.capability.add` — explicit validation override.
 *
 * The auto-generated schema requires the `uidNotNull` `capability.capabilityId`
 * on add, but the id is generated server-side. `capabilityName` is the resource
 * display name, not a table column.
 */
export default validation(
    async ({lib: {type}}) =>
        function accessCapabilityAdd() {
            return {
                params: type.Object(
                    {
                        capability: type.Optional(
                            type.Object(
                                {
                                    capabilityName: type.Optional(type.String()),
                                    description: type.Optional(
                                        type.Union([type.String(), type.Null()]),
                                    ),
                                },
                                {additionalProperties: true},
                            ),
                        ),
                        action: type.Optional(
                            type.Array(
                                type.Object(
                                    {
                                        entityName: type.Optional(type.String()),
                                        find: type.Optional(type.Boolean()),
                                        get: type.Optional(type.Boolean()),
                                        add: type.Optional(type.Boolean()),
                                        edit: type.Optional(type.Boolean()),
                                        remove: type.Optional(type.Boolean()),
                                    },
                                    {additionalProperties: true},
                                ),
                            ),
                        ),
                        otherAction: type.Optional(
                            type.Array(
                                type.Object(
                                    {
                                        actionId: type.Optional(type.String()),
                                        granted: type.Optional(type.Boolean()),
                                    },
                                    {additionalProperties: true},
                                ),
                            ),
                        ),
                    },
                    {additionalProperties: true},
                ),
                result: type.Object({}, {additionalProperties: true}),
            };
        },
);