Add authentication optional api url parameter (#5803)
This commit is contained in:
@ -23,6 +23,16 @@ export default {
|
||||
helpText:
|
||||
'Create an API key in [your twenty workspace](https://app.twenty.com/settings/developers)',
|
||||
},
|
||||
{
|
||||
computed: false,
|
||||
key: 'apiUrl',
|
||||
required: false,
|
||||
label: 'Api Url',
|
||||
type: 'string',
|
||||
placeholder: 'https://api.twenty.com',
|
||||
helpText:
|
||||
'Set this only if you self-host Twenty. Use the same value as `REACT_APP_SERVER_BASE_URL` in https://docs.twenty.com/start/self-hosting/',
|
||||
},
|
||||
],
|
||||
connectionLabel: '{{data.currentWorkspace.displayName}}',
|
||||
customConfig: {},
|
||||
|
||||
@ -37,6 +37,35 @@ describe('custom auth', () => {
|
||||
expect(response.data.currentWorkspace).toHaveProperty('displayName');
|
||||
});
|
||||
|
||||
it('passes authentication with api url and returns json', async () => {
|
||||
const bundle = getBundle();
|
||||
const bundleWithApiUrl = {
|
||||
...bundle,
|
||||
authData: { ...bundle.authData, apiUrl: 'http://localhost:3000' },
|
||||
};
|
||||
const response = await appTester(App.authentication.test, bundleWithApiUrl);
|
||||
expect(response.data).toHaveProperty('currentWorkspace');
|
||||
expect(response.data.currentWorkspace).toHaveProperty('displayName');
|
||||
});
|
||||
|
||||
it('fail authentication with bad api url', async () => {
|
||||
const bundle = getBundle();
|
||||
const bundleWithApiUrl = {
|
||||
...bundle,
|
||||
authData: { ...bundle.authData, apiUrl: 'http://invalid' },
|
||||
};
|
||||
try {
|
||||
const response = await appTester(
|
||||
App.authentication.test,
|
||||
bundleWithApiUrl,
|
||||
);
|
||||
expect(response.data).toHaveProperty('currentWorkspace');
|
||||
expect(response.data.currentWorkspace).toHaveProperty('displayName');
|
||||
} catch (error: any) {
|
||||
expect(error.message).toContain('ENOTFOUND');
|
||||
}
|
||||
});
|
||||
|
||||
it('fails on bad auth token format', async () => {
|
||||
const bundle = getBundle();
|
||||
bundle.authData.apiKey = 'bad';
|
||||
@ -44,7 +73,7 @@ describe('custom auth', () => {
|
||||
try {
|
||||
await appTester(App.authentication.test, bundle);
|
||||
} catch (error: any) {
|
||||
expect(error.message).toContain('Unauthenticated');
|
||||
expect(error.message).toContain('UNAUTHENTICATED');
|
||||
return;
|
||||
}
|
||||
throw new Error('appTester should have thrown');
|
||||
@ -71,7 +100,7 @@ describe('custom auth', () => {
|
||||
try {
|
||||
await appTester(App.authentication.test, bundleWithExpiredApiKey);
|
||||
} catch (error: any) {
|
||||
expect(error.message).toContain('Unauthenticated');
|
||||
expect(error.message).toContain('UNAUTHENTICATED');
|
||||
return;
|
||||
}
|
||||
throw new Error('appTester should have thrown');
|
||||
|
||||
@ -40,7 +40,7 @@ const requestDb = async (
|
||||
endpoint = 'graphql',
|
||||
) => {
|
||||
const options = {
|
||||
url: `${process.env.SERVER_BASE_URL}/${endpoint}`,
|
||||
url: `${bundle.authData.apiUrl || process.env.SERVER_BASE_URL}/${endpoint}`,
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
@ -81,7 +81,9 @@ export const requestDbViaRestApi = (
|
||||
objectNamePlural: string,
|
||||
) => {
|
||||
const options = {
|
||||
url: `${process.env.SERVER_BASE_URL}/rest/${objectNamePlural}?limit:3`,
|
||||
url: `${
|
||||
bundle.authData.apiUrl || process.env.SERVER_BASE_URL
|
||||
}/rest/${objectNamePlural}?limit:3`,
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
|
||||
Reference in New Issue
Block a user