/api/administrator/profiles (GET)
await global.api.administrator.Profiles.get(req) Located in Dashboard API
Returns array
Exceptions
These exceptions are thrown (NodeJS) or returned as JSON (HTTP) if you provide incorrect data or do not meet the requirements:
Exception | Circumstances |
---|
Receives
API routes may receive parameters from the URL and POST supporting simple and multipart:
Field | Value | Required | Type |
---|---|---|---|
accountid | string | optional | URL |
all | boolean | optional | URL |
limit | integer | optional | URL |
offset | integer | optional | URL |
NodeJS source (edit on github)
If you see a problem with the source submit a pull request on Github.
const dashboard = require('../../../../index.js')
module.exports = {
get: async (req) => {
req.query = req.query || {}
let index
if (req.query.accountid) {
index = `${req.appid}/account/profiles/${req.query.accountid}`
} else {
index = `${req.appid}/profiles`
}
const storage = req.storage || dashboard
let profileids
if (req.query.all) {
profileids = await storage.StorageList.listAll(index)
} else {
const offset = req.query.offset ? parseInt(req.query.offset, 10) : 0
const limit = req.query.limit ? parseInt(req.query.limit, 10) : global.pageSize
profileids = await storage.StorageList.list(index, offset, limit)
}
if (!profileids || !profileids.length) {
return null
}
req.cacheData = await storage.Storage.readMany(`${req.appid}/profile`, profileids)
const profiles = []
for (const profileid of profileids) {
req.query.profileid = profileid
const profile = await global.api.administrator.Profile.get(req)
profiles.push(profile)
}
return profiles
}
}
Test source (edit on github)
Tests perform real HTTP requests against a running Dashboard server.
/* eslint-env mocha */
const assert = require('assert')
const TestHelper = require('../../../../test-helper.js')
describe('/api/administrator/profiles', function () {
const cachedResponses = {}
const cachedProfiles = []
before(async () => {
await TestHelper.setupBeforeEach()
const administrator = await TestHelper.createOwner()
cachedProfiles.push(administrator.profile.profileid)
global.delayDiskWrites = true
for (let i = 0, len = global.pageSize + 1; i < len; i++) {
const user = await TestHelper.createUser()
cachedProfiles.unshift(user.profile.profileid)
}
const req1 = TestHelper.createRequest('/api/administrator/profiles?offset=1')
req1.account = administrator.account
req1.session = administrator.session
cachedResponses.offset = await req1.get()
const req2 = TestHelper.createRequest('/api/administrator/profiles?limit=1')
req2.account = administrator.account
req2.session = administrator.session
cachedResponses.limit = await req2.get()
const req3 = TestHelper.createRequest('/api/administrator/profiles?all=true')
req3.account = administrator.account
req3.session = administrator.session
cachedResponses.all = await req3.get()
const req4 = TestHelper.createRequest(`/api/administrator/profiles?accountid=${administrator.account.accountid}`)
req4.account = administrator.account
req4.session = administrator.session
cachedResponses.accountid = await req4.get()
const req5 = TestHelper.createRequest('/api/administrator/profiles')
req5.account = administrator.account
req5.session = administrator.session
req5.filename = __filename
req5.saveResponse = true
cachedResponses.returns = await req5.get()
global.pageSize = 3
cachedResponses.pageSize = await req5.get()
})
describe('receives', () => {
it('optional querystring offset (integer)', async () => {
const offset = 1
const profilesNow = cachedResponses.offset
for (let i = 0, len = global.pageSize; i < len; i++) {
assert.strictEqual(profilesNow[i].profileid, cachedProfiles[offset + i])
}
})
it('optional querystring limit (integer)', async () => {
const limit = 1
const profilesNow = cachedResponses.limit
assert.strictEqual(profilesNow.length, limit)
})
it('optional querystring all (boolean)', async () => {
const profilesNow = cachedResponses.all
assert.strictEqual(profilesNow.length, cachedProfiles.length)
})
it('optional querystring accountid (string)', async () => {
const profilesNow = cachedResponses.accountid
assert.strictEqual(profilesNow.length, 1)
})
})
describe('returns', () => {
it('array', async () => {
const profilesNow = cachedResponses.returns
assert.strictEqual(profilesNow.length, global.pageSize)
})
})
describe('configuration', () => {
it('environment PAGE_SIZE', async () => {
global.pageSize = 3
const profilesNow = cachedResponses.pageSize
assert.strictEqual(profilesNow.length, global.pageSize)
})
})
})