auth0-extensions/auth0-source-control-extension-tools

View on GitHub
src/auth0/handlers/guardianPolicies.js

Summary

Maintainability
A
1 hr
Test Coverage
import DefaultHandler from './default';
import constants from '../../constants';

export const schema = {
  type: 'object',
  properties: {
    policies: {
      type: 'array',
      items: {
        type: 'string',
        enum: constants.GUARDIAN_POLICIES
      }
    }
  },
  additionalProperties: false
};

export default class GuardianPoliciesHandler extends DefaultHandler {
  constructor(options) {
    super({
      ...options,
      type: 'guardianPolicies'
    });
  }

  async getType() {
    // in case client version does not support the operation
    if (!this.client.guardian || typeof this.client.guardian.getPolicies !== 'function') {
      return {};
    }

    if (this.existing) return this.existing;
    const policies = await this.client.guardian.getPolicies();
    this.existing = { policies };
    return this.existing;
  }

  async processChanges(assets) {
    // No API to delete or create guardianPolicies, we can only update.
    const { guardianPolicies } = assets;

    // Do nothing if not set
    if (!guardianPolicies || !guardianPolicies.policies) return;

    const params = {};
    const data = guardianPolicies.policies;
    await this.client.guardian.updatePolicies(params, data);
    this.updated += 1;
    this.didUpdate(guardianPolicies);
  }
}