import { createClient } from '../client';
import { makeId } from '@event-inc/utils';
import {
	createOauthConnection,
	createOauthDestination,
	createOauthSource,
} from '../logic';

require('dotenv').config();
jest.setTimeout(30000);

describe('Oauth Connections APIs Specs', () => {
	it('Should create a Xero oauth connection', async () => {
		const client = createClient(process.env.BUILDABLE_SECRET_KEY, {
			baseUrl: process.env.EVENT_INC_API_BASE_URL,
		});

		const { source, destination } = await createOauthConnection(client, {
			type: 'xero',
			group: `my-xero-${makeId(4)}`,
			label: `my-xero-${makeId(4)}`,
			config: {
				clientId: process.env.CONNECTIONS_TEST_XERO_OAUTH_APP_CLIENT_ID,
				clientSecret: process.env.CONNECTIONS_TEST_XERO_OAUTH_APP_CLIENT_SECRET,
				redirectUri: process.env.CONNECTIONS_TEST_XERO_OAUTH_REDIRECT_URI,
				code: process.env.CONNECTIONS_TEST_XERO_OAUTH_CODE,
			},
		});

		expect(source).toHaveProperty('key');
		expect(destination).toHaveProperty('key');
	});

	it('Should create a Xero oauth source', async () => {
		const client = createClient(process.env.BUILDABLE_SECRET_KEY, {
			baseUrl: process.env.EVENT_INC_API_BASE_URL,
		});

		const source = await createOauthSource(client, {
			type: 'xero',
			group: `my-xero-${makeId(4)}`,
			label: `my-xero-${makeId(4)}`,
			config: {
				clientId: process.env.CONNECTIONS_TEST_XERO_OAUTH_APP_CLIENT_ID,
				clientSecret: process.env.CONNECTIONS_TEST_XERO_OAUTH_APP_CLIENT_SECRET,
				redirectUri: process.env.CONNECTIONS_TEST_XERO_OAUTH_REDIRECT_URI,
				code: process.env.CONNECTIONS_TEST_XERO_OAUTH_CODE,
			},
		});

		expect(source).toHaveProperty('key');
	});

	it('Should create a Xero oauth destination', async () => {
		const client = createClient(process.env.BUILDABLE_SECRET_KEY, {
			baseUrl: process.env.EVENT_INC_API_BASE_URL,
		});

		const destination = await createOauthDestination(client, {
			type: 'xero',
			group: `my-xero-${makeId(4)}`,
			label: `my-xero-${makeId(4)}`,
			config: {
				clientId: process.env.CONNECTIONS_TEST_XERO_OAUTH_APP_CLIENT_ID,
				clientSecret: process.env.CONNECTIONS_TEST_XERO_OAUTH_APP_CLIENT_SECRET,
				redirectUri: process.env.CONNECTIONS_TEST_XERO_OAUTH_REDIRECT_URI,
				code: process.env.CONNECTIONS_TEST_XERO_OAUTH_CODE,
			},
		});

		expect(destination).toHaveProperty('key');
	});
});

