Make plugin sonarqube-backend APIs use object as parameters

To be easily modified in the future

Signed-off-by: Neemys <36508659+Neemys@users.noreply.github.com>
This commit is contained in:
Neemys
2022-08-01 16:42:05 +02:00
parent 1b2d1ff431
commit 6b7214547f
2 changed files with 55 additions and 21 deletions
@@ -173,7 +173,7 @@ describe('SonarqubeConfig', () => {
},
]);
expect(config.getInstanceConfig('default')).toEqual({
expect(config.getInstanceConfig({ sonarqubeName: 'default' })).toEqual({
name: 'default',
baseUrl: 'https://sonarqube.example.com',
apiKey: '123456789abcdef0123456789abcedf012',
@@ -190,7 +190,7 @@ describe('SonarqubeConfig', () => {
},
]);
expect(config.getInstanceConfig('other')).toEqual({
expect(config.getInstanceConfig({ sonarqubeName: 'other' })).toEqual({
name: 'other',
baseUrl: 'https://sonarqube-other.example.com',
apiKey: '123456789abcdef0123456789abcedf012',
@@ -206,7 +206,9 @@ describe('SonarqubeConfig', () => {
},
]);
expect(() => config.getInstanceConfig('default')).toThrowError(Error);
expect(() =>
config.getInstanceConfig({ sonarqubeName: 'default' }),
).toThrowError(Error);
});
it('Throw an error if named instance could not be found', async () => {
@@ -214,7 +216,9 @@ describe('SonarqubeConfig', () => {
DUMMY_SIMPLE_OBJECT_FOR_DEFAULT_SONARQUBE_CONFIG,
]);
expect(() => config.getInstanceConfig('other')).toThrowError(Error);
expect(() =>
config.getInstanceConfig({ sonarqubeName: 'other' }),
).toThrowError(Error);
});
});
});
@@ -385,7 +389,10 @@ describe('DefaultSonarqubeInfoProvider', () => {
setupHandlers();
const provider = configureProvider(DUMMY_SIMPLE_CONFIG_FOR_PROVIDER);
expect(
await provider.getFindings(DUMMY_COMPONENT_KEY, 'default'),
await provider.getFindings({
componentKey: DUMMY_COMPONENT_KEY,
instanceName: 'default',
}),
).toEqual({
analysisDate: DUMMY_ANALYSIS_DATE,
measures: [
@@ -414,7 +421,10 @@ describe('DefaultSonarqubeInfoProvider', () => {
},
});
expect(
await provider.getFindings(DUMMY_COMPONENT_KEY, 'default'),
await provider.getFindings({
componentKey: DUMMY_COMPONENT_KEY,
instanceName: 'default',
}),
).toBeUndefined();
});
it('Provide undefined as finding if component API answer incorrectly', async () => {
@@ -434,7 +444,10 @@ describe('DefaultSonarqubeInfoProvider', () => {
const provider = configureProvider(DUMMY_SIMPLE_CONFIG_FOR_PROVIDER);
expect(
await provider.getFindings(DUMMY_COMPONENT_KEY, 'default'),
await provider.getFindings({
componentKey: DUMMY_COMPONENT_KEY,
instanceName: 'default',
}),
).toBeUndefined();
});
it('Provide findings when metrics API uses pages', async () => {
@@ -462,7 +475,10 @@ describe('DefaultSonarqubeInfoProvider', () => {
const provider = configureProvider(DUMMY_SIMPLE_CONFIG_FOR_PROVIDER);
expect(
await provider.getFindings(DUMMY_COMPONENT_KEY, 'default'),
await provider.getFindings({
componentKey: DUMMY_COMPONENT_KEY,
instanceName: 'default',
}),
).toEqual({
analysisDate: DUMMY_ANALYSIS_DATE,
measures: [
@@ -489,7 +505,10 @@ describe('DefaultSonarqubeInfoProvider', () => {
const provider = configureProvider(DUMMY_SIMPLE_CONFIG_FOR_PROVIDER);
expect(
await provider.getFindings(DUMMY_COMPONENT_KEY, 'default'),
await provider.getFindings({
componentKey: DUMMY_COMPONENT_KEY,
instanceName: 'default',
}),
).toBeUndefined();
});
@@ -509,7 +528,10 @@ describe('DefaultSonarqubeInfoProvider', () => {
const provider = configureProvider(DUMMY_SIMPLE_CONFIG_FOR_PROVIDER);
expect(
await provider.getFindings(DUMMY_COMPONENT_KEY, 'default'),
await provider.getFindings({
componentKey: DUMMY_COMPONENT_KEY,
instanceName: 'default',
}),
).toEqual({
analysisDate: DUMMY_ANALYSIS_DATE,
measures: [],
@@ -43,10 +43,13 @@ export interface SonarqubeInfoProvider {
* @returns All measures with the analysis date. Will return undefined if we
* can't provide the full response
*/
getFindings(
componentKey: string,
instanceName?: string,
): Promise<SonarqubeFindings | undefined>;
getFindings({
componentKey,
instanceName,
}: {
componentKey: string;
instanceName?: string;
}): Promise<SonarqubeFindings | undefined>;
}
/**
@@ -182,7 +185,9 @@ export class SonarqubeConfig {
* @returns The requested Sonarqube instance.
* @throws Error when no default config could be found or the requested name couldn't be found in config.
*/
getInstanceConfig(sonarqubeName?: string): SonarqubeInstanceConfig {
getInstanceConfig({
sonarqubeName,
}: { sonarqubeName?: string } = {}): SonarqubeInstanceConfig {
const DEFAULT_SONARQUBE_NAME = 'default';
if (!sonarqubeName || sonarqubeName === DEFAULT_SONARQUBE_NAME) {
@@ -301,7 +306,9 @@ export class DefaultSonarqubeInfoProvider implements SonarqubeInfoProvider {
getBaseUrl({ instanceName }: { instanceName?: string } = {}): {
baseUrl: string;
} {
const instanceConfig = this.config.getInstanceConfig(instanceName);
const instanceConfig = this.config.getInstanceConfig({
sonarqubeName: instanceName,
});
return { baseUrl: instanceConfig.baseUrl };
}
@@ -309,11 +316,16 @@ export class DefaultSonarqubeInfoProvider implements SonarqubeInfoProvider {
* {@inheritDoc SonarqubeInfoProvider.getFindings}
* @throws Error If configuration can't be retrieved.
*/
async getFindings(
componentKey: string,
instanceName?: string,
): Promise<SonarqubeFindings | undefined> {
const { baseUrl, apiKey } = this.config.getInstanceConfig(instanceName);
async getFindings({
componentKey,
instanceName,
}: {
componentKey: string;
instanceName?: string;
}): Promise<SonarqubeFindings | undefined> {
const { baseUrl, apiKey } = this.config.getInstanceConfig({
sonarqubeName: instanceName,
});
// get component info to retrieve analysis date
const component =