1.1.0 • Published 7 months ago

@kidoweb/netron v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

Netron

Netron - это мощный Node.js модуль для тестирования компьютерных сетей, который сочетает в себе удобство Jest с функциональностью Postman. Модуль позволяет легко создавать и выполнять тесты сетевых запросов с богатым набором возможностей.

Особенности

  • 🚀 Поддержка всех основных HTTP методов (GET, POST, PUT, DELETE, PATCH)
  • 📊 Отслеживание истории запросов с метриками производительности
  • 🔄 Перехватчики запросов и ответов
  • 🔒 Встроенная поддержка аутентификации
  • 🌐 Настройка прокси и редиректов
  • ⏱️ Настраиваемые таймауты
  • 🧪 Полная интеграция с Jest
  • 📝 Подробное логирование и отладка

Установка

npm install netron

Использование

Базовое использование

const NetworkTester = require('netron');

describe('API Tests', () => {
  let tester;

  beforeEach(() => {
    tester = new NetworkTester();
    tester.setBaseURL('https://api.example.com');
  });

  test('should get user data', async () => {
    const response = await tester.get('/users/1');
    expect(response.status).toBe(200);
    expect(response.data).toHaveProperty('name');
  });
});

Настройка заголовков и аутентификации

tester.setDefaultHeaders({
  'Authorization': 'Bearer token123',
  'Content-Type': 'application/json'
});

tester.setAuth({
  username: 'user',
  password: 'pass'
});

Использование перехватчиков

// Перехватчик запросов
tester.addRequestInterceptor(config => {
  config.headers['X-Custom-Header'] = 'value';
  return config;
});

// Перехватчик ответов
tester.addResponseInterceptor(response => {
  console.log(`Request to ${response.config.url} took ${response.duration}ms`);
  return response;
});

Отслеживание истории запросов

// Получение истории запросов
const history = tester.getRequestHistory();
console.log(history);

// Очистка истории
tester.clearRequestHistory();

Настройка прокси и таймаутов

tester.setProxy({
  host: 'proxy.example.com',
  port: 8080
});

tester.setTimeout(5000); // 5 секунд
tester.setMaxRedirects(3);

API

Основные методы

  • get(url, config)
  • post(url, data, config)
  • put(url, data, config)
  • delete(url, config)
  • patch(url, data, config)

Конфигурация

  • setBaseURL(baseURL)
  • setDefaultHeaders(headers)
  • setTimeout(timeout)
  • setAuth(auth)
  • setProxy(proxy)
  • setMaxRedirects(maxRedirects)

Перехватчики

  • addRequestInterceptor(interceptor)
  • addResponseInterceptor(interceptor)

История запросов

  • getRequestHistory()
  • clearRequestHistory()

Примеры тестов

Тестирование REST API

describe('REST API Tests', () => {
  let tester;

  beforeEach(() => {
    tester = new NetworkTester();
    tester.setBaseURL('https://api.example.com');
  });

  test('CRUD operations', async () => {
    // Create
    const createResponse = await tester.post('/users', {
      name: 'John Doe',
      email: 'john@example.com'
    });
    expect(createResponse.status).toBe(201);
    const userId = createResponse.data.id;

    // Read
    const getResponse = await tester.get(`/users/${userId}`);
    expect(getResponse.status).toBe(200);
    expect(getResponse.data.name).toBe('John Doe');

    // Update
    const updateResponse = await tester.put(`/users/${userId}`, {
      name: 'John Updated'
    });
    expect(updateResponse.status).toBe(200);
    expect(updateResponse.data.name).toBe('John Updated');

    // Delete
    const deleteResponse = await tester.delete(`/users/${userId}`);
    expect(deleteResponse.status).toBe(200);
  });
});

Тестирование производительности

test('API performance', async () => {
  const startTime = Date.now();
  
  await tester.get('/users');
  
  const history = tester.getRequestHistory();
  const requestDuration = history[0].duration;
  
  expect(requestDuration).toBeLessThan(1000); // Менее 1 секунды
});

Лицензия

MIT