keycloak-mock
Advanced tools
Comparing version 0.0.9 to 0.0.10
@@ -17,12 +17,5 @@ "use strict"; | ||
typ: "Bearer", | ||
sub: options.user.sub, | ||
sub: options.user.id, | ||
azp: options.clientID, | ||
session_state: uuid_1.v4(), | ||
gender: options.user.gender, | ||
preferred_username: options.user.preferred_username, | ||
given_name: options.user.given_name, | ||
family_name: options.user.family_name, | ||
email_verified: options.user.email_verified, | ||
name: options.user.name, | ||
email: options.user.email, | ||
}, options.key.toPEM(true), { | ||
@@ -29,0 +22,0 @@ algorithm: "RS256", |
@@ -0,18 +1,31 @@ | ||
export declare type CreateMockUserProfileOptionsAttributes = { | ||
[key: string]: [string]; | ||
}; | ||
export interface CreateMockUserProfileOptions { | ||
sub?: string; | ||
name: string; | ||
email: string; | ||
attributes?: {}; | ||
id?: string; | ||
createdTimestamp?: number; | ||
username?: string; | ||
enabled?: boolean; | ||
totp?: boolean; | ||
emailVerified?: boolean; | ||
firstName?: string; | ||
lastName?: string; | ||
email?: string; | ||
attributes?: CreateMockUserProfileOptionsAttributes; | ||
} | ||
export declare type MockUserProfileAttributes = { | ||
gender: [string]; | ||
[key: string]: [string]; | ||
}; | ||
export interface MockUserProfile { | ||
sub: string; | ||
name: string; | ||
id: string; | ||
createdTimestamp: number; | ||
username: string; | ||
enabled: boolean; | ||
totp: boolean; | ||
emailVerified: boolean; | ||
firstName: string; | ||
lastName: string; | ||
email: string; | ||
gender: "male" | "female"; | ||
preferred_username: string; | ||
given_name: string; | ||
family_name: string; | ||
email_verified: boolean; | ||
created_at: number; | ||
attributes: {}; | ||
attributes: MockUserProfileAttributes; | ||
} | ||
@@ -22,3 +35,3 @@ declare class MockDatabase { | ||
constructor(); | ||
findUserByID(sub: string): MockUserProfile | null; | ||
findUserByID(id: string): MockUserProfile | null; | ||
clear(): void; | ||
@@ -25,0 +38,0 @@ /** |
"use strict"; | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
var uuid_1 = require("uuid"); | ||
var isNil_1 = __importDefault(require("lodash/isNil")); | ||
var MockDatabase = /** @class */ (function () { | ||
@@ -8,4 +23,4 @@ function MockDatabase() { | ||
} | ||
MockDatabase.prototype.findUserByID = function (sub) { | ||
return this.users.find(function (storedUser) { return storedUser.sub === sub; }) || null; | ||
MockDatabase.prototype.findUserByID = function (id) { | ||
return this.users.find(function (storedUser) { return storedUser.id === id; }) || null; | ||
}; | ||
@@ -19,18 +34,18 @@ MockDatabase.prototype.clear = function () { | ||
MockDatabase.prototype.createUser = function (options) { | ||
var sub = options ? options.sub : uuid_1.v4(); | ||
var name = options ? options.name : "Henk Jansen"; | ||
var email = options ? options.email : "henk@gmail.com"; | ||
var attributes = options ? options.attributes : {}; | ||
var _a = name.split(" "), givenName = _a[0], familyName = _a[1]; | ||
var finalizedOptions = options || {}; | ||
var profile = { | ||
sub: sub || uuid_1.v4(), | ||
email: email, | ||
name: name, | ||
email_verified: true, | ||
gender: "male", | ||
given_name: givenName, | ||
family_name: familyName, | ||
preferred_username: email, | ||
created_at: new Date().getTime(), | ||
attributes: attributes || {}, | ||
id: finalizedOptions.id || uuid_1.v4(), | ||
createdTimestamp: finalizedOptions.createdTimestamp || new Date().getTime(), | ||
username: finalizedOptions.username || "henk.jansen@gmail.com", | ||
enabled: isNil_1.default(finalizedOptions.enabled) | ||
? true | ||
: finalizedOptions.enabled, | ||
totp: isNil_1.default(finalizedOptions.totp) ? true : finalizedOptions.totp, | ||
emailVerified: isNil_1.default(finalizedOptions.emailVerified) | ||
? true | ||
: finalizedOptions.emailVerified, | ||
firstName: finalizedOptions.firstName || "Henk", | ||
lastName: finalizedOptions.lastName || "Jansen", | ||
email: finalizedOptions.email || "henk.jansen@gmail.com", | ||
attributes: __assign({ gender: ["male"] }, (finalizedOptions.attributes || {})), | ||
}; | ||
@@ -37,0 +52,0 @@ this.users.push(profile); |
"use strict"; | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
@@ -10,18 +21,5 @@ var getUser = function (instance, request) { | ||
200, | ||
{ | ||
id: user.sub, | ||
firstName: user.given_name, | ||
lastName: user.family_name, | ||
username: user.preferred_username, | ||
email: user.email, | ||
enabled: true, | ||
totp: false, | ||
emailVerified: user.email_verified, | ||
createdTimestamp: user.created_at, | ||
attributes: user.attributes, | ||
disableableCredentialTypes: ["password"], | ||
requiredActions: [], | ||
federatedIdentities: [], | ||
notBefore: 0, | ||
access: { | ||
__assign(__assign({}, user), { | ||
// TODO: make these configurable | ||
disableableCredentialTypes: ["password"], requiredActions: [], federatedIdentities: [], notBefore: 0, access: { | ||
manageGroupMembership: true, | ||
@@ -32,6 +30,5 @@ view: true, | ||
manage: true, | ||
}, | ||
}, | ||
} }), | ||
]; | ||
}; | ||
exports.default = getUser; |
@@ -8,4 +8,16 @@ "use strict"; | ||
} | ||
return [200, user]; | ||
return [ | ||
200, | ||
{ | ||
sub: user.id, | ||
email_verified: user.emailVerified, | ||
gender: user.attributes.gender[0], | ||
name: user.firstName + " " + user.lastName, | ||
preferred_username: user.username, | ||
given_name: user.firstName, | ||
family_name: user.lastName, | ||
email: user.email, | ||
}, | ||
]; | ||
}; | ||
exports.default = getUserInfo; |
@@ -28,12 +28,5 @@ import { v4 as uuidv4 } from "uuid"; | ||
typ: "Bearer", | ||
sub: options.user.sub, | ||
sub: options.user.id, | ||
azp: options.clientID, | ||
session_state: uuidv4(), | ||
gender: options.user.gender, | ||
preferred_username: options.user.preferred_username, | ||
given_name: options.user.given_name, | ||
family_name: options.user.family_name, | ||
email_verified: options.user.email_verified, | ||
name: options.user.name, | ||
email: options.user.email, | ||
}, | ||
@@ -40,0 +33,0 @@ options.key.toPEM(true), |
import { v4 as uuidv4 } from "uuid"; | ||
import isNil from "lodash/isNil"; | ||
export type CreateMockUserProfileOptionsAttributes = { | ||
[key: string]: [string]; | ||
}; | ||
export interface CreateMockUserProfileOptions { | ||
sub?: string; | ||
name: string; | ||
email: string; | ||
attributes?: {}; | ||
id?: string; | ||
createdTimestamp?: number; | ||
username?: string; | ||
enabled?: boolean; | ||
totp?: boolean; | ||
emailVerified?: boolean; | ||
firstName?: string; | ||
lastName?: string; | ||
email?: string; | ||
attributes?: CreateMockUserProfileOptionsAttributes; | ||
} | ||
export type MockUserProfileAttributes = { | ||
gender: [string]; | ||
[key: string]: [string]; | ||
}; | ||
export interface MockUserProfile { | ||
sub: string; | ||
name: string; | ||
id: string; | ||
createdTimestamp: number; | ||
username: string; | ||
enabled: boolean; | ||
totp: boolean; | ||
emailVerified: boolean; | ||
firstName: string; | ||
lastName: string; | ||
email: string; | ||
gender: "male" | "female"; | ||
preferred_username: string; | ||
given_name: string; | ||
family_name: string; | ||
email_verified: boolean; | ||
created_at: number; | ||
attributes: {}; | ||
attributes: MockUserProfileAttributes; | ||
} | ||
@@ -30,4 +46,4 @@ | ||
findUserByID(sub: string): MockUserProfile | null { | ||
return this.users.find((storedUser) => storedUser.sub === sub) || null; | ||
findUserByID(id: string): MockUserProfile | null { | ||
return this.users.find((storedUser) => storedUser.id === id) || null; | ||
} | ||
@@ -43,20 +59,23 @@ | ||
createUser(options?: CreateMockUserProfileOptions): MockUserProfile { | ||
const sub = options ? options.sub : uuidv4(); | ||
const name = options ? options.name : "Henk Jansen"; | ||
const email = options ? options.email : "henk@gmail.com"; | ||
const attributes = options ? options.attributes : {}; | ||
const finalizedOptions = options || {}; | ||
const [givenName, familyName] = name.split(" "); | ||
const profile: MockUserProfile = { | ||
sub: sub || uuidv4(), | ||
email, | ||
name, | ||
email_verified: true, | ||
gender: "male", | ||
given_name: givenName, | ||
family_name: familyName, | ||
preferred_username: email, | ||
created_at: new Date().getTime(), | ||
attributes: attributes || {}, | ||
id: finalizedOptions.id || uuidv4(), | ||
createdTimestamp: | ||
finalizedOptions.createdTimestamp || new Date().getTime(), | ||
username: finalizedOptions.username || "henk.jansen@gmail.com", | ||
enabled: isNil(finalizedOptions.enabled) | ||
? true | ||
: finalizedOptions.enabled, | ||
totp: isNil(finalizedOptions.totp) ? true : finalizedOptions.totp, | ||
emailVerified: isNil(finalizedOptions.emailVerified) | ||
? true | ||
: finalizedOptions.emailVerified, | ||
firstName: finalizedOptions.firstName || "Henk", | ||
lastName: finalizedOptions.lastName || "Jansen", | ||
email: finalizedOptions.email || "henk.jansen@gmail.com", | ||
attributes: { | ||
gender: ["male"], | ||
...(finalizedOptions.attributes || {}), | ||
}, | ||
}; | ||
@@ -63,0 +82,0 @@ |
@@ -14,12 +14,4 @@ import { ViewFn } from "../types"; | ||
{ | ||
id: user.sub, | ||
firstName: user.given_name, | ||
lastName: user.family_name, | ||
username: user.preferred_username, | ||
email: user.email, | ||
enabled: true, | ||
totp: false, | ||
emailVerified: user.email_verified, | ||
createdTimestamp: user.created_at, | ||
attributes: user.attributes, | ||
...user, | ||
// TODO: make these configurable | ||
disableableCredentialTypes: ["password"], | ||
@@ -26,0 +18,0 @@ requiredActions: [], |
@@ -11,5 +11,17 @@ import { ViewFn } from "../types"; | ||
return [200, user]; | ||
return [ | ||
200, | ||
{ | ||
sub: user.id, | ||
email_verified: user.emailVerified, | ||
gender: user.attributes.gender[0], | ||
name: `${user.firstName} ${user.lastName}`, | ||
preferred_username: user.username, | ||
given_name: user.firstName, | ||
family_name: user.lastName, | ||
email: user.email, | ||
}, | ||
]; | ||
}; | ||
export default getUserInfo; |
{ | ||
"name": "keycloak-mock", | ||
"version": "0.0.9", | ||
"version": "0.0.10", | ||
"description": "Keycloak server mock for Node.js", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
42508
1011