describe()

in Tests-Legacy/L0/CopyFilesOverSSH/_suite.ts [12:192]


describe('CopyFilesOverSSH Suite', function() {
    this.timeout(parseInt(process.env.TASK_TEST_TIMEOUT) || 20000);

    before((done) => {
        // init here
        done();
    });

    after(function () {

    });
    it('Fails for missing endpoint', (done) => {
        setResponseFile('responseEndpoint.json');

        var tr = new trm.TaskRunner('CopyFilesOverSSH', true, true);

        tr.run()
            .then(() => {
                assert(tr.invokedToolCount == 0, 'should not have run any tools');
                assert(tr.resultWasSet, 'task should have set a result');
                assert(tr.stderr.length > 0, 'should have written to stderr');
                assert(tr.failed, 'task should have failed');
                assert(tr.stderr.indexOf('Input required: sshEndpoint') >= 0, 'wrong error message: "' + tr.stderr + '"');
                done();
            })
            .fail((err) => {
                done(err);
            });
    })
    //it('Fails for invalid private key', (done) => {
    //    setResponseFile('responseEndpoint.json');
    //    var tr = new trm.TaskRunner('CopyFilesOverSSH', true, true);
    //    tr.setInput('sshEndpoint', 'IDInvalidKey');
    //    tr.setInput('sourceFolder', '/user/build');
    //    tr.setInput('contents', '**');
    //    tr.setInput('targetFolder', '/home/mg');
    //
    //    tr.run()
    //        .then(() => {
    //            assert(tr.invokedToolCount == 0, 'should not have run any tools');
    //            assert(tr.resultWasSet, 'task should have set a result');
    //            assert(tr.stderr.length > 0, 'should have written to stderr');
    //            assert(tr.failed, 'task should have failed');
    //            assert(tr.stderr.indexOf('Failed to connect to remote machine. Verify the SSH service connection details.') >= 0, 'wrong error message: "' + tr.stderr + '"');
    //            assert(tr.stderr.indexOf('Error: Cannot parse privateKey: Unsupported key format') >= 0, 'wrong error message: "' + tr.stderr + '"');
    //            done();
    //        })
    //        .fail((err) => {
    //            done(err);
    //        });
    //})
    it('Fails when user name is not provided in the endpoint', (done) => {
        setResponseFile('responseEndpoint.json');
        var tr = new trm.TaskRunner('CopyFilesOverSSH', true, true);
        tr.setInput('sshEndpoint', 'IDUserNameNotSet');
        tr.setInput('contents', '**');
        tr.setInput('targetFolder', '/home/mg');

        tr.run()
            .then(() => {
                assert(tr.invokedToolCount == 0, 'should not have run any tools');
                assert(tr.resultWasSet, 'task should have set a result');
                assert(tr.stderr.length > 0, 'should have written to stderr');
                assert(tr.failed, 'task should have failed');
                assert(tr.stderr.indexOf('Endpoint auth not present: IDUserNameNotSet') >= 0, 'wrong error message: "' + tr.stderr + '"');
                done();
            })
            .fail((err) => {
                done(err);
            });
    })
    it('Empty password/passphrase is valid in the endpoint', (done) => {
        setResponseFile('responseEndpoint.json');
        var tr = new trm.TaskRunner('CopyFilesOverSSH', true, true);
        tr.setInput('sshEndpoint', 'IDPasswordNotSet');

        tr.run()
            .then(() => {
                assert(tr.invokedToolCount == 0, 'should not have run any tools');
                assert(tr.stderr.indexOf('Input required: password') < 0, 'task should not require password');
                done();
            })
            .fail((err) => {
                done(err);
            });
    })
    it('Fails when host is not provided in the endpoint', (done) => {
        setResponseFile('responseEndpoint.json');
        var tr = new trm.TaskRunner('CopyFilesOverSSH', true, true);
        tr.setInput('sshEndpoint', 'IDHostNotSet');

        tr.run()
            .then(() => {
                assert(tr.invokedToolCount == 0, 'should not have run any tools');
                assert(tr.resultWasSet, 'task should have set a result');
                assert(tr.stderr.length > 0, 'should have written to stderr');
                assert(tr.failed, 'task should have failed');
                assert(tr.stderr.indexOf('Endpoint data not present: IDHostNotSet') >= 0, 'wrong error message: "' + tr.stderr + '"');
                done();
            })
            .fail((err) => {
                done(err);
            });
    })
    it('When port is not provided in the endpoint, 22 is used as default port number', (done) => {
        setResponseFile('responseEndpoint.json');
        var tr = new trm.TaskRunner('CopyFilesOverSSH', true, true);
        tr.setInput('sshEndpoint', 'IDPortNotSet');

        tr.run()
            .then(() => {
                assert(tr.invokedToolCount == 0, 'should not have run any tools');
                assert(tr.stdout.indexOf('Using port 22 which is the default for SSH since no port was specified.') >= 0, 'default port 22 was not used');
                done();
            })
            .fail((err) => {
                done(err);
            });
    })
    it('Fails when connection cannot be made with given details', (done) => {
        setResponseFile('responseEndpoint.json');
        var tr = new trm.TaskRunner('CopyFilesOverSSH', true, true);
        tr.setInput('sshEndpoint', 'IDValidKey');
        tr.setInput('sourceFolder', '/user/build');
        tr.setInput('contents', '**');
        tr.setInput('targetFolder', '/home/user');

        tr.run()
            .then(() => {
                assert(tr.invokedToolCount == 0, 'should not have run any tools');
                assert(tr.resultWasSet, 'task should have set a result');
                assert(tr.stderr.length > 0, 'should have written to stderr');
                assert(tr.failed, 'task should have failed');
                assert(tr.stderr.indexOf('Failed to connect to remote machine. Verify the SSH service connection details.') >= 0, 'wrong error message: "' + tr.stderr + '"');
                done();
            })
            .fail((err) => {
                done(err);
            });
    })

    it('Fails if source is a file', (done) => {
        setResponseFile('responseEndpointSourceIsFile.json');

        var tr = new trm.TaskRunner('CopyFilesOverSSH', true, true);
        tr.setInput('sshEndpoint', 'IDValidKey');
        tr.setInput('sourceFolder', '/user/build');
        tr.setInput('contents', '**');
        tr.setInput('targetFolder', '/home/user');

        tr.run()
            .then(() => {
                assert(tr.invokedToolCount == 0, 'should not have run any tools');
                assert(tr.failed, 'task should have failed');
                assert(tr.stderr.indexOf('Source folder has to be a valid folder path.') >= 0, 'wrong error message: "' + tr.stderr + '"');
                done();
            })
            .fail((err) => {
                done(err);
            });
    })

    it('Fails for missing contents', (done) => {
        setResponseFile('responseEndpoint.json');

        var tr = new trm.TaskRunner('CopyFilesOverSSH', true, true);
        tr.setInput('sshEndpoint', 'IDValidKey');
        tr.setInput('targetFolder', '/home/user');

        tr.run()
            .then(() => {
                assert(tr.invokedToolCount == 0, 'should not have run any tools');
                assert(tr.failed, 'task should have failed');
                assert(tr.stderr.indexOf('Input required: contents') >= 0, 'wrong error message: "' + tr.stderr + '"');
                done();
            })
            .fail((err) => {
                done(err);
            });
    })
});