Home / File/ node.test.js — astro Source File

node.test.js — astro Source File

Architecture documentation for node.test.js, a javascript file in the astro codebase. 4 imports, 0 dependents.

Entity Profile

Dependency Diagram

graph LR
  6120b399_f320_e3e0_a7f1_e57cc31a3798["node.test.js"]
  72228a0e_1d5f_9727_534e_7c0b53003838["../../../dist/core/app/node.js"]
  6120b399_f320_e3e0_a7f1_e57cc31a3798 --> 72228a0e_1d5f_9727_534e_7c0b53003838
  e1e2fac7_5a95_7a88_cb1e_0a3b91c4e607["strict"]
  6120b399_f320_e3e0_a7f1_e57cc31a3798 --> e1e2fac7_5a95_7a88_cb1e_0a3b91c4e607
  fc0217ba_5b68_32cc_f77d_49b4596e615e["node:events"]
  6120b399_f320_e3e0_a7f1_e57cc31a3798 --> fc0217ba_5b68_32cc_f77d_49b4596e615e
  6b0635f9_51ea_77aa_767b_7857878e98a6["node:test"]
  6120b399_f320_e3e0_a7f1_e57cc31a3798 --> 6b0635f9_51ea_77aa_767b_7857878e98a6
  style 6120b399_f320_e3e0_a7f1_e57cc31a3798 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import * as assert from 'node:assert/strict';
import { EventEmitter } from 'node:events';
import { describe, it } from 'node:test';
import { NodeApp } from '../../../dist/core/app/node.js';

const mockNodeRequest = {
	url: '/',
	method: 'GET',
	headers: {
		host: 'example.com',
	},
	socket: {
		encrypted: true,
		remoteAddress: '2.2.2.2',
	},
};

describe('NodeApp', () => {
	describe('createRequest', () => {
		describe('x-forwarded-for', () => {
			it('parses client IP from single-value x-forwarded-for header', () => {
				const result = NodeApp.createRequest({
					...mockNodeRequest,
					headers: {
						'x-forwarded-for': '1.1.1.1',
					},
				});
				assert.equal(result[Symbol.for('astro.clientAddress')], '1.1.1.1');
			});

			it('parses client IP from multi-value x-forwarded-for header', () => {
				const result = NodeApp.createRequest({
					...mockNodeRequest,
					headers: {
						'x-forwarded-for': '1.1.1.1,8.8.8.8',
					},
				});
				assert.equal(result[Symbol.for('astro.clientAddress')], '1.1.1.1');
			});

			it('parses client IP from multi-value x-forwarded-for header with spaces', () => {
				const result = NodeApp.createRequest({
					...mockNodeRequest,
					headers: {
						'x-forwarded-for': ' 1.1.1.1, 8.8.8.8, 8.8.8.2',
					},
				});
				assert.equal(result[Symbol.for('astro.clientAddress')], '1.1.1.1');
			});

			it('fallbacks to remoteAddress when no x-forwarded-for header is present', () => {
				const result = NodeApp.createRequest({
					...mockNodeRequest,
					headers: {},
				});
				assert.equal(result[Symbol.for('astro.clientAddress')], '2.2.2.2');
			});
		});

		describe('x-forwarded-host', () => {
// ... (385 more lines)

Subdomains

Dependencies

  • ../../../dist/core/app/node.js
  • node:events
  • node:test
  • strict

Frequently Asked Questions

What does node.test.js do?
node.test.js is a source file in the astro codebase, written in javascript. It belongs to the IntegrationAdapters domain, SsrAdapters subdomain.
What does node.test.js depend on?
node.test.js imports 4 module(s): ../../../dist/core/app/node.js, node:events, node:test, strict.
Where is node.test.js in the architecture?
node.test.js is located at packages/astro/test/units/app/node.test.js (domain: IntegrationAdapters, subdomain: SsrAdapters, directory: packages/astro/test/units/app).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free