Skip to main content
Glama
dynatrace-oss

Dynatrace MCP Server

Official
environment-detection.test.ts4.43 kB
import { isRunningInCodespaces, getCodespacesForwardedUrl } from './environment-detection'; describe('isRunningInCodespaces', () => { const originalEnv = process.env; beforeEach(() => { // Reset environment variables before each test process.env = { ...originalEnv }; }); afterEach(() => { // Restore original environment after each test process.env = originalEnv; }); it('should return true when both CODESPACE_NAME and GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN are set', () => { process.env.CODESPACE_NAME = 'my-codespace'; process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN = 'app.github.dev'; expect(isRunningInCodespaces()).toBe(true); }); it('should return false when CODESPACE_NAME is missing', () => { process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN = 'app.github.dev'; // CODESPACE_NAME is not set expect(isRunningInCodespaces()).toBe(false); }); it('should return false when GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN is missing', () => { process.env.CODESPACE_NAME = 'my-codespace'; // GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN is not set expect(isRunningInCodespaces()).toBe(false); }); it('should return false when both environment variables are missing', () => { // Neither CODESPACE_NAME nor GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN are set expect(isRunningInCodespaces()).toBe(false); }); it('should return false when CODESPACE_NAME is empty string', () => { process.env.CODESPACE_NAME = ''; process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN = 'app.github.dev'; expect(isRunningInCodespaces()).toBe(false); }); it('should return false when GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN is empty string', () => { process.env.CODESPACE_NAME = 'my-codespace'; process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN = ''; expect(isRunningInCodespaces()).toBe(false); }); }); describe('getCodespacesForwardedUrl', () => { const originalEnv = process.env; beforeEach(() => { // Reset environment variables before each test process.env = { ...originalEnv }; }); afterEach(() => { // Restore original environment after each test process.env = originalEnv; }); it('should return the correct forwarded URL when running in Codespaces', () => { process.env.CODESPACE_NAME = 'my-codespace'; process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN = 'app.github.dev'; const result = getCodespacesForwardedUrl(8080); expect(result).toBe('https://my-codespace-8080.app.github.dev'); }); it('should return null when not running in Codespaces', () => { // Neither environment variable is set const result = getCodespacesForwardedUrl(8080); expect(result).toBeNull(); }); it('should return null when CODESPACE_NAME is missing', () => { process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN = 'app.github.dev'; const result = getCodespacesForwardedUrl(8080); expect(result).toBeNull(); }); it('should return null when GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN is missing', () => { process.env.CODESPACE_NAME = 'my-codespace'; const result = getCodespacesForwardedUrl(8080); expect(result).toBeNull(); }); it('should handle different port numbers correctly', () => { process.env.CODESPACE_NAME = 'test-codespace'; process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN = 'preview.app.github.dev'; expect(getCodespacesForwardedUrl(3000)).toBe('https://test-codespace-3000.preview.app.github.dev'); expect(getCodespacesForwardedUrl(5344)).toBe('https://test-codespace-5344.preview.app.github.dev'); expect(getCodespacesForwardedUrl(9999)).toBe('https://test-codespace-9999.preview.app.github.dev'); }); it('should handle codespace names with special characters', () => { process.env.CODESPACE_NAME = 'my-special_codespace.v1'; process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN = 'app.github.dev'; const result = getCodespacesForwardedUrl(8080); expect(result).toBe('https://my-special_codespace.v1-8080.app.github.dev'); }); it('should handle different domain formats', () => { process.env.CODESPACE_NAME = 'codespace-123'; process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN = 'githubpreview.dev'; const result = getCodespacesForwardedUrl(4000); expect(result).toBe('https://codespace-123-4000.githubpreview.dev'); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dynatrace-oss/dynatrace-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server