Browse Source

SONARCLOUD-568 Update label in admin panel

* SONARCLOUD-568 Update label in admin panel

* Fix react error about missing key

* SONARCLOUD-568 Rename parameter

* fixup! SONARCLOUD-568 Update label in admin panel

* fixup! SONARCLOUD-568 Rename parameter
tags/7.8
Siegfried Ehret 5 years ago
parent
commit
b5938da48e

+ 80
- 0
server/sonar-web/src/main/js/apps/permissions/__tests__/utils-test.ts View File

@@ -0,0 +1,80 @@
/*
* SonarQube
* Copyright (C) 2009-2019 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import { convertToPermissionDefinitions } from '../utils';
import { isSonarCloud } from '../../../helpers/system';
import { resetBundle } from '../../../helpers/l10n';

jest.mock('../../../helpers/system', () => ({ isSonarCloud: jest.fn() }));

afterEach(() => {
resetBundle({});
});

describe('convertToPermissionDefinitions', () => {
it('should convert and translate a permission definition', () => {
(isSonarCloud as jest.Mock).mockImplementation(() => false);

resetBundle({
'global_permissions.admin': 'Administer System'
});

const data = convertToPermissionDefinitions(['admin'], 'global_permissions');
const expected = [
{ description: 'global_permissions.admin.desc', key: 'admin', name: 'Administer System' }
];

expect(data).toEqual(expected);
});

it('should convert and translate a permission definition for SonarCloud', () => {
(isSonarCloud as jest.Mock).mockImplementation(() => true);

resetBundle({
'global_permissions.admin': 'Administer System',
'global_permissions.admin.sonarcloud': 'Administer Organization'
});

const data = convertToPermissionDefinitions(['admin'], 'global_permissions');
const expected = [
{
description: 'global_permissions.admin.desc',
key: 'admin',
name: 'Administer Organization'
}
];

expect(data).toEqual(expected);
});

it('should fallback to basic message when SonarCloud version does not exist', () => {
(isSonarCloud as jest.Mock).mockImplementation(() => true);

resetBundle({
'global_permissions.admin': 'Administer System'
});

const data = convertToPermissionDefinitions(['admin'], 'global_permissions');
const expected = [
{ description: 'global_permissions.admin.desc', key: 'admin', name: 'Administer System' }
];

expect(data).toEqual(expected);
});
});

+ 2
- 2
server/sonar-web/src/main/js/apps/permissions/shared/components/PermissionHeader.tsx View File

@@ -48,11 +48,11 @@ export default class PermissionHeader extends React.PureComponent<Props> {

if (isPermissionDefinitionGroup(permission)) {
return permission.permissions.map(permission => (
<>
<React.Fragment key={permission.key}>
<b className="little-spacer-right">{permission.name}:</b>
<InstanceMessage key={permission.key} message={permission.description} />
<br />
</>
</React.Fragment>
));
} else {
if (this.props.showPublicProjectsWarning && ['user', 'codeviewer'].includes(permission.key)) {

+ 14
- 3
server/sonar-web/src/main/js/apps/permissions/utils.ts View File

@@ -17,7 +17,8 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import { translate } from '../../helpers/l10n';
import { hasMessage, translate } from '../../helpers/l10n';
import { isSonarCloud } from '../../helpers/system';

export const PERMISSIONS_ORDER_FOR_PROJECT_TEMPLATE = [
'user',
@@ -55,10 +56,20 @@ export const PERMISSIONS_ORDER_BY_QUALIFIER: T.Dict<string[]> = {
};

function convertToPermissionDefinition(permission: string, l10nPrefix: string) {
const getMessage = (messageKey: string) => {
const cloudMessageKey = `${messageKey}.sonarcloud`;
return isSonarCloud() && hasMessage(cloudMessageKey)
? translate(cloudMessageKey)
: translate(messageKey);
};

const name = getMessage(`${l10nPrefix}.${permission}`);
const description = getMessage(`${l10nPrefix}.${permission}.desc`);

return {
key: permission,
name: translate(l10nPrefix, permission),
description: translate(l10nPrefix, permission, 'desc')
name,
description
};
}


+ 2
- 0
sonar-core/src/main/resources/org/sonar/l10n/core.properties View File

@@ -2048,7 +2048,9 @@ global_permissions.groups=Groups
global_permissions.administer=Administer
global_permissions.creator=Create
global_permissions.admin=Administer System
global_permissions.admin.sonarcloud=Administer Organization
global_permissions.admin.desc=Ability to perform all administration functions for the instance.
global_permissions.admin.desc.sonarcloud=Ability to perform all administration functions for the organization.
global_permissions.profileadmin=Quality Profiles
global_permissions.profileadmin.desc=Ability to perform any action on quality profiles.
global_permissions.gateadmin=Quality Gates

Loading…
Cancel
Save