serverconnection.spec.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright (c) Jupyter Development Team.
  2. // Distributed under the terms of the Modified BSD License.
  3. import { PageConfig } from '@jupyterlab/coreutils';
  4. import { JupyterServer } from '@jupyterlab/testutils';
  5. import { ServerConnection } from '../src';
  6. import { getRequestHandler } from './utils';
  7. const server = new JupyterServer();
  8. beforeAll(async () => {
  9. await server.start();
  10. });
  11. afterAll(async () => {
  12. await server.shutdown();
  13. });
  14. describe('ServerConnection', () => {
  15. describe('.makeRequest()', () => {
  16. it('should make a request to the server', async () => {
  17. const settings = getRequestHandler(200, 'hello');
  18. const response = await ServerConnection.makeRequest(
  19. settings.baseUrl,
  20. {},
  21. settings
  22. );
  23. expect(response.statusText).toBe('OK');
  24. const data = await response.json();
  25. expect(data).toBe('hello');
  26. });
  27. });
  28. describe('.makeSettings()', () => {
  29. it('should use default settings', () => {
  30. const settings = ServerConnection.makeSettings();
  31. expect(settings.baseUrl).toBe(PageConfig.getBaseUrl());
  32. expect(settings.wsUrl).toBe(PageConfig.getWsUrl());
  33. expect(settings.token).toBe(PageConfig.getOption('token'));
  34. });
  35. it('should use baseUrl for wsUrl', () => {
  36. const conf: Partial<ServerConnection.ISettings> = {
  37. baseUrl: 'https://host/path'
  38. };
  39. const settings = ServerConnection.makeSettings(conf);
  40. expect(settings.baseUrl).toBe(conf.baseUrl);
  41. expect(settings.wsUrl).toBe('wss://host/path');
  42. });
  43. it('should handle overrides', () => {
  44. const defaults: Partial<ServerConnection.ISettings> = {
  45. baseUrl: 'http://localhost/foo',
  46. wsUrl: 'http://localhost/bar',
  47. init: {
  48. credentials: 'same-origin'
  49. },
  50. token: 'baz'
  51. };
  52. const settings = ServerConnection.makeSettings(defaults);
  53. expect(settings.baseUrl).toBe(defaults.baseUrl);
  54. expect(settings.wsUrl).toBe(defaults.wsUrl);
  55. expect(settings.token).toBe(defaults.token);
  56. expect(settings.init.credentials).toBe(defaults.init!.credentials);
  57. });
  58. });
  59. describe('.makeError()', () => {
  60. it('should create a server error from a server response', async () => {
  61. const settings = getRequestHandler(200, 'hi');
  62. const init = { body: 'hi', method: 'POST' };
  63. const response = await ServerConnection.makeRequest(
  64. settings.baseUrl,
  65. init,
  66. settings
  67. );
  68. const err = new ServerConnection.ResponseError(response);
  69. expect(err.message).toBe('Invalid response: 200 OK');
  70. });
  71. });
  72. });