{"_id":"@aktraore/keycloak-mock","_rev":"4-35e0d6f5594248455d6d162ba1f5239f","name":"@aktraore/keycloak-mock","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.2":{"name":"@aktraore/keycloak-mock","version":"1.0.2","description":"Keycloak server mock for Node.js","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aktraore/keycloak-mock.git"},"author":{"name":"aktraore"},"license":"MIT","engines":{"node":">=8.0.0"},"scripts":{"build":"tsc","test":"jest -i tests/","format":"prettier --write '**/*.ts'","format:verify":"prettier --check '**/*.ts'","prepack":"npm run format && npm run build"},"devDependencies":{"@types/jest":"^27.4.0","@types/jsonwebtoken":"^8.5.4","@types/node-jose":"^1.1.8","@types/qs":"^6.9.7","@types/uuid":"^8.3.1","axios":"^0.26.0","jest":"^27.0.6","prettier":"^2.3.2","qs":"^6.10.1","ts-jest":"^27.0.4","typescript":"^4.3.5"},"dependencies":{"@types/lodash":"^4.14.172","jsonwebtoken":"^8.5.1","lodash":"^4.17.21","nock":"^13.1.1","node-jose":"^2.0.0","uuid":"^8.3.2"},"types":"./dist/index.d.ts","gitHead":"eebada73230e5d2f9528aa76fadb48a60624b703","bugs":{"url":"https://github.com/aktraore/keycloak-mock/issues"},"homepage":"https://github.com/aktraore/keycloak-mock#readme","_id":"@aktraore/keycloak-mock@1.0.2","_nodeVersion":"16.14.0","_npmVersion":"8.3.1","dist":{"integrity":"sha512-rbX9Qtp2i737EgzdhPKZOUX5xhXvV5vw6nM0u70K7MRqOjo7fb071SaYsPwU+vLtsKh4UAq+IqvEhswscfgglw==","shasum":"3ffd559aa60473436aad0ae36c8a71c8bcc4fa7d","tarball":"https://registry.npmjs.org/@aktraore/keycloak-mock/-/keycloak-mock-1.0.2.tgz","fileCount":52,"unpackedSize":63300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQOg/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo6KBAAi2V3G3bvdLKO+apKx8Xm5DK7dRzQh0x8APbj4MpFqwq//mqu\r\na5q84kE2xd2svnS5RN3SveBcNtIZzBYkzxNYBtSN/DpaCUJ49gFzvs9KW+jJ\r\ndME3RDg537FJIovmqo2ovVtjI1XY7kAB7LDBLi5hgJWrnfPp15fOGYsmeIWy\r\njiDkDh6Pe3XSkQt7eq4yRzpfLnqj9TOYcfblCQjoH9znoXAjaDdv7Pg1WaJV\r\naNwZUOQCfE4ZtT1iZO4Yr6ItBfz/p4+NK2EObBsiqAvRaijbVtSDEo656qCb\r\nHJ7CBlaPc03Ve5iaqDikHpqfq6TbW1749GVdrTNw3CE1dc0iR8hQ0TUKd9ql\r\np/znuVNCw7/v1oc7Y/xruHy0V/MaU6rNbc1yBht3tR/EjqgEgl15OfaElYob\r\n7MSE8Fkwf3BxLRNqd4XkBKOt0s/osS9Le/1A5zZFUvfRfjbQmwKXgp9qaF0J\r\nDlzc5kwXzlV8Qo+6wgQ65XW0xzQiNn1ogf2YpDNASscTkZ8SqKz+dO4X+6Nz\r\nu0+DiVogCr23i8haGfyaG3Aiexk+9zBozaMqrw8dPvZf77gOo5RoBkGnoqe9\r\n7qRuWOlBXtF/nxtG9XtBl1VxHcc3vOqu7nLCQWlxfdC1FwAzM8n/sxwXABk6\r\nvIZtBlI5cYpd8t18lgPnanFomdpk6Z+ugEQ=\r\n=PW2a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGwLhSirw0WNfWSjc5FVCyCyAlJBkPsGSgpY2OgiU632AiAWfrZJvWkhKrxuxMBY3F71PKoT9bJkQTF8nMyieNSXvw=="}]},"_npmUser":{"name":"aktraore","email":"traore_a+npm@outlook.com"},"directories":{},"maintainers":[{"name":"aktraore","email":"traore_a+npm@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloak-mock_1.0.2_1648420927796_0.9342857339971"},"_hasShrinkwrap":false},"1.1.1":{"name":"@aktraore/keycloak-mock","version":"1.1.1","description":"Keycloak server mock for Node.js","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aktraore/keycloak-mock.git"},"author":{"name":"aktraore"},"license":"MIT","engines":{"node":">=8.0.0"},"scripts":{"build":"tsc","test":"jest -i tests/","format":"prettier --write '**/*.ts'","format:verify":"prettier --check '**/*.ts'","presemantic-release":"npm run format && npm run build","semantic-release":"semantic-release"},"devDependencies":{"@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/jest":"^27.4.0","@types/jsonwebtoken":"^8.5.4","@types/node-jose":"^1.1.8","@types/qs":"^6.9.7","@types/uuid":"^8.3.1","axios":"^0.26.0","jest":"^27.0.6","prettier":"^2.3.2","qs":"^6.10.1","semantic-release":"^19.0.2","ts-jest":"^27.0.4","typescript":"^4.3.5"},"dependencies":{"jsonwebtoken":"^8.5.1","nock":"^13.1.1","node-jose":"^2.0.0","uuid":"^8.3.2"},"types":"./dist/index.d.ts","gitHead":"80ed5a2c18dc7aa68054693f697755ab30deda16","bugs":{"url":"https://github.com/aktraore/keycloak-mock/issues"},"homepage":"https://github.com/aktraore/keycloak-mock#readme","_id":"@aktraore/keycloak-mock@1.1.1","_nodeVersion":"16.14.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-YLiSL4+0ngCZaQ9NIxdJs9UCppeP0VCdjOP19fGZG+U13uP+oBvbc4fvL/IybKpY8mhJGhpD4HHCCUFD9xFXsw==","shasum":"1b9045f3bf49466acc0bfb58d1702e3dc0a50a32","tarball":"https://registry.npmjs.org/@aktraore/keycloak-mock/-/keycloak-mock-1.1.1.tgz","fileCount":41,"unpackedSize":45427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQ5EoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqRcxAAoF3SrOTy16da6Kg3eTxUkiw1mRhtKsZ6uM0VkyB3PASyt+YL\r\n7v7e67F4zGkcIjnhH6WlDy75GiINmnjoC9vvTd0frQ4zGp7gbJAlVhVHxbG+\r\nwdZrUbyZRzSiUzCFA4u6oA8MMA1659XN6qZ+qevlRjngOmgENwZbu7Jusko8\r\nvy9x8seZEfcvD/6DX94zED8qUQZkExj8XszMM4B+1DxO0lWaH/3DvnMzTTwM\r\n7OJ5TtbNos8XX/SJWMcIm4QcmwZdAaAW1ft6+Tcl9gFi9k6nUMaE4N7sgSVw\r\nj4hekWx/e4DCct1dyAqHAxhM1P+W2siRGS4uYTis+kSo2jYBOMPHWwqttWYT\r\nK+G9fMOIG03deWhp66I+Udv27lZks96gOwGN8Z6RZrIlw01J269ucZJNpkC9\r\nZwOlZGxhFoxLly1w8cgjoVIoKCK1HiHGho18U2TRoR/VFE2UaWQkPlixpIgw\r\nVuaoRj9RXO9zi8wMqICCv0qN+bFNL0CxcKlVe1wQd8fZ42+WPHZ/Ut0MhTqq\r\njzZNaqOyPjfEP1uJPv/XcIZ5uh5Otsl1ym1FKlaXXObuFC3SJevZ+0T0Z0r2\r\nSwubEk88mUcbncdNBe4SAgGugakbnflTHvB6S6/xoNowVUJFtzMHqhXWhYio\r\nlrp6VqXaeZb/clx6xftiQKaX79i3ZqA9jN0=\r\n=M1m9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTT3Ay7kDZt2d6fQ8kRy6MsS2C/sQP+AMCmVGbHO92LAIhANCzCDcTYRNFyS6TMYsp/H2U082itWltnqmB+QHxlzQj"}]},"_npmUser":{"name":"aktraore","email":"traore_a+npm@outlook.com"},"directories":{},"maintainers":[{"name":"aktraore","email":"traore_a+npm@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloak-mock_1.1.1_1648595240555_0.8796839483580885"},"_hasShrinkwrap":false},"1.2.0":{"name":"@aktraore/keycloak-mock","version":"1.2.0","description":"Keycloak server mock for Node.js","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aktraore/keycloak-mock.git"},"author":{"name":"aktraore"},"license":"MIT","engines":{"node":">=8.0.0"},"scripts":{"build":"tsc","test":"jest -i tests/","format":"prettier --write '**/*.ts'","format:verify":"prettier --check '**/*.ts'","presemantic-release":"npm run format && npm run build","semantic-release":"semantic-release"},"devDependencies":{"@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/jest":"^27.4.0","@types/jsonwebtoken":"^8.5.4","@types/node-jose":"^1.1.8","@types/qs":"^6.9.7","@types/uuid":"^8.3.1","axios":"^0.26.0","jest":"^27.0.6","prettier":"^2.3.2","qs":"^6.10.1","semantic-release":"^19.0.2","ts-jest":"^27.0.4","typescript":"^4.3.5"},"dependencies":{"jsonwebtoken":"^8.5.1","nock":"^13.1.1","node-jose":"^2.0.0","uuid":"^8.3.2"},"types":"./dist/index.d.ts","gitHead":"9a87b52325a1014b479bf12d378dba4510c98e06","bugs":{"url":"https://github.com/aktraore/keycloak-mock/issues"},"homepage":"https://github.com/aktraore/keycloak-mock#readme","_id":"@aktraore/keycloak-mock@1.2.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-g2pWoMoYeYYxoPrcR1Bmgu9BdK8+o46gnyXNvli55TEDvS/jwMkKBvHcOG1FLJtDsK1eSJMn4f9S3R1LLlYH3A==","shasum":"730c4f42059b25db35a4c6c8c2ceb4e2cc96ed2e","tarball":"https://registry.npmjs.org/@aktraore/keycloak-mock/-/keycloak-mock-1.2.0.tgz","fileCount":45,"unpackedSize":59595,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzNbr8DlGSO8VVIXA90SfsBY17Y+yfQ3xA3GUkKPaJKAIgWavlbnXuKJ9I8gZXsxt1AFC4poaAQA7busw0r6683Wc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiSkLZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr3qA//Qf3ZdOU0sUTHdIO4jqNzQhQuN+B2f4s3k7a95FPNbchhi2ax\r\njqWAJMzdjE4RVaEY0LI6lE01NNqhJdZR+tOiwOVJpt1KZ7lWUYGTuzhZ1gpu\r\nDS+ADqi6KET+cB2G8dI5eQwHfrOD/cLMUVqWMDVUHA0SR/vXOCG2Ox9awhxF\r\nvEt6J8zpAH2o0j5HvqxQDpZ/YEp+AaXrvhcAL+V/Vw14amHdpuiVfkBXZxgO\r\nTOgV3I2tPJWms8fYONC3aVYKGOjXs64Kdl80uLbe1k/E82O8ByhNil6ox1mr\r\nB0ZyI1IXoZqufOW17S5rRzoWTzH/+azTaSW7Znw3Z6MYCERjzKwyTRbvPcQe\r\n7df6CwgWDA1sMicsuZQepnQD5Sp+BJiqRK81DzGbCpOOZXFK1uYSp3GgJkZn\r\nHZBzDP4A7/lfTsMGUDXvcouIi9Py7EEqXHSPbUnrR+YVhkgI4ZP4Z41LReL1\r\nRM3dA7coYqs+bNppZGdaGqGob/4rqV0HwE8cRDwppDYY2VMYEW3dhfxah1Vv\r\n8n1yMDgu4A6JXP5wcSNln4e0mSytZq4GbLSIwGhumPOh9M7oqyX17MVKMCbo\r\nHwWgH8Rr5bkPIkXKHPDpNzAelVL63pYHqyPh9Gy5clPf4Vro8SuvIQI0H9B0\r\n9nxtkrTxWy0l+ndTaVEf2nvySTDEz7p4WVE=\r\n=TqGP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aktraore","email":"traore_a+npm@outlook.com"},"directories":{},"maintainers":[{"name":"aktraore","email":"traore_a+npm@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloak-mock_1.2.0_1649033945678_0.8165957927029042"},"_hasShrinkwrap":false},"1.3.0":{"name":"@aktraore/keycloak-mock","version":"1.3.0","description":"Keycloak server mock for Node.js","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/aktraore/keycloak-mock.git"},"author":{"name":"aktraore"},"license":"MIT","engines":{"node":">=8.0.0"},"scripts":{"build":"tsc","test":"jest -i tests/","format":"prettier --write '**/*.ts'","format:verify":"prettier --check '**/*.ts'","presemantic-release":"npm run format && npm run build","semantic-release":"semantic-release"},"devDependencies":{"@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/jest":"^27.4.0","@types/jsonwebtoken":"^8.5.4","@types/node-jose":"^1.1.8","@types/qs":"^6.9.7","@types/uuid":"^8.3.1","axios":"^0.26.0","jest":"^27.0.6","prettier":"^2.3.2","qs":"^6.10.1","semantic-release":"^19.0.2","ts-jest":"^27.0.4","typescript":"^4.3.5"},"dependencies":{"jsonwebtoken":"^8.5.1","nock":"^13.1.1","node-jose":"^2.0.0","uuid":"^8.3.2"},"types":"./dist/index.d.ts","gitHead":"9dae39bee7c8a05eb6f111ff02bf98051e008f99","bugs":{"url":"https://github.com/aktraore/keycloak-mock/issues"},"homepage":"https://github.com/aktraore/keycloak-mock#readme","_id":"@aktraore/keycloak-mock@1.3.0","_nodeVersion":"16.14.2","_npmVersion":"8.5.5","dist":{"integrity":"sha512-ia+N5KXEfPeAUjRSkj1HmVJgChSvWZEfoq5r7xuST4i4wwFRrBpNWaAH4gRcxaz9jCOBjeDaoay0pMjqw970DA==","shasum":"20866fe4cee1b8c94171fb2ff25f4c9e3c1ef655","tarball":"https://registry.npmjs.org/@aktraore/keycloak-mock/-/keycloak-mock-1.3.0.tgz","fileCount":47,"unpackedSize":64153,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkK4K6r65qXlH7TE9Oc5/s0kXBTCLGXBjANpBfECNGvwIgDao0ah+HjcHao28KthIBtBWK24tAaDjcXN37KkEGwB4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiU4s0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr8cw/+OwiK9A+TLGAseey4K9pfbXk5QDSWQpMjpkkaewcF97Z3KYt+\r\nmMPkhSWlIBNcunBgIe3b4s0fnm7xDNdaYzQTusK7uOjZonW4cm2H91tLoFrd\r\nKtj2d+h4d9qY8ytQXyvsmkTzxflM6F6N+FVmB2strMX9EQhkNmlxWyGG3Xub\r\n7gXz4v7iEZTBy592kp52WvVKoRJ8q60fezm8yj+cAoutc1Z3hZoyPl2uN3mZ\r\nqNGc5K1Oe1Zbx0uyEhan0BtADdCmM0/u+3gSMvPztQZHOGwmknbtYXEXkSfS\r\nqakmxr5Ix1UzS0oK/e6eMd2E7Ngpx18n/oN+lfeKbhc9hehXy0tqekr1Vold\r\nQWwymiBfCw3FM4fWn4YyCUvE+YhcZlkhfSGo0ldxUKL2Lf3rmgWtkWH0oixs\r\n4uJXiGl46JdwG6I/Th6sG+uRNfONDGdLZiagDG5PI2o7a+/2YSjhj+z+Wy7q\r\nhY8+rSvMDzq7wgk+k+DpIBzRVOarUhiQUgBAbQOmmrNA3lbLm6OKqvj3nJnq\r\nmyHlnSEr1bkFmBHiB+qFFjTtjtiEMeuKwrl1947jG9tzuHbdvaKmELSJcrj+\r\nXT4p62l3Z7mDLes+TGdFMNDbvD3xxBwbChavZ42VUpfQHuxUqR6v1Rpe/YJn\r\nTOUcjIhl9eXQPgsCYkN/wp0b90p1uLuSuvg=\r\n=f6xg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"aktraore","email":"traore_a+npm@outlook.com"},"directories":{},"maintainers":[{"name":"aktraore","email":"traore_a+npm@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/keycloak-mock_1.3.0_1649642291863_0.7028980215332956"},"_hasShrinkwrap":false}},"time":{"created":"2022-03-27T22:42:07.733Z","1.0.2":"2022-03-27T22:42:07.938Z","modified":"2022-04-11T01:58:12.089Z","1.1.1":"2022-03-29T23:07:20.678Z","1.2.0":"2022-04-04T00:59:05.841Z","1.3.0":"2022-04-11T01:58:12.014Z"},"maintainers":[{"name":"aktraore","email":"traore_a+npm@outlook.com"}],"description":"Keycloak server mock for Node.js","homepage":"https://github.com/aktraore/keycloak-mock#readme","repository":{"type":"git","url":"git+https://github.com/aktraore/keycloak-mock.git"},"author":{"name":"aktraore"},"bugs":{"url":"https://github.com/aktraore/keycloak-mock/issues"},"license":"MIT","readme":"# Keycloak Mock\n\n[![License](https://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)\n![Test](https://github.com/aktraore/keycloak-mock/actions/workflows/test.yml/badge.svg)\n\nA minimal mock for a Keycloak server to be used in unit tests.\n\nThis mock is not complete and it definitely doesn't match Keycloak completely. Improvements are welcome.\n\n## About\n\nThis does not launch an actual HTTP server. It uses [`nock`](https://github.com/nock/nock) to patch Node.js HTTP client to intercept requests.\n\nTested with Node.js 14.x\n\n### What works\n\n-   `GET /[realm]/protocol/openid-connect/certs`\n-   `GET /[realm]/protocol/openid-connect/userinfo`\n-   `GET /admin/realms/[realm]/users`\n-   `GET /admin/realms/[realm]/users?username=myusername`\n-   `POST /[realm]/protocol/openid-connect/token`\n-   `POST /[realm]/protocol/openid-connect/token/introspect`\n-   `GET /admin/realms/[realm]/users/[userid]`\n-   `DELETE /admin/realms/[realm]/users/[userid]`\n-   `POST /admin/realms/[realm]/users`\n-   `PUT /admin/realms/[realm]/users`\n-   `GET /realms/[realm]/.well-known/uma2-configuration`\n-   `GET /realms/[realm]/.well-known/openid-configuration`\n\n## Usage\n\n### Basic\n\n    import * as KeycloakMock from \"@aktraore/keycloak-mock\";\n\n    const keycloak = await KeycloakMock.createMockInstance({\n        authServerURL: \"https://myserver.com/auth\",\n        realm: \"myrealm\",\n        clientID: \"client-1\",\n        clientSecret: \"test\",\n    });\n\n    // all requests to `https://myserver.com/auth` will now be\n    // intercepted and replied to\n    const mock = KeycloakMock.activateMock(keycloak);\n\n    // create a user and a token for it\n    const user = keycloak.database.createUser({\n        name: \"test\",\n        email: \"hello@hello.com\", // username will be email\n        credentials: [{\n            value: \"mypassword\",\n        }],\n        roles: ['admin']\n    });\n\n    console.log(user.profile, user.credentials);\n\n    const token = keycloak.createBearerToken(user.profile.id);\n\n    // get active mock without a reference\n    const sameMock = KeycloakMock.getMock(\"https://myserver.com/auth\");\n\n    // clear user database\n    mock.instance.database.clear();\n\n    // find user profile\n    const sameUser = mock.instance.database.findUserByID(user.profile.id);\n\n    // de-activate the mock\n    KeycloakMock.deactivateMock(sameMock);\n\n## Custom handlers\n\n    import * as KeycloakMock from \"keycloak-node-mock\";\n\n    const keycloak = await KeycloakMock.createMockInstance({\n        authServerURL: \"https://myserver.com/auth\",\n        realm: \"myrealm\",\n        clientID: \"client-1\",\n    });\n\n    keycloak.activateMock(keycloak, {\n       listCertificatesView: (instance, request) => {\n           return [500, \"\"];\n       },\n       getUser: (instance, request) => {\n           // might be null if not authorized\n           console.log(request.user);\n           return [500, \"\"];\n       },\n       updateUser: (instance, request) => {\n           return [500, \"\"];\n       },\n       deleteUser: (instance, request) => {\n           return [500, \"\"];\n       },\n       getUserInfoView: (instance, request) => {\n           return [500, \"\"];\n       },\n       listUsers: (instance, request) => {\n           return [500, \"\"];\n       },\n       createTokenView: (instance, request, body) => {\n           return [500, \"\"];\n       },\n       createUserView: (instance, request, body) => {\n           return [500, \"\"];\n       },\n       getUmaConfiguration: (instance, request, body) => {\n           return [500, \"\"];\n       },\n    });\n","readmeFilename":"README.md"}