/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // import { ControllerInfo } from 'arc'; // import * as should from 'should'; // import * as sinon from 'sinon'; // import { v4 as uuid } from 'uuid'; // import * as loc from '../../../localizedConstants'; // import { ControllerModel } from '../../../models/controllerModel'; // import { ConnectToControllerDialog } from '../../../ui/dialogs/connectControllerDialog'; // describe('ConnectControllerDialog', function (): void { // afterEach(function (): void { // sinon.restore(); // }); // (<{ info: ControllerInfo | undefined, description: string }[]>[ // { info: undefined, description: 'all input' }, // { info: { endpoint: '127.0.0.1' }, description: 'all but URL' }, // { info: { endpoint: '127.0.0.1', username: 'sa' }, description: 'all but URL and password' }]).forEach(test => { // it(`Validate returns false when ${test.description} is empty`, async function (): Promise { // const connectControllerDialog = new ConnectToControllerDialog(undefined!); // connectControllerDialog.showDialog(test.info, undefined); // await connectControllerDialog.isInitialized; // const validateResult = await connectControllerDialog.validate(); // should(validateResult).be.false(); // }); // }); // it('validate returns false if controller refresh fails', async function (): Promise { // sinon.stub(ControllerModel.prototype, 'refresh').returns(Promise.reject('Controller refresh failed')); // const connectControllerDialog = new ConnectToControllerDialog(undefined!); // const info: ControllerInfo = { id: uuid(), endpoint: 'https://127.0.0.1:30080', kubeConfigFilePath: '/path/to/.kube/config', kubeClusterContext: 'currentCluster', name: 'my-arc', namespace: 'arc-ns', username: 'sa', rememberPassword: true, resources: [] }; // connectControllerDialog.showDialog(info, 'pwd'); // await connectControllerDialog.isInitialized; // const validateResult = await connectControllerDialog.validate(); // should(validateResult).be.false('Validation should have returned false'); // }); // it('validate replaces http with https', async function (): Promise { // await validateConnectControllerDialog( // { id: uuid(), endpoint: 'http://127.0.0.1:30081', kubeConfigFilePath: '/path/to/.kube/config', kubeClusterContext: 'currentCluster', name: 'my-arc', namespace: 'arc-ns', username: 'sa', rememberPassword: true, resources: [] }, // 'https://127.0.0.1:30081'); // }); // it('validate appends https if missing', async function (): Promise { // await validateConnectControllerDialog({ id: uuid(), endpoint: '127.0.0.1:30080', kubeConfigFilePath: '/path/to/.kube/config', kubeClusterContext: 'currentCluster', name: 'my-arc', namespace: 'arc-ns', username: 'sa', rememberPassword: true, resources: [] }, // 'https://127.0.0.1:30080'); // }); // it('validate appends default port if missing', async function (): Promise { // await validateConnectControllerDialog({ id: uuid(), endpoint: 'https://127.0.0.1', kubeConfigFilePath: '/path/to/.kube/config', kubeClusterContext: 'currentCluster', name: 'my-arc', namespace: 'arc-ns', username: 'sa', rememberPassword: true, resources: [] }, // 'https://127.0.0.1:30080'); // }); // it('validate appends both port and https if missing', async function (): Promise { // await validateConnectControllerDialog({ id: uuid(), endpoint: '127.0.0.1', kubeConfigFilePath: '/path/to/.kube/config', kubeClusterContext: 'currentCluster', name: 'my-arc', namespace: 'arc-ns', username: 'sa', rememberPassword: true, resources: [] }, // 'https://127.0.0.1:30080'); // }); // for (const name of ['', undefined]) { // it.skip(`validate display name gets set to arc instance name for user chosen name of:${name}`, async function (): Promise { // await validateConnectControllerDialog( // { id: uuid(), endpoint: 'http://127.0.0.1:30081', kubeConfigFilePath: '/path/to/.kube/config', kubeClusterContext: 'currentCluster', name: name!, namespace: 'arc-ns', username: 'sa', rememberPassword: true, resources: [] }, // 'https://127.0.0.1:30081'); // }); // } // it.skip(`validate display name gets set to default data controller name for user chosen name of:'' and instanceName in explicably returned as undefined from the controller endpoint`, async function (): Promise { // await validateConnectControllerDialog( // { id: uuid(), endpoint: 'http://127.0.0.1:30081', kubeConfigFilePath: '/path/to/.kube/config', kubeClusterContext: 'currentCluster', name: '', namespace: 'arc-ns', username: 'sa', rememberPassword: true, resources: [] }, // 'https://127.0.0.1:30081', // undefined); // }); // }); // async function validateConnectControllerDialog(info: ControllerInfo, expectedUrl: string, arcInstanceName: string = 'arc-instance'): Promise { // const expectedControllerInfoName = info.name || arcInstanceName || loc.defaultControllerName; // const connectControllerDialog = new ConnectToControllerDialog(undefined!); // // Stub out refresh calls to controllerModel - we'll test those separately // sinon.stub(ControllerModel.prototype, 'refresh').returns(Promise.resolve()); // // stub out controller registration response to return a known instanceName for the dc. // /* // sinon.stub(ControllerModel.prototype, 'controllerRegistration').get(() => { // return { instanceName: arcInstanceName }; // }); // */ // connectControllerDialog.showDialog(info, 'pwd'); // await connectControllerDialog.isInitialized; // const validateResult = await connectControllerDialog.validate(); // should(validateResult).be.true('Validation should have returned true'); // const model = await connectControllerDialog.waitForClose(); // should(model?.controllerModel.info.endpoint).equal(expectedUrl); // should(model?.controllerModel.info.name).equal(expectedControllerInfoName); // }