Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@ export function showEndOfLifeMongoDBWarningModal(
<Link
href="https://www.mongodb.com/legal/support-policy/lifecycles"
target="_blank"
data-testid="end-of-life-warning-modal-learn-more-link"
data-testid="end-of-life-connection-modal-learn-more-link"
>
Learn more from the MongoDB Lifecycle Schedules.
</Link>
</>
),
'data-testid': 'end-of-life-connection-modal',
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -1823,13 +1823,14 @@ const connectWithOptions = (
.isGenuine === false
) {
dispatch(showNonGenuineMongoDBWarningModal(connectionInfo.id));
} else if (preferences.getPreferences().networkTraffic) {
} else {
const { networkTraffic } = preferences.getPreferences();
void dataService
.instance()
.then(async (instance) => {
const { version } = instance.build;
const latestEndOfLifeServerVersion =
await getLatestEndOfLifeServerVersion();
await getLatestEndOfLifeServerVersion(networkTraffic);
if (isEndOfLifeVersion(version, latestEndOfLifeServerVersion)) {
dispatch(
showEndOfLifeMongoDBWarningModal(
Expand Down
10 changes: 8 additions & 2 deletions packages/compass-connections/src/utils/end-of-life-server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,13 @@ const {

let latestEndOfLifeServerVersion: Promise<string> | null = null;

export async function getLatestEndOfLifeServerVersion(): Promise<string> {
export async function getLatestEndOfLifeServerVersion(
allowNetworkRequests = true
): Promise<string> {
if (!allowNetworkRequests) {
return FALLBACK_END_OF_LIFE_SERVER_VERSION;
}

if (!HADRON_AUTO_UPDATE_ENDPOINT) {
log.debug(
mongoLogId(1_001_000_356),
Expand Down Expand Up @@ -68,7 +74,7 @@ export async function getLatestEndOfLifeServerVersion(): Promise<string> {

export function isEndOfLifeVersion(
version: string,
latestEndOfLifeServerVersion: string
latestEndOfLifeServerVersion = FALLBACK_END_OF_LIFE_SERVER_VERSION
) {
try {
const coercedVersion = semverCoerce(version);
Expand Down
16 changes: 15 additions & 1 deletion packages/compass-e2e-tests/helpers/commands/connect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
DEFAULT_CONNECTION_STRING_1,
DEFAULT_CONNECTION_NAME_1,
connectionNameFromString,
serverSatisfies,
} from '../compass';
import type { CompassBrowser } from '../compass-browser';
import type { ConnectFormState } from '../connect-form-state';
Expand Down Expand Up @@ -33,6 +34,7 @@ export async function getConnectFormConnectionString(
type ConnectionResultOptions = {
connectionStatus?: 'success' | 'failure' | 'either';
timeout?: number;
dismissEndOfLifeModal?: boolean;
};

type ConnectOptions = ConnectionResultOptions & {
Expand Down Expand Up @@ -130,10 +132,22 @@ export async function doConnect(
export async function waitForConnectionResult(
browser: CompassBrowser,
connectionName: string,
{ connectionStatus = 'success', timeout }: ConnectionResultOptions = {}
{
connectionStatus = 'success',
timeout,
dismissEndOfLifeModal = serverSatisfies('<=4.4'),
}: ConnectionResultOptions = {}
): Promise<string | undefined> {
const waitOptions = typeof timeout !== 'undefined' ? { timeout } : undefined;

if (dismissEndOfLifeModal) {
await browser.$(Selectors.EndOfLifeConnectionModal).waitForDisplayed();
await browser.clickVisible(Selectors.EndOfLifeConnectionModalConfirmButton);
await browser
.$(Selectors.EndOfLifeConnectionModal)
.waitForDisplayed({ reverse: true });
}

if (
(await browser.$(Selectors.SidebarFilterInput).isDisplayed()) &&
(await browser
Expand Down
5 changes: 5 additions & 0 deletions packages/compass-e2e-tests/helpers/selectors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,11 @@ export const ConnectionModalCloseButton = `${ConnectionModal} [aria-label="Close
export const ConnectionModalConnectButton = '[data-testid="connect-button"]';
export const ConnectionModalSaveButton = '[data-testid="save-button"]';

// End of life connection modal
export const EndOfLifeConnectionModal =
'[data-testid="end-of-life-connection-modal"]';
export const EndOfLifeConnectionModalConfirmButton = `${EndOfLifeConnectionModal} [data-testid="lg-confirmation_modal-footer-confirm_button"]`;

// Connection process toast
export const connectionToastById = (connectionId: string) => {
return `[data-testid="toast-connection-status--${connectionId}"]`;
Expand Down
1 change: 1 addition & 0 deletions packages/compass-e2e-tests/tests/connection.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ describe('Connection string', function () {
// connect
await browser.connectWithConnectionString(`${protocol}://a:b@${url}`, {
connectionStatus: 'failure',
dismissEndOfLifeModal: false,
});

// check the error
Expand Down
Loading