[{"data":1,"prerenderedAt":1080},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced\u002Ftesting-with-japa":273,"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced\u002Ftesting-with-japa-surround":1026,"packages-data":1031},[4,23],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-tabler-home",{"title":13,"path":14,"stem":15,"icon":16},"Manifest","\u002Fgetting-started\u002Fmanifest","1.getting-started\u002F2.manifest","i-tabler-file-diff",{"title":18,"path":19,"stem":20,"icon":21},"Contributing","\u002Fgetting-started\u002Fcontributing","1.getting-started\u002F3.contributing","i-tabler-git-fork",false,{"title":24,"path":25,"stem":26,"children":27,"icon":30},"Packages","\u002Fpackages","2.packages\u002F1.index",[28,31,108,194,247],{"title":29,"path":25,"stem":26,"icon":30},"Overview","i-tabler-packages",{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":22},"AdonisJS API Query","i-tabler-filter-search","\u002Fpackages\u002Fadonisjs-api-query","2.packages\u002Fadonisjs-api-query",[37,56,87],{"title":5,"icon":38,"path":39,"stem":40,"children":41,"page":22},"i-tabler-rocket","\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started","2.packages\u002Fadonisjs-api-query\u002F1.getting-started",[42,46,51],{"title":10,"path":43,"stem":44,"icon":45},"\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F1.introduction","i-tabler-book",{"title":47,"path":48,"stem":49,"icon":50},"Installation","\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F2.installation","i-tabler-download",{"title":52,"path":53,"stem":54,"icon":55},"Configuration","\u002Fpackages\u002Fadonisjs-api-query\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-api-query\u002F1.getting-started\u002F3.configuration","i-tabler-settings",{"title":57,"icon":58,"path":59,"stem":60,"children":61,"page":22},"Features","i-tabler-sparkles","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures","2.packages\u002Fadonisjs-api-query\u002F2.features",[62,67,72,77,82],{"title":63,"path":64,"stem":65,"icon":66},"Filtering","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Ffiltering","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F1.filtering","i-tabler-filter",{"title":68,"path":69,"stem":70,"icon":71},"Sorting","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fsorting","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F2.sorting","i-tabler-arrows-sort",{"title":73,"path":74,"stem":75,"icon":76},"Including Relationships","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fincluding-relationships","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F3.including-relationships","i-tabler-hierarchy-2",{"title":78,"path":79,"stem":80,"icon":81},"Filterable Classes","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Ffilterable-classes","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F4.filterable-classes","i-tabler-box-model",{"title":83,"path":84,"stem":85,"icon":86},"Validation","\u002Fpackages\u002Fadonisjs-api-query\u002Ffeatures\u002Fvalidation","2.packages\u002Fadonisjs-api-query\u002F2.features\u002F5.validation","i-tabler-shield-check",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":22},"Advanced Usage","i-tabler-adjustments","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced","2.packages\u002Fadonisjs-api-query\u002F3.advanced",[93,98,103],{"title":94,"path":95,"stem":96,"icon":97},"Custom Filters, Sorts & Includes","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced\u002Fcustom-clauses","2.packages\u002Fadonisjs-api-query\u002F3.advanced\u002F1.custom-clauses","i-tabler-puzzle",{"title":99,"path":100,"stem":101,"icon":102},"Request & Delimiters","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced\u002Frequest-and-delimiters","2.packages\u002Fadonisjs-api-query\u002F3.advanced\u002F2.request-and-delimiters","i-tabler-brackets-contain",{"title":104,"path":105,"stem":106,"icon":107},"Exceptions","\u002Fpackages\u002Fadonisjs-api-query\u002Fadvanced\u002Fexceptions","2.packages\u002Fadonisjs-api-query\u002F3.advanced\u002F3.exceptions","i-tabler-alert-triangle",{"title":109,"icon":110,"path":111,"stem":112,"children":113,"page":22},"AdonisJS Permission","i-tabler-shield-lock","\u002Fpackages\u002Fadonisjs-permission","2.packages\u002Fadonisjs-permission",[114,127,157,183],{"title":5,"icon":38,"path":115,"stem":116,"children":117,"page":22},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started","2.packages\u002Fadonisjs-permission\u002F1.getting-started",[118,121,124],{"title":10,"path":119,"stem":120,"icon":45},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F1.introduction",{"title":47,"path":122,"stem":123,"icon":50},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F2.installation",{"title":52,"path":125,"stem":126,"icon":55},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F3.configuration",{"title":128,"icon":86,"path":129,"stem":130,"children":131,"page":22},"Basic Usage","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage","2.packages\u002Fadonisjs-permission\u002F2.basic-usage",[132,137,142,147,152],{"title":133,"path":134,"stem":135,"icon":136},"Roles & Permissions","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Froles-and-permissions","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F1.roles-and-permissions","i-tabler-users",{"title":138,"path":139,"stem":140,"icon":141},"Checking Access","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fchecking","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F2.checking","i-tabler-checks",{"title":143,"path":144,"stem":145,"icon":146},"Middleware","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fmiddleware","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F3.middleware","i-tabler-route",{"title":148,"path":149,"stem":150,"icon":151},"Wildcard Permissions","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fwildcard-permissions","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F4.wildcard-permissions","i-tabler-asterisk",{"title":153,"path":154,"stem":155,"icon":156},"Catalog & Sync","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fcatalog","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F5.catalog","i-tabler-refresh",{"title":158,"icon":159,"path":160,"stem":161,"children":162,"page":22},"Advanced","i-tabler-tool","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced","2.packages\u002Fadonisjs-permission\u002F3.advanced",[163,168,173,178],{"title":164,"path":165,"stem":166,"icon":167},"Teams","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fteams","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F1.teams","i-tabler-building",{"title":169,"path":170,"stem":171,"icon":172},"Super-Admin","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fsuper-admin","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F2.super-admin","i-tabler-crown",{"title":174,"path":175,"stem":176,"icon":177},"Events","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fevents","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F3.events","i-tabler-radio",{"title":179,"path":180,"stem":181,"icon":182},"Cache","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fcache","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F4.cache","i-tabler-database",{"title":184,"icon":185,"path":186,"stem":187,"children":188,"page":22},"Upgrading","i-tabler-circle-arrow-up","\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading","2.packages\u002Fadonisjs-permission\u002F4.upgrading",[189],{"title":190,"path":191,"stem":192,"icon":193},"From adonis-lucid-permission","\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading\u002Ffrom-adonis-lucid-permission","2.packages\u002Fadonisjs-permission\u002F4.upgrading\u002F1.from-adonis-lucid-permission","i-tabler-git-compare",{"title":195,"icon":196,"path":197,"stem":198,"children":199,"page":22},"Simple Auth","i-tabler-key","\u002Fpackages\u002Fadonisjs-simple-auth","2.packages\u002Fadonisjs-simple-auth",[200,214,233],{"title":5,"icon":38,"path":201,"stem":202,"children":203,"page":22},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started",[204,208,211],{"title":10,"path":205,"stem":206,"icon":207},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F1.introduction","i-tabler-info-circle",{"title":47,"path":209,"stem":210,"icon":50},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F2.installation",{"title":52,"path":212,"stem":213,"icon":55},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-simple-auth\u002F1.getting-started\u002F3.configuration",{"title":215,"icon":110,"path":216,"stem":217,"children":218,"page":22},"Usage","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage","2.packages\u002Fadonisjs-simple-auth\u002F2.usage",[219,224,229],{"title":220,"path":221,"stem":222,"icon":223},"Generating API Keys","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Fgenerating-api-keys","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F1.generating-api-keys","i-tabler-terminal-2",{"title":225,"path":226,"stem":227,"icon":228},"Protecting Routes","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Fprotecting-routes","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F2.protecting-routes","i-tabler-lock",{"title":230,"path":231,"stem":232,"icon":107},"Error Handling & i18n","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fusage\u002Ferror-handling","2.packages\u002Fadonisjs-simple-auth\u002F2.usage\u002F3.error-handling",{"title":158,"icon":89,"path":234,"stem":235,"children":236,"page":22},"\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced",[237,242],{"title":238,"path":239,"stem":240,"icon":241},"Testing with Japa","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced\u002Ftesting-with-japa","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced\u002F1.testing-with-japa","i-tabler-flask",{"title":243,"path":244,"stem":245,"icon":246},"API Reference","\u002Fpackages\u002Fadonisjs-simple-auth\u002Fadvanced\u002Fapi-reference","2.packages\u002Fadonisjs-simple-auth\u002F3.advanced\u002F2.api-reference","i-tabler-code",{"title":248,"icon":249,"path":250,"stem":251,"children":252,"page":22},"AdonisJS Soft Deletes","i-tabler-trash-off","\u002Fpackages\u002Fadonisjs-soft-deletes","2.packages\u002Fadonisjs-soft-deletes",[253,263],{"title":5,"icon":38,"path":254,"stem":255,"children":256,"page":22},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started",[257,260],{"title":10,"path":258,"stem":259,"icon":207},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started\u002F1.introduction",{"title":47,"path":261,"stem":262,"icon":50},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-soft-deletes\u002F1.getting-started\u002F2.installation",{"title":215,"icon":45,"path":264,"stem":265,"children":266,"page":22},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage",[267,270],{"title":215,"path":268,"stem":269,"icon":246},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage\u002Fusage","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage\u002F1.usage",{"title":243,"path":271,"stem":272,"icon":45},"\u002Fpackages\u002Fadonisjs-soft-deletes\u002Fusage\u002Fapi-reference","2.packages\u002Fadonisjs-soft-deletes\u002F2.usage\u002F2.api-reference",{"id":274,"title":238,"body":275,"description":1020,"extension":1021,"meta":1022,"navigation":1023,"path":239,"seo":1024,"stem":240,"__hash__":1025},"docs\u002F2.packages\u002Fadonisjs-simple-auth\u002F3.advanced\u002F1.testing-with-japa.md",{"type":276,"value":277,"toc":1014},"minimark",[278,310,315,334,588,607,611,621,950,957,996,1010],[279,280,281,285,286,289,290,293,294,297,298,301,302,305,306,309],"p",{},[282,283,284],"code",{},"@eienjs\u002Fadonisjs-simple-auth"," provides an official plugin for ",[282,287,288],{},"@japa\u002Fapi-client"," that adds a ",[282,291,292],{},".withApiKey()"," macro to ",[282,295,296],{},"ApiRequest",". When called on a test request, it automatically reads ",[282,299,300],{},"apiKeyHeader"," and ",[282,303,304],{},"apiKeyValue"," from your ",[282,307,308],{},"config\u002Fsimpleauth.ts"," file and attaches the header to the outgoing request.",[311,312,314],"h2",{"id":313},"registering-the-plugin","Registering the Plugin",[279,316,317,318,321,322,325,326,329,330,333],{},"Open ",[282,319,320],{},"tests\u002Fbootstrap.ts"," and register ",[282,323,324],{},"simpleAuthApiClient(app)"," in your ",[282,327,328],{},"plugins"," array right after ",[282,331,332],{},"apiClient()",":",[335,336,341],"pre",{"className":337,"code":338,"filename":320,"language":339,"meta":340,"style":340},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { Config } from '@japa\u002Frunner\u002Ftypes';\nimport app from '@adonisjs\u002Fcore\u002Fservices\u002Fapp';\nimport { simpleAuthApiClient } from '@eienjs\u002Fadonisjs-simple-auth\u002Fplugins\u002Fapi_client';\nimport { apiClient } from '@japa\u002Fapi-client';\nimport { assert } from '@japa\u002Fassert';\nimport { pluginAdonisJS } from '@japa\u002Fplugin-adonisjs';\n\nexport const plugins: Config['plugins'] = [\n  assert(),\n  apiClient(),\n  pluginAdonisJS(app),\n  simpleAuthApiClient(app),\n];\n","ts","",[282,342,343,382,402,425,447,470,493,500,536,549,559,570,580],{"__ignoreMap":340},[344,345,348,352,355,359,363,366,369,372,376,379],"span",{"class":346,"line":347},"line",1,[344,349,351],{"class":350},"s7zQu","import",[344,353,354],{"class":350}," type",[344,356,358],{"class":357},"sMK4o"," {",[344,360,362],{"class":361},"sTEyZ"," Config",[344,364,365],{"class":357}," }",[344,367,368],{"class":350}," from",[344,370,371],{"class":357}," '",[344,373,375],{"class":374},"sfazB","@japa\u002Frunner\u002Ftypes",[344,377,378],{"class":357},"'",[344,380,381],{"class":357},";\n",[344,383,385,387,390,393,395,398,400],{"class":346,"line":384},2,[344,386,351],{"class":350},[344,388,389],{"class":361}," app ",[344,391,392],{"class":350},"from",[344,394,371],{"class":357},[344,396,397],{"class":374},"@adonisjs\u002Fcore\u002Fservices\u002Fapp",[344,399,378],{"class":357},[344,401,381],{"class":357},[344,403,405,407,409,412,414,416,418,421,423],{"class":346,"line":404},3,[344,406,351],{"class":350},[344,408,358],{"class":357},[344,410,411],{"class":361}," simpleAuthApiClient",[344,413,365],{"class":357},[344,415,368],{"class":350},[344,417,371],{"class":357},[344,419,420],{"class":374},"@eienjs\u002Fadonisjs-simple-auth\u002Fplugins\u002Fapi_client",[344,422,378],{"class":357},[344,424,381],{"class":357},[344,426,428,430,432,435,437,439,441,443,445],{"class":346,"line":427},4,[344,429,351],{"class":350},[344,431,358],{"class":357},[344,433,434],{"class":361}," apiClient",[344,436,365],{"class":357},[344,438,368],{"class":350},[344,440,371],{"class":357},[344,442,288],{"class":374},[344,444,378],{"class":357},[344,446,381],{"class":357},[344,448,450,452,454,457,459,461,463,466,468],{"class":346,"line":449},5,[344,451,351],{"class":350},[344,453,358],{"class":357},[344,455,456],{"class":361}," assert",[344,458,365],{"class":357},[344,460,368],{"class":350},[344,462,371],{"class":357},[344,464,465],{"class":374},"@japa\u002Fassert",[344,467,378],{"class":357},[344,469,381],{"class":357},[344,471,473,475,477,480,482,484,486,489,491],{"class":346,"line":472},6,[344,474,351],{"class":350},[344,476,358],{"class":357},[344,478,479],{"class":361}," pluginAdonisJS",[344,481,365],{"class":357},[344,483,368],{"class":350},[344,485,371],{"class":357},[344,487,488],{"class":374},"@japa\u002Fplugin-adonisjs",[344,490,378],{"class":357},[344,492,381],{"class":357},[344,494,496],{"class":346,"line":495},7,[344,497,499],{"emptyLinePlaceholder":498},true,"\n",[344,501,503,506,510,513,515,518,521,523,525,527,530,533],{"class":346,"line":502},8,[344,504,505],{"class":350},"export",[344,507,509],{"class":508},"spNyl"," const",[344,511,512],{"class":361}," plugins",[344,514,333],{"class":357},[344,516,362],{"class":517},"sBMFI",[344,519,520],{"class":361},"[",[344,522,378],{"class":357},[344,524,328],{"class":374},[344,526,378],{"class":357},[344,528,529],{"class":361},"] ",[344,531,532],{"class":357},"=",[344,534,535],{"class":361}," [\n",[344,537,539,543,546],{"class":346,"line":538},9,[344,540,542],{"class":541},"s2Zo4","  assert",[344,544,545],{"class":361},"()",[344,547,548],{"class":357},",\n",[344,550,552,555,557],{"class":346,"line":551},10,[344,553,554],{"class":541},"  apiClient",[344,556,545],{"class":361},[344,558,548],{"class":357},[344,560,562,565,568],{"class":346,"line":561},11,[344,563,564],{"class":541},"  pluginAdonisJS",[344,566,567],{"class":361},"(app)",[344,569,548],{"class":357},[344,571,573,576,578],{"class":346,"line":572},12,[344,574,575],{"class":541},"  simpleAuthApiClient",[344,577,567],{"class":361},[344,579,548],{"class":357},[344,581,583,586],{"class":346,"line":582},13,[344,584,585],{"class":361},"]",[344,587,381],{"class":357},[589,590,591],"note",{},[279,592,593,595,596,599,600,602,603,606],{},[282,594,288],{}," (",[282,597,598],{},"^3.2.1",") must be installed in your project and ",[282,601,308],{}," must export a configuration created with ",[282,604,605],{},"defineConfig",".",[311,608,610],{"id":609},"writing-authenticated-tests","Writing Authenticated Tests",[279,612,613,614,616,617,620],{},"Once the plugin is registered, chain ",[282,615,292],{}," onto any ",[282,618,619],{},"client"," request in your functional tests:",[335,622,625],{"className":337,"code":623,"filename":624,"language":339,"meta":340,"style":340},"import { test } from '@japa\u002Frunner';\n\ntest.group('Users API', () => {\n  test('returns 401 when API key header is not provided', async ({ client }) => {\n    const response = await client.get('\u002Fapi\u002Fv1\u002Fusers');\n\n    response.assertStatus(401);\n    response.assertBodyContains({\n      errors: [{ message: 'Unauthorized access' }],\n    });\n  });\n\n  test('returns users list when authenticated with withApiKey()', async ({ client }) => {\n    const response = await client.get('\u002Fapi\u002Fv1\u002Fusers').withApiKey();\n\n    response.assertStatus(200);\n  });\n});\n","tests\u002Ffunctional\u002Fusers.spec.ts",[282,626,627,649,653,685,719,754,758,778,792,823,832,841,845,872,908,913,931,940],{"__ignoreMap":340},[344,628,629,631,633,636,638,640,642,645,647],{"class":346,"line":347},[344,630,351],{"class":350},[344,632,358],{"class":357},[344,634,635],{"class":361}," test",[344,637,365],{"class":357},[344,639,368],{"class":350},[344,641,371],{"class":357},[344,643,644],{"class":374},"@japa\u002Frunner",[344,646,378],{"class":357},[344,648,381],{"class":357},[344,650,651],{"class":346,"line":384},[344,652,499],{"emptyLinePlaceholder":498},[344,654,655,658,660,663,666,668,671,673,676,679,682],{"class":346,"line":404},[344,656,657],{"class":361},"test",[344,659,606],{"class":357},[344,661,662],{"class":541},"group",[344,664,665],{"class":361},"(",[344,667,378],{"class":357},[344,669,670],{"class":374},"Users API",[344,672,378],{"class":357},[344,674,675],{"class":357},",",[344,677,678],{"class":357}," ()",[344,680,681],{"class":508}," =>",[344,683,684],{"class":357}," {\n",[344,686,687,690,693,695,698,700,702,705,708,712,715,717],{"class":346,"line":427},[344,688,689],{"class":541},"  test",[344,691,665],{"class":692},"swJcz",[344,694,378],{"class":357},[344,696,697],{"class":374},"returns 401 when API key header is not provided",[344,699,378],{"class":357},[344,701,675],{"class":357},[344,703,704],{"class":508}," async",[344,706,707],{"class":357}," ({",[344,709,711],{"class":710},"sHdIc"," client",[344,713,714],{"class":357}," })",[344,716,681],{"class":508},[344,718,684],{"class":357},[344,720,721,724,727,730,733,735,737,740,742,744,747,749,752],{"class":346,"line":449},[344,722,723],{"class":508},"    const",[344,725,726],{"class":361}," response",[344,728,729],{"class":357}," =",[344,731,732],{"class":350}," await",[344,734,711],{"class":361},[344,736,606],{"class":357},[344,738,739],{"class":541},"get",[344,741,665],{"class":692},[344,743,378],{"class":357},[344,745,746],{"class":374},"\u002Fapi\u002Fv1\u002Fusers",[344,748,378],{"class":357},[344,750,751],{"class":692},")",[344,753,381],{"class":357},[344,755,756],{"class":346,"line":472},[344,757,499],{"emptyLinePlaceholder":498},[344,759,760,763,765,768,770,774,776],{"class":346,"line":495},[344,761,762],{"class":361},"    response",[344,764,606],{"class":357},[344,766,767],{"class":541},"assertStatus",[344,769,665],{"class":692},[344,771,773],{"class":772},"sbssI","401",[344,775,751],{"class":692},[344,777,381],{"class":357},[344,779,780,782,784,787,789],{"class":346,"line":502},[344,781,762],{"class":361},[344,783,606],{"class":357},[344,785,786],{"class":541},"assertBodyContains",[344,788,665],{"class":692},[344,790,791],{"class":357},"{\n",[344,793,794,797,799,802,805,808,810,812,815,817,819,821],{"class":346,"line":538},[344,795,796],{"class":692},"      errors",[344,798,333],{"class":357},[344,800,801],{"class":692}," [",[344,803,804],{"class":357},"{",[344,806,807],{"class":692}," message",[344,809,333],{"class":357},[344,811,371],{"class":357},[344,813,814],{"class":374},"Unauthorized access",[344,816,378],{"class":357},[344,818,365],{"class":357},[344,820,585],{"class":692},[344,822,548],{"class":357},[344,824,825,828,830],{"class":346,"line":551},[344,826,827],{"class":357},"    }",[344,829,751],{"class":692},[344,831,381],{"class":357},[344,833,834,837,839],{"class":346,"line":561},[344,835,836],{"class":357},"  }",[344,838,751],{"class":692},[344,840,381],{"class":357},[344,842,843],{"class":346,"line":572},[344,844,499],{"emptyLinePlaceholder":498},[344,846,847,849,851,853,856,858,860,862,864,866,868,870],{"class":346,"line":582},[344,848,689],{"class":541},[344,850,665],{"class":692},[344,852,378],{"class":357},[344,854,855],{"class":374},"returns users list when authenticated with withApiKey()",[344,857,378],{"class":357},[344,859,675],{"class":357},[344,861,704],{"class":508},[344,863,707],{"class":357},[344,865,711],{"class":710},[344,867,714],{"class":357},[344,869,681],{"class":508},[344,871,684],{"class":357},[344,873,875,877,879,881,883,885,887,889,891,893,895,897,899,901,904,906],{"class":346,"line":874},14,[344,876,723],{"class":508},[344,878,726],{"class":361},[344,880,729],{"class":357},[344,882,732],{"class":350},[344,884,711],{"class":361},[344,886,606],{"class":357},[344,888,739],{"class":541},[344,890,665],{"class":692},[344,892,378],{"class":357},[344,894,746],{"class":374},[344,896,378],{"class":357},[344,898,751],{"class":692},[344,900,606],{"class":357},[344,902,903],{"class":541},"withApiKey",[344,905,545],{"class":692},[344,907,381],{"class":357},[344,909,911],{"class":346,"line":910},15,[344,912,499],{"emptyLinePlaceholder":498},[344,914,916,918,920,922,924,927,929],{"class":346,"line":915},16,[344,917,762],{"class":361},[344,919,606],{"class":357},[344,921,767],{"class":541},[344,923,665],{"class":692},[344,925,926],{"class":772},"200",[344,928,751],{"class":692},[344,930,381],{"class":357},[344,932,934,936,938],{"class":346,"line":933},17,[344,935,836],{"class":357},[344,937,751],{"class":692},[344,939,381],{"class":357},[344,941,943,946,948],{"class":346,"line":942},18,[344,944,945],{"class":357},"}",[344,947,751],{"class":361},[344,949,381],{"class":357},[311,951,953,954,956],{"id":952},"how-withapikey-works","How ",[282,955,292],{}," Works",[958,959,960,970,983],"ol",{},[961,962,963,964,966,967,606],"li",{},"Resolves your ",[282,965,308],{}," configuration via AdonisJS ",[282,968,969],{},"configProvider",[961,971,972,973,976,977,979,980,982],{},"Registers the ",[282,974,975],{},"withApiKey()"," macro on ",[282,978,296],{}," and augments ",[282,981,288],{}," TypeScript types automatically.",[961,984,985,986,989,990,992,993,606],{},"Registers an ",[282,987,988],{},"ApiClient.setup"," hook that inspects whether ",[282,991,292],{}," was called on the current request, and if so, sets ",[282,994,995],{},"request.header(config.apiKeyHeader, config.apiKeyValue.release())",[997,998,999],"tip",{},[279,1000,1001,1002,1006,1007,1009],{},"Because the hook is scoped per request via a symbol flag, requests that do ",[1003,1004,1005],"strong",{},"not"," call ",[282,1008,292],{}," remain unauthenticated, making it easy to test both authorized and unauthorized scenarios in the same test group.",[1011,1012,1013],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":340,"searchDepth":347,"depth":384,"links":1015},[1016,1017,1018],{"id":313,"depth":384,"text":314},{"id":609,"depth":384,"text":610},{"id":952,"depth":384,"text":1019},"How .withApiKey() Works","Authenticate functional HTTP tests effortlessly using the simpleAuthApiClient Japa plugin.","md",{},{"icon":241},{"title":238,"description":1020},"HV6ZcWs-GLFg2cqvwZHnY4VsRZvi-aGh2TRHOmlvPmI",[1027,1029],{"title":230,"path":231,"stem":232,"description":1028,"icon":107,"children":-1},"Understand how SimpleAuthException handles 401 Unauthorized responses and i18n translations.",{"title":243,"path":244,"stem":245,"description":1030,"icon":246,"children":-1},"Complete reference of classes, functions, types, and exports provided by @eienjs\u002Fadonisjs-simple-auth.",{"id":1032,"extension":1033,"meta":1034,"packages":1035,"stem":1078,"__hash__":1079},"packages\u002Fdata\u002Fpackages.json","json",{},[1036,1043,1049,1055,1060,1066,1072],{"name":1037,"title":1038,"description":1039,"icon":86,"category":1040,"repo":1041,"version":1042,"docs":498},"adonisjs-permission","Permission","Associate users with roles and permissions in your AdonisJS app","adonisjs","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-permission","1.0.0",{"name":1044,"title":1045,"description":1046,"icon":33,"category":1040,"repo":1047,"version":1048,"docs":498},"adonisjs-api-query","API Query","Easily build Lucid queries from API requests","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-api-query","3.0.1",{"name":1050,"title":1051,"description":1052,"icon":249,"category":1040,"repo":1053,"version":1054,"docs":498},"adonisjs-soft-deletes","Soft Deletes","Provider-based Soft deletes for AdonisJS","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-soft-deletes","1.0.2",{"name":1056,"title":195,"description":1057,"icon":196,"category":1040,"repo":1058,"version":1059,"docs":498},"adonisjs-simple-auth","Single API key authentication for AdonisJS v7 applications","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-simple-auth","2.1.0",{"name":1061,"title":1062,"description":1063,"icon":1064,"category":1040,"repo":1065,"docs":22},"adonisjs-sentry","Sentry","Sentry service provider for AdonisJS v7.","i-tabler-bug","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-sentry",{"name":1067,"title":1068,"description":1069,"icon":141,"category":1070,"repo":1071,"docs":22},"eslint-config","ESLint Config","The EienJS ESLint config preset.","tooling","https:\u002F\u002Fgithub.com\u002Feienjs\u002Feslint-config",{"name":1073,"title":1074,"description":1075,"icon":1076,"category":1070,"repo":1077,"docs":22},"adonisjs-pkg-boilerplate","Package Boilerplate","A boilerplate for creating AdonisJS packages.","i-tabler-package","https:\u002F\u002Fgithub.com\u002Feienjs\u002Fadonisjs-pkg-boilerplate","data\u002Fpackages","5fILU7Jigsw2ib-NQg4Fr4sWgIkg0kLgpVm371gTzVY",1793868428517]