import * as Order from '../../helpers/order' import { has, merge } from 'ramda' import Cdiscount from '../../../__fixtures__/merchants/keys/cdiscount' import Merchant from '../../../src/models/merchant' import MockMerchantAPI from '../../../__mocks__/apis/merchant' import Server from '../../helpers/server' import Url from '../../../src/models/url' import { orderSession } from '../../../src/sessions' const options = { method: 'POST', url: '/orders/authorize', } describe('`POST` /orders/authorize', () => { it('should return a successfull authorization', async () => { try { new MockMerchantAPI().success().fixture(Cdiscount).mockCheckApiKey(Cdiscount.api_key.id) const payload = Order.create() const res = await Server.inject(merge(options, { payload, headers: { Authorization: `Bearer ${Cdiscount.api_key.id}`, }, })) as any expect(res.statusCode).toBe(200) expect(has('url', res.result)).toBeTruthy() const url = new Url() url.url = res.result.url url.decode() const merchant = new Merchant(Cdiscount.api_key.merchant) const decoded = await merchant.verify(url.token) const data = await orderSession.getData(decoded.id) expect(data).toEqual(merge(payload, { quantity: 1, version: 1 })) } catch (err) { console.error(err) expect(err).toBeNull() } }) })