Compare commits
No commits in common. "13e839902c063057e902fdb52b403be081d1667e" and "a1a94ec9dafecd9b4c453cc8cfe32c2e90acccf5" have entirely different histories.
13e839902c
...
a1a94ec9da
@ -1,6 +1,5 @@
|
|||||||
import { Request } from "express";
|
|
||||||
import * as jwt from "jsonwebtoken";
|
import * as jwt from "jsonwebtoken";
|
||||||
import { Body, Get, JsonController, OnUndefined, Param, Post, QueryParam, Req, UseBefore } from 'routing-controllers';
|
import { Body, Get, JsonController, OnUndefined, Param, Post, QueryParam } from 'routing-controllers';
|
||||||
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
|
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
|
||||||
import { getConnectionManager, Repository } from 'typeorm';
|
import { getConnectionManager, Repository } from 'typeorm';
|
||||||
import { config } from '../config';
|
import { config } from '../config';
|
||||||
@ -8,27 +7,23 @@ import { InvalidCredentialsError, JwtNotProvidedError } from '../errors/AuthErro
|
|||||||
import { MailSendingError } from '../errors/MailErrors';
|
import { MailSendingError } from '../errors/MailErrors';
|
||||||
import { RunnerEmailNeededError, RunnerNotFoundError, RunnerSelfserviceTimeoutError } from '../errors/RunnerErrors';
|
import { RunnerEmailNeededError, RunnerNotFoundError, RunnerSelfserviceTimeoutError } from '../errors/RunnerErrors';
|
||||||
import { RunnerOrganizationNotFoundError } from '../errors/RunnerOrganizationErrors';
|
import { RunnerOrganizationNotFoundError } from '../errors/RunnerOrganizationErrors';
|
||||||
import { ScanStationNotFoundError } from '../errors/ScanStationErrors';
|
|
||||||
import { JwtCreator } from '../jwtcreator';
|
import { JwtCreator } from '../jwtcreator';
|
||||||
import { Mailer } from '../mailer';
|
import { Mailer } from '../mailer';
|
||||||
import ScanAuth from '../middlewares/ScanAuth';
|
|
||||||
import { CreateSelfServiceCitizenRunner } from '../models/actions/create/CreateSelfServiceCitizenRunner';
|
import { CreateSelfServiceCitizenRunner } from '../models/actions/create/CreateSelfServiceCitizenRunner';
|
||||||
import { CreateSelfServiceRunner } from '../models/actions/create/CreateSelfServiceRunner';
|
import { CreateSelfServiceRunner } from '../models/actions/create/CreateSelfServiceRunner';
|
||||||
import { Runner } from '../models/entities/Runner';
|
import { Runner } from '../models/entities/Runner';
|
||||||
import { RunnerGroup } from '../models/entities/RunnerGroup';
|
import { RunnerGroup } from '../models/entities/RunnerGroup';
|
||||||
import { RunnerOrganization } from '../models/entities/RunnerOrganization';
|
import { RunnerOrganization } from '../models/entities/RunnerOrganization';
|
||||||
import { ScanStation } from '../models/entities/ScanStation';
|
|
||||||
import { ResponseEmpty } from '../models/responses/ResponseEmpty';
|
import { ResponseEmpty } from '../models/responses/ResponseEmpty';
|
||||||
import { ResponseScanStation } from '../models/responses/ResponseScanStation';
|
|
||||||
import { ResponseSelfServiceOrganisation } from '../models/responses/ResponseSelfServiceOrganisation';
|
import { ResponseSelfServiceOrganisation } from '../models/responses/ResponseSelfServiceOrganisation';
|
||||||
import { ResponseSelfServiceRunner } from '../models/responses/ResponseSelfServiceRunner';
|
import { ResponseSelfServiceRunner } from '../models/responses/ResponseSelfServiceRunner';
|
||||||
import { ResponseSelfServiceScan } from '../models/responses/ResponseSelfServiceScan';
|
import { ResponseSelfServiceScan } from '../models/responses/ResponseSelfServiceScan';
|
||||||
|
|
||||||
|
|
||||||
@JsonController()
|
@JsonController()
|
||||||
export class RunnerSelfServiceController {
|
export class RunnerSelfServiceController {
|
||||||
private runnerRepository: Repository<Runner>;
|
private runnerRepository: Repository<Runner>;
|
||||||
private orgRepository: Repository<RunnerOrganization>;
|
private orgRepository: Repository<RunnerOrganization>;
|
||||||
private stationRepository: Repository<ScanStation>;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the repository of this controller's model/entity.
|
* Gets the repository of this controller's model/entity.
|
||||||
@ -36,7 +31,6 @@ export class RunnerSelfServiceController {
|
|||||||
constructor() {
|
constructor() {
|
||||||
this.runnerRepository = getConnectionManager().get().getRepository(Runner);
|
this.runnerRepository = getConnectionManager().get().getRepository(Runner);
|
||||||
this.orgRepository = getConnectionManager().get().getRepository(RunnerOrganization);
|
this.orgRepository = getConnectionManager().get().getRepository(RunnerOrganization);
|
||||||
this.stationRepository = getConnectionManager().get().getRepository(ScanStation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Get('/runners/me/:jwt')
|
@Get('/runners/me/:jwt')
|
||||||
@ -62,18 +56,6 @@ export class RunnerSelfServiceController {
|
|||||||
return responseScans;
|
return responseScans;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Get('/stations/me')
|
|
||||||
@UseBefore(ScanAuth)
|
|
||||||
@ResponseSchema(ResponseScanStation)
|
|
||||||
@ResponseSchema(ScanStationNotFoundError, { statusCode: 404 })
|
|
||||||
@OnUndefined(ScanStationNotFoundError)
|
|
||||||
@OpenAPI({ description: 'Lists basic information about the station whose token got provided. <br> This includes it\'s associated track.', security: [{ "ScanApiToken": [] }] })
|
|
||||||
async getStationMe(@Req() req: Request) {
|
|
||||||
let scan = await this.stationRepository.findOne({ id: parseInt(req.headers["station_id"].toString()) }, { relations: ['track'] })
|
|
||||||
if (!scan) { throw new ScanStationNotFoundError(); }
|
|
||||||
return scan.toResponse();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Post('/runners/forgot')
|
@Post('/runners/forgot')
|
||||||
@ResponseSchema(RunnerNotFoundError, { statusCode: 404 })
|
@ResponseSchema(RunnerNotFoundError, { statusCode: 404 })
|
||||||
@OnUndefined(ResponseEmpty)
|
@OnUndefined(ResponseEmpty)
|
||||||
|
@ -62,7 +62,7 @@ const ScanAuth = async (req: Request, res: Response, next: () => void) => {
|
|||||||
res.status(401).send("Api token invalid.");
|
res.status(401).send("Api token invalid.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
req.headers["station_id"] = station.id.toString();
|
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,33 +57,3 @@ describe('adding + getting stations', () => {
|
|||||||
expect(res.headers['content-type']).toContain("application/json");
|
expect(res.headers['content-type']).toContain("application/json");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// ---------------
|
|
||||||
describe('adding + getting via me endpoint', () => {
|
|
||||||
let added_track;
|
|
||||||
let added_station;
|
|
||||||
it('creating a track should return 200', async () => {
|
|
||||||
const res1 = await axios.post(base + '/api/tracks', {
|
|
||||||
"name": "test123",
|
|
||||||
"distance": 123
|
|
||||||
}, axios_config);
|
|
||||||
added_track = res1.data
|
|
||||||
expect(res1.status).toEqual(200);
|
|
||||||
expect(res1.headers['content-type']).toContain("application/json")
|
|
||||||
});
|
|
||||||
it('correct description and track input for station creation return 200', async () => {
|
|
||||||
const res = await axios.post(base + '/api/stations', {
|
|
||||||
"track": added_track.id,
|
|
||||||
"description": "I am but a simple test."
|
|
||||||
}, axios_config);
|
|
||||||
added_station = res.data;
|
|
||||||
expect(res.status).toEqual(200);
|
|
||||||
expect(res.headers['content-type']).toContain("application/json")
|
|
||||||
});
|
|
||||||
it('correct description and track input for station creation return 200', async () => {
|
|
||||||
const res = await axios.get(base + '/api/stations/me', { headers: { "authorization": "Bearer " + added_station.key } });
|
|
||||||
expect(res.status).toEqual(200);
|
|
||||||
expect(res.headers['content-type']).toContain("application/json")
|
|
||||||
added_station.key = "Only visible on creation.";
|
|
||||||
expect(res.data).toEqual(added_station);
|
|
||||||
});
|
|
||||||
});
|
|
Loading…
x
Reference in New Issue
Block a user