• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mongodb-js / mongodb-mcp-server / 16292877152

15 Jul 2025 12:10PM UTC coverage: 77.385% (+2.1%) from 75.27%
16292877152

push

github

web-flow
chore(tests): switch to vitest (#363)

498 of 687 branches covered (72.49%)

Branch coverage included in aggregate %.

0 of 27 new or added lines in 2 files covered. (0.0%)

293 existing lines in 26 files now uncovered.

2828 of 3611 relevant lines covered (78.32%)

28.46 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

56.25
/src/common/atlas/cluster.ts
1
import { ClusterDescription20240805, FlexClusterDescription20241113 } from "./openapi.js";
2
import { ApiClient } from "./apiClient.js";
3
import logger, { LogId } from "../logger.js";
2✔
4

5
export interface Cluster {
6
    name?: string;
7
    instanceType: "FREE" | "DEDICATED" | "FLEX";
8
    instanceSize?: string;
9
    state?: "IDLE" | "CREATING" | "UPDATING" | "DELETING" | "REPAIRING";
10
    mongoDBVersion?: string;
11
    connectionString?: string;
12
}
13

14
export function formatFlexCluster(cluster: FlexClusterDescription20241113): Cluster {
2✔
15
    return {
×
UNCOV
16
        name: cluster.name,
×
UNCOV
17
        instanceType: "FLEX",
×
UNCOV
18
        instanceSize: undefined,
×
UNCOV
19
        state: cluster.stateName,
×
UNCOV
20
        mongoDBVersion: cluster.mongoDBVersion,
×
UNCOV
21
        connectionString: cluster.connectionStrings?.standardSrv || cluster.connectionStrings?.standard,
×
UNCOV
22
    };
×
UNCOV
23
}
×
24

25
export function formatCluster(cluster: ClusterDescription20240805): Cluster {
2✔
26
    const regionConfigs = (cluster.replicationSpecs || [])
3!
27
        .map(
3✔
28
            (replicationSpec) =>
3✔
29
                (replicationSpec.regionConfigs || []) as {
3!
30
                    providerName: string;
31
                    electableSpecs?: {
32
                        instanceSize: string;
33
                    };
34
                    readOnlySpecs?: {
35
                        instanceSize: string;
36
                    };
37
                    analyticsSpecs?: {
38
                        instanceSize: string;
39
                    };
40
                }[]
41
        )
3✔
42
        .flat()
3✔
43
        .map((regionConfig) => {
3✔
44
            return {
3✔
45
                providerName: regionConfig.providerName,
3✔
46
                instanceSize:
3✔
47
                    regionConfig.electableSpecs?.instanceSize ||
3!
UNCOV
48
                    regionConfig.readOnlySpecs?.instanceSize ||
×
UNCOV
49
                    regionConfig.analyticsSpecs?.instanceSize,
×
50
            };
3✔
51
        });
3✔
52

53
    const instanceSize = regionConfigs[0]?.instanceSize ?? "UNKNOWN";
3!
54
    const clusterInstanceType = instanceSize == "M0" ? "FREE" : "DEDICATED";
3!
55

56
    return {
3✔
57
        name: cluster.name,
3✔
58
        instanceType: clusterInstanceType,
3✔
59
        instanceSize: clusterInstanceType == "DEDICATED" ? instanceSize : undefined,
3!
60
        state: cluster.stateName,
3✔
61
        mongoDBVersion: cluster.mongoDBVersion,
3✔
62
        connectionString: cluster.connectionStrings?.standardSrv || cluster.connectionStrings?.standard,
3✔
63
    };
3✔
64
}
3✔
65

66
export async function inspectCluster(apiClient: ApiClient, projectId: string, clusterName: string): Promise<Cluster> {
2✔
67
    try {
2✔
68
        const cluster = await apiClient.getCluster({
2✔
69
            params: {
2✔
70
                path: {
2✔
71
                    groupId: projectId,
2✔
72
                    clusterName,
2✔
73
                },
2✔
74
            },
2✔
75
        });
2✔
76
        return formatCluster(cluster);
2✔
77
    } catch (error) {
2!
78
        try {
×
79
            const cluster = await apiClient.getFlexCluster({
×
UNCOV
80
                params: {
×
UNCOV
81
                    path: {
×
UNCOV
82
                        groupId: projectId,
×
UNCOV
83
                        name: clusterName,
×
UNCOV
84
                    },
×
UNCOV
85
                },
×
UNCOV
86
            });
×
87
            return formatFlexCluster(cluster);
×
UNCOV
88
        } catch (flexError) {
×
89
            const err = flexError instanceof Error ? flexError : new Error(String(flexError));
×
90
            logger.error(LogId.atlasInspectFailure, "inspect-cluster", `error inspecting cluster: ${err.message}`);
×
91
            throw error;
×
UNCOV
92
        }
×
UNCOV
93
    }
×
94
}
2✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc