import axios from 'axios';
import { config } from '../config';
const base = "http://localhost:" + config.internal_port

const axios_config = {
	validateStatus: undefined
};

describe('POST /reset without auth', () => {
	it('Post without auth should return 401', async () => {
		const res = await axios.post(base + '/reset', null, axios_config);
		expect(res.status).toEqual(401);
	});
});

describe('POST /reset with auth but wrong body', () => {
	it('Post with auth but no body should return 400', async () => {
		const res = await axios.post(base + '/reset?key=' + config.api_key, null, axios_config);
		expect(res.status).toEqual(400);
	});
	it('Post with auth but no mail should return 400', async () => {
		const res = await axios.post(base + '/reset?key=' + config.api_key, { resetKey: "test" }, axios_config);
		expect(res.status).toEqual(400);
	});
	it('Post with auth but no reset key should return 400', async () => {
		const res = await axios.post(base + '/reset?key=' + config.api_key, { address: "test@dev.lauf-fuer-kaya.de" }, axios_config);
		expect(res.status).toEqual(400);
	});
	it('Post with auth but invalid mail should return 400', async () => {
		const res = await axios.post(base + '/reset?key=' + config.api_key, { resetKey: "test", address: "testdev.l.de" }, axios_config);
		expect(res.status).toEqual(400);
	});
});

describe('POST /reset with auth and vaild body', () => {
	it('Post with auth, body and no locale should return 200', async () => {
		const res = await axios.post(base + '/reset?key=' + config.api_key, {
			resetKey: "test",
			address: "test@dev.lauf-fuer-kaya.de"
		}, axios_config);
		expect(res.status).toEqual(200);
		expect(res.data).toEqual({
			success: true,
			message: "Sent!",
			locale: "en",
			type: "PASSWORD_RESET"
		})
	});
	it('Post with auth, body and locale=en should return 200', async () => {
		const res = await axios.post(base + '/reset?locale=en&key=' + config.api_key, {
			resetKey: "test",
			address: "test@dev.lauf-fuer-kaya.de"
		}, axios_config);
		expect(res.status).toEqual(200);
		expect(res.data).toEqual({
			success: true,
			message: "Sent!",
			locale: "en",
			type: "PASSWORD_RESET"
		})
	});
	it('Post with auth, body and locale=de should return 200', async () => {
		const res = await axios.post(base + '/reset?locale=de&key=' + config.api_key, {
			resetKey: "test",
			address: "test@dev.lauf-fuer-kaya.de"
		}, axios_config);
		expect(res.status).toEqual(200);
		expect(res.data).toEqual({
			success: true,
			message: "Sent!",
			locale: "de",
			type: "PASSWORD_RESET"
		})
	});
});