mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2026-01-01 07:11:23 +00:00
* Mongo Proxy backend API * merge main into current * allow mongo proxy endpoints to be constants * allow mongo proxy endpoints to be constants * fix test * check for allowed mongo proxy endpoint * check for allowed mongo proxy endpoint --------- Co-authored-by: Asier Isayas <aisayas@microsoft.com>
107 lines
3.7 KiB
TypeScript
107 lines
3.7 KiB
TypeScript
import { resetConfigContext, updateConfigContext } from "ConfigContext";
|
|
import { DatabaseAccount, IpRule } from "Contracts/DataModels";
|
|
import { updateUserContext } from "UserContext";
|
|
import { PortalBackendIPs } from "Utils/EndpointUtils";
|
|
import { getNetworkSettingsWarningMessage } from "./NetworkUtility";
|
|
|
|
describe("NetworkUtility tests", () => {
|
|
describe("getNetworkSettingsWarningMessage", () => {
|
|
const publicAccessMessagePart = "Please enable public access to proceed";
|
|
const accessMessagePart = "Please allow access from Azure Portal to proceed";
|
|
// validEnpoints are a subset of those from Utils/EndpointValidation/PortalBackendIPs
|
|
const validEndpoints = [
|
|
"https://main.documentdb.ext.azure.com",
|
|
"https://main.documentdb.ext.azure.cn",
|
|
"https://main.documentdb.ext.azure.us",
|
|
];
|
|
|
|
let warningMessageResult: string;
|
|
const warningMessageFunc = (msg: string) => (warningMessageResult = msg);
|
|
|
|
beforeEach(() => {
|
|
warningMessageResult = undefined;
|
|
});
|
|
|
|
afterEach(() => {
|
|
resetConfigContext();
|
|
});
|
|
|
|
it("should return no message when publicNetworkAccess is enabled", async () => {
|
|
updateUserContext({
|
|
databaseAccount: {
|
|
properties: {
|
|
publicNetworkAccess: "Enabled",
|
|
},
|
|
} as DatabaseAccount,
|
|
});
|
|
|
|
await getNetworkSettingsWarningMessage(warningMessageFunc);
|
|
expect(warningMessageResult).toBeUndefined();
|
|
});
|
|
|
|
it("should return publicAccessMessage when publicNetworkAccess is disabled", async () => {
|
|
updateUserContext({
|
|
databaseAccount: {
|
|
properties: {
|
|
publicNetworkAccess: "Disabled",
|
|
},
|
|
} as DatabaseAccount,
|
|
});
|
|
|
|
await getNetworkSettingsWarningMessage(warningMessageFunc);
|
|
expect(warningMessageResult).toContain(publicAccessMessagePart);
|
|
});
|
|
|
|
it(`should return no message when the appropriate ip rules are added to mongo/cassandra account per endpoint`, () => {
|
|
validEndpoints.forEach(async (endpoint) => {
|
|
updateUserContext({
|
|
databaseAccount: {
|
|
kind: "MongoDB",
|
|
properties: {
|
|
ipRules: PortalBackendIPs[endpoint].map((ip: string) => ({ ipAddressOrRange: ip }) as IpRule),
|
|
publicNetworkAccess: "Enabled",
|
|
},
|
|
} as DatabaseAccount,
|
|
});
|
|
|
|
updateConfigContext({
|
|
BACKEND_ENDPOINT: endpoint,
|
|
});
|
|
|
|
let asyncWarningMessageResult: string;
|
|
const asyncWarningMessageFunc = (msg: string) => (asyncWarningMessageResult = msg);
|
|
|
|
await getNetworkSettingsWarningMessage(asyncWarningMessageFunc);
|
|
expect(asyncWarningMessageResult).toBeUndefined();
|
|
});
|
|
});
|
|
|
|
it("should return accessMessage when incorrent ip rule is added to mongo/cassandra account per endpoint", () => {
|
|
validEndpoints.forEach(async (endpoint) => {
|
|
updateUserContext({
|
|
databaseAccount: {
|
|
kind: "MongoDB",
|
|
properties: {
|
|
ipRules: [{ ipAddressOrRange: "1.1.1.1" }],
|
|
publicNetworkAccess: "Enabled",
|
|
},
|
|
} as DatabaseAccount,
|
|
});
|
|
|
|
updateConfigContext({
|
|
BACKEND_ENDPOINT: endpoint,
|
|
});
|
|
|
|
let asyncWarningMessageResult: string;
|
|
const asyncWarningMessageFunc = (msg: string) => (asyncWarningMessageResult = msg);
|
|
|
|
await getNetworkSettingsWarningMessage(asyncWarningMessageFunc);
|
|
expect(asyncWarningMessageResult).toContain(accessMessagePart);
|
|
});
|
|
});
|
|
|
|
// Postgres and vcore mongo account checks basically pass through to CheckFirewallRules so those
|
|
// tests are omitted here and included in CheckFirewallRules.test.ts
|
|
});
|
|
});
|