// Copyright (C) 2019 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import {TextEncoder} from 'util'; import { AdbMsgImpl, AdbOverWebUsb, AdbState, DEFAULT_MAX_PAYLOAD_BYTES, VERSION_WITH_CHECKSUM } from './adb'; test('startAuthentication', async () => { const adb = new AdbOverWebUsb(); const sendRaw = jest.fn(); adb.sendRaw = sendRaw; const recvRaw = jest.fn(); adb.recvRaw = recvRaw; const expectedAuthMessage = AdbMsgImpl.create({ cmd: 'CNXN', arg0: VERSION_WITH_CHECKSUM, arg1: DEFAULT_MAX_PAYLOAD_BYTES, data: 'host:1:UsbADB', useChecksum: true }); await adb.startAuthentication(); expect(sendRaw).toHaveBeenCalledTimes(2); expect(sendRaw).toBeCalledWith(expectedAuthMessage.encodeHeader()); expect(sendRaw).toBeCalledWith(expectedAuthMessage.data); }); test('connectedMessage', async () => { const adb = new AdbOverWebUsb(); adb.key = {} as unknown as CryptoKeyPair; adb.state = AdbState.AUTH_STEP2; const onConnected = jest.fn(); adb.onConnected = onConnected; const expectedMaxPayload = 42; const connectedMsg = AdbMsgImpl.create({ cmd: 'CNXN', arg0: VERSION_WITH_CHECKSUM, arg1: expectedMaxPayload, data: new TextEncoder().encode('device'), useChecksum: true }); await adb.onMessage(connectedMsg); expect(adb.state).toBe(AdbState.CONNECTED); expect(adb.maxPayload).toBe(expectedMaxPayload); expect(adb.devProps).toBe('device'); expect(adb.useChecksum).toBe(true); expect(onConnected).toHaveBeenCalledTimes(1); }); test('shellOpening', () => { const adb = new AdbOverWebUsb(); const openStream = jest.fn(); adb.openStream = openStream; adb.shell('test'); expect(openStream).toBeCalledWith('shell:test'); });