Delete endpoint
This commit is contained in:
parent
2b6b91fe18
commit
d3f082976c
|
@ -52,3 +52,12 @@ export async function edit(
|
||||||
const config = await sdk.oauth2.update(toUpdate)
|
const config = await sdk.oauth2.update(toUpdate)
|
||||||
ctx.body = { config }
|
ctx.body = { config }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function remove(
|
||||||
|
ctx: Ctx<UpsertOAuth2ConfigRequest, UpsertOAuth2ConfigResponse>
|
||||||
|
) {
|
||||||
|
const configToRemove = ctx.params.id
|
||||||
|
|
||||||
|
await sdk.oauth2.remove(configToRemove)
|
||||||
|
ctx.status = 204
|
||||||
|
}
|
||||||
|
|
|
@ -18,5 +18,10 @@ router.put(
|
||||||
oAuth2ConfigValidator(),
|
oAuth2ConfigValidator(),
|
||||||
controller.edit
|
controller.edit
|
||||||
)
|
)
|
||||||
|
router.delete(
|
||||||
|
"/api/oauth2/:id",
|
||||||
|
authorized(PermissionType.BUILDER),
|
||||||
|
controller.remove
|
||||||
|
)
|
||||||
|
|
||||||
export default router
|
export default router
|
||||||
|
|
|
@ -134,7 +134,7 @@ describe("/oauth2", () => {
|
||||||
|
|
||||||
it("throw if config not found", async () => {
|
it("throw if config not found", async () => {
|
||||||
await config.api.oauth2.update("unexisting", makeOAuth2Config(), {
|
await config.api.oauth2.update("unexisting", makeOAuth2Config(), {
|
||||||
status: 400,
|
status: 404,
|
||||||
body: { message: "OAuth2 config with id 'unexisting' not found." },
|
body: { message: "OAuth2 config with id 'unexisting' not found." },
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -156,4 +156,35 @@ describe("/oauth2", () => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("delete", () => {
|
||||||
|
let existingConfigs: OAuth2Config[] = []
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
existingConfigs = []
|
||||||
|
for (let i = 0; i < 5; i++) {
|
||||||
|
const oauth2Config = makeOAuth2Config()
|
||||||
|
const result = await config.api.oauth2.create(oauth2Config)
|
||||||
|
|
||||||
|
existingConfigs.push({ ...oauth2Config, id: result.config.id })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
it("can delete an existing configuration", async () => {
|
||||||
|
const { id: configId } = _.sample(existingConfigs)!
|
||||||
|
|
||||||
|
await config.api.oauth2.delete(configId, { status: 204 })
|
||||||
|
|
||||||
|
const response = await config.api.oauth2.fetch()
|
||||||
|
expect(response.configs).toHaveLength(existingConfigs.length - 1)
|
||||||
|
expect(response.configs.find(c => c.id === configId)).toBeUndefined()
|
||||||
|
})
|
||||||
|
|
||||||
|
it("throw if config not found", async () => {
|
||||||
|
await config.api.oauth2.delete("unexisting", {
|
||||||
|
status: 404,
|
||||||
|
body: { message: "OAuth2 config with id 'unexisting' not found." },
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -57,7 +57,7 @@ export async function update(config: OAuth2Config): Promise<OAuth2Config> {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!doc.configs[config.id]) {
|
if (!doc.configs[config.id]) {
|
||||||
throw new HTTPError(`OAuth2 config with id '${config.id}' not found.`, 400)
|
throw new HTTPError(`OAuth2 config with id '${config.id}' not found.`, 404)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -75,3 +75,19 @@ export async function update(config: OAuth2Config): Promise<OAuth2Config> {
|
||||||
await db.put(doc)
|
await db.put(doc)
|
||||||
return doc.configs[config.id]
|
return doc.configs[config.id]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function remove(configId: string): Promise<void> {
|
||||||
|
const db = context.getAppDB()
|
||||||
|
const doc: OAuth2Configs = (await getDocument(db)) ?? {
|
||||||
|
_id: DocumentType.OAUTH2_CONFIG,
|
||||||
|
configs: {},
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!doc.configs[configId]) {
|
||||||
|
throw new HTTPError(`OAuth2 config with id '${configId}' not found.`, 404)
|
||||||
|
}
|
||||||
|
|
||||||
|
delete doc.configs[configId]
|
||||||
|
|
||||||
|
await db.put(doc)
|
||||||
|
}
|
||||||
|
|
|
@ -35,4 +35,10 @@ export class OAuth2API extends TestAPI {
|
||||||
expectations,
|
expectations,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete = async (id: string, expectations?: Expectations) => {
|
||||||
|
return await this._delete<void>(`/api/oauth2/${id}`, {
|
||||||
|
expectations,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue