serverconnection.spec.ts 2.6 KB

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