@kilterset/auth0-actions-testing
Version:
Test and develop Auth0 Actions or Okta CIC Actions locally.
91 lines • 3.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.riskAssessment = exports.untrustedIPAssessment = exports.newDeviceAssessment = exports.impossibleTravelAssessment = void 0;
const assert_1 = require("assert");
const chance_1 = require("./chance");
const define_1 = require("./define");
exports.impossibleTravelAssessment = (0, define_1.define)(() => {
return {
confidence: randomConfidence(),
code: chance_1.chance.pickone([
"minimal_travel_from_last_login",
"travel_from_last_login",
"substantial_travel_from_last_login",
"impossible_travel_from_last_login",
"invalid_travel",
"mission_geoip",
"anonymous_proxy",
"unknown_location",
"initial_login",
"location_history_not_found",
"assessment_not_available",
]),
};
});
exports.newDeviceAssessment = (0, define_1.define)(() => {
return {
confidence: randomConfidence(),
code: chance_1.chance.pickone([
"match",
"partial_match",
"no_match",
"initial_login",
"unknown_device",
"no_device_history",
"assessment_not_available",
]),
details: {
device: chance_1.chance.pickone(["known", "unknown"]),
useragent: chance_1.chance.pickone(["known", "unknown"]),
},
};
});
exports.untrustedIPAssessment = (0, define_1.define)(({ params }) => {
var _a;
const ip = ((_a = params.details) === null || _a === void 0 ? void 0 : _a.ip) || chance_1.chance.ip();
const matches = `${ip}/32`;
return {
confidence: randomConfidence(),
code: chance_1.chance.pickone([
"not_found_on_deny_list",
"found_on_deny_list",
"invalid_ip_address",
"assessment_not_available",
]),
details: {
category: "spam",
ip: chance_1.chance.ip(),
matches,
source: "STOPFORUMSPAM-1",
},
};
});
const riskAssessmentTypes = {
ImpossibleTravel: exports.impossibleTravelAssessment,
NewDevice: exports.newDeviceAssessment,
UntrustedIP: exports.untrustedIPAssessment,
};
const riskAssessmentKeys = Object.keys(riskAssessmentTypes);
exports.riskAssessment = (0, define_1.define)(({ transientParams }) => {
var _a;
const numAssessments = transientParams.numAssessments ||
((_a = transientParams.assessmentTypes) === null || _a === void 0 ? void 0 : _a.length) ||
chance_1.chance.integer({ min: 1, max: riskAssessmentKeys.length });
const shuffledAssessmentTypes = chance_1.chance.shuffle(riskAssessmentKeys);
const assessmentTypes = transientParams.assessmentTypes ||
shuffledAssessmentTypes.slice(0, numAssessments);
if (numAssessments > assessmentTypes.length) {
(0, assert_1.fail)(`numAssessments is ${numAssessments}, which is greater than the ${riskAssessmentKeys.length} assessment types available`);
}
const assessments = assessmentTypes.reduce((acc, type) => {
const assessment = riskAssessmentTypes[type]();
return Object.assign(Object.assign({}, acc), { [type]: assessment });
}, {});
return {
confidence: randomConfidence(),
version: "1",
assessments,
};
});
const randomConfidence = () => chance_1.chance.pickone(["low", "medium", "high", "neutral"]);
//# sourceMappingURL=risk-assessment.js.map