import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import { translate, translateWithParameters } from '../../helpers/l10n';
+import { AlmKeys } from '../../types/alm-settings';
import { AlmSyncStatus } from '../../types/provisioning';
import { TaskStatuses } from '../../types/tasks';
interface SynchronisationWarningProps {
data: AlmSyncStatus;
+ provisionedBy: AlmKeys.GitHub | AlmKeys.GitLab;
short?: boolean;
}
interface LastSyncProps {
info: AlmSyncStatus['lastSync'];
+ provisionedBy: AlmKeys.GitHub | AlmKeys.GitLab;
short?: boolean;
}
-function LastSyncAlert({ info, short }: Readonly<LastSyncProps>) {
+function LastSyncAlert({ info, provisionedBy, short }: Readonly<LastSyncProps>) {
if (info === undefined) {
return null;
}
{warningMessage ? (
<FormattedMessage
defaultMessage={translate(
- 'settings.authentication.github.synchronization_successful.with_warning',
+ 'settings.authentication.synchronization_successful.with_warning',
)}
- id="settings.authentication.github.synchronization_successful.with_warning"
+ id="settings.authentication.synchronization_successful.with_warning"
values={{
date: formattedDate,
details: (
- <Link className="sw-ml-2" to="/admin/settings?category=authentication&tab=github">
- {translate('settings.authentication.github.synchronization_details_link')}
+ <Link
+ className="sw-ml-2"
+ to={`/admin/settings?category=authentication&tab=${provisionedBy}`}
+ >
+ {translate('settings.authentication.synchronization_details_link')}
</Link>
),
}}
/>
) : (
translateWithParameters(
- 'settings.authentication.github.synchronization_successful',
+ 'settings.authentication.synchronization_successful',
formattedDate,
)
)}
<FlagMessage variant="error">
<div>
<FormattedMessage
- defaultMessage={translate(
- 'settings.authentication.github.synchronization_failed_short',
- )}
- id="settings.authentication.github.synchronization_failed_short"
+ defaultMessage={translate('settings.authentication.synchronization_failed_short')}
+ id="settings.authentication.synchronization_failed_short"
values={{
details: (
- <Link className="sw-ml-2" to="/admin/settings?category=authentication&tab=github">
- {translate('settings.authentication.github.synchronization_details_link')}
+ <Link
+ className="sw-ml-2"
+ to={`/admin/settings?category=authentication&tab=${provisionedBy}`}
+ >
+ {translate('settings.authentication.synchronization_details_link')}
</Link>
),
}}
{status === TaskStatuses.Success ? (
<>
{translateWithParameters(
- 'settings.authentication.github.synchronization_successful',
+ 'settings.authentication.synchronization_successful',
formattedDate,
)}
<React.Fragment key={`synch-alert-${finishedAt}`}>
<div>
{translateWithParameters(
- 'settings.authentication.github.synchronization_failed',
+ 'settings.authentication.synchronization_failed',
formattedDate,
)}
</div>
);
}
-export default function AlmSynchronisationWarning({
- data,
- short,
-}: Readonly<SynchronisationWarningProps>) {
+export default function AlmSynchronisationWarning(props: Readonly<SynchronisationWarningProps>) {
+ const { data, provisionedBy, short } = props;
const loadingLabel =
data.nextSync &&
translate(
data.nextSync.status === TaskStatuses.Pending
- ? 'settings.authentication.github.synchronization_pending'
- : 'settings.authentication.github.synchronization_in_progress',
+ ? 'settings.authentication.synchronization_pending'
+ : 'settings.authentication.synchronization_in_progress',
);
return (
</div>
)}
- <LastSyncAlert short={short} info={data.lastSync} />
+ <LastSyncAlert short={short} info={data.lastSync} provisionedBy={provisionedBy} />
</>
);
}
githubProvisioningSuccess: byText(/synchronization_successful/),
githubProvisioningWarning: byText(/synchronization_successful.with_warning/),
githubProvisioningAlert: byText(/synchronization_failed_short/),
+ githubProvisioningAlertDetailsLink: byText(/synchronization_failed_short/).byRole('link'),
expiresInSelector: byRole('combobox', { name: 'users.tokens.expires_in' }),
};
});
renderUsersApp([Feature.GithubProvisioning]);
expect(await ui.githubProvisioningAlert.find()).toBeInTheDocument();
+ expect(ui.githubProvisioningAlertDetailsLink.get()).toHaveAttribute(
+ 'href',
+ '/admin/settings?category=authentication&tab=github',
+ );
expect(screen.queryByText('Error Message')).not.toBeInTheDocument();
expect(ui.githubProvisioningSuccess.query()).not.toBeInTheDocument();
});
settings.authentication.github.form.projectVisibility.name=Provision project visibility
settings.authentication.github.form.projectVisibility.description=Change project visibility based on GitHub repository visibility. If disabled, every provisioned project will be private in SonarQube and visible only to users with explicit GitHub permissions for the corresponding repository. Changes take effect at the next synchronization.
settings.authentication.github.synchronize_now=Synchronize now
-settings.authentication.github.synchronization_in_progress=Synchronization is in progress.
-settings.authentication.github.synchronization_pending=Synchronization is pending.
settings.authentication.github.synchronization_finish=Synchronization is done.
-settings.authentication.github.synchronization_successful=Last synchronization was done {0} ago.
-settings.authentication.github.synchronization_successful.with_warning=Last synchronization was done {date} ago with warnings. {details}
-settings.authentication.github.synchronization_failed=Last synchronization failed {0} ago.
-settings.authentication.github.synchronization_failed_short=Last synchronization failed. {details}
-settings.authentication.github.synchronization_details_link=More details
settings.authentication.github.configuration.validation.details=View details
settings.authentication.github.configuration.validation.valid.short=Configuration is valid.
settings.authentication.github.configuration.validation.valid=Configuration is valid for {0}. {1} organizations will be synced.
# COMMON
settings.authentication.configuration.validity_check_loading=Checking the configuration
settings.authentication.configuration.test=Test configuration
+settings.authentication.synchronization_pending=Synchronization is pending.
+settings.authentication.synchronization_in_progress=Synchronization is in progress.
+settings.authentication.synchronization_successful.with_warning=Last synchronization was done {date} ago with warnings. {details}
+settings.authentication.synchronization_details_link=More details
+settings.authentication.synchronization_successful=Last synchronization was done {0} ago.
+settings.authentication.synchronization_failed_short=Last synchronization failed. {details}
+settings.authentication.synchronization_failed=Last synchronization failed {0} ago.
# SAML
settings.authentication.form.create.saml=New SAML configuration