123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- // Copyright (c) Jupyter Development Team.
- // Distributed under the terms of the Modified BSD License.
- import { PageConfig } from '@jupyterlab/coreutils';
- import { JupyterServer, testEmission } from '@jupyterlab/testutils';
- import { Terminal, TerminalManager } from '../../src';
- import { handleRequest } from '../utils';
- const server = new JupyterServer();
- beforeAll(async () => {
- await server.start();
- });
- afterAll(async () => {
- await server.shutdown();
- });
- describe('terminal', () => {
- let defaultSession: Terminal.ITerminalConnection;
- let session: Terminal.ITerminalConnection;
- let manager: TerminalManager;
- beforeAll(async () => {
- manager = new TerminalManager();
- defaultSession = await manager.startNew();
- });
- afterEach(async () => {
- if (session) {
- await session.shutdown();
- }
- });
- describe('Terminal', () => {
- describe('.isAvailable()', () => {
- it('should test whether terminal sessions are available', () => {
- expect(Terminal.isAvailable()).toBe(true);
- });
- });
- });
- describe('.ITerminalConnection', () => {
- describe('#messageReceived', () => {
- it('should be emitted when a message is received', async () => {
- session = await manager.startNew();
- const emission = testEmission(session.messageReceived, {
- test: (sender, msg) => {
- return msg.type === 'stdout';
- }
- });
- session.send({ type: 'stdin', content: ['cd\r'] });
- await emission;
- });
- });
- describe('#name', () => {
- it('should be the name of the session', () => {
- expect(defaultSession.name).toBeTruthy();
- });
- });
- describe('#serverSettings', () => {
- it('should be the server settings of the server', () => {
- expect(defaultSession.serverSettings.baseUrl).toBe(
- PageConfig.getBaseUrl()
- );
- });
- });
- describe('#isDisposed', () => {
- it('should test whether the object is disposed', async () => {
- session = await manager.startNew();
- const name = session.name;
- expect(session.isDisposed).toBe(false);
- session.dispose();
- expect(session.isDisposed).toBe(true);
- await manager.shutdown(name);
- });
- });
- describe('#dispose()', () => {
- it('should dispose of the resources used by the session', async () => {
- session = await manager.startNew();
- const name = session.name;
- session.dispose();
- expect(session.isDisposed).toBe(true);
- await manager.shutdown(name);
- });
- it('should be safe to call more than once', async () => {
- session = await manager.startNew();
- const name = session.name;
- session.dispose();
- session.dispose();
- expect(session.isDisposed).toBe(true);
- await manager.shutdown(name);
- });
- });
- describe('#send()', () => {
- it('should send a message to the socket', async () => {
- session.send({ type: 'stdin', content: [1, 2] });
- });
- });
- describe('#reconnect()', () => {
- it('should reconnect to the socket', async () => {
- const session = await manager.startNew();
- const promise = session.reconnect();
- expect(session.connectionStatus).toBe('connecting');
- await promise;
- expect(session.connectionStatus).toBe('connected');
- });
- });
- describe('#shutdown()', () => {
- it('should shut down the terminal session', async () => {
- session = await manager.startNew();
- await session.shutdown();
- });
- it('should handle a 404 status', () => {
- handleRequest(defaultSession, 404, {});
- return defaultSession.shutdown();
- });
- });
- });
- });
|