This commit is contained in:
293
node_modules/yaml-language-server/out/server/test/integration.test.js
generated
vendored
Normal file
293
node_modules/yaml-language-server/out/server/test/integration.test.js
generated
vendored
Normal file
@@ -0,0 +1,293 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Red Hat. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
const testHelper_1 = require("./utils/testHelper");
|
||||
const assert = require("assert");
|
||||
const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
||||
const serviceSetup_1 = require("./utils/serviceSetup");
|
||||
const yamlSettings_1 = require("../src/yamlSettings");
|
||||
// Defines a Mocha test describe to group tests of similar kind together
|
||||
describe('Kubernetes Integration Tests', () => {
|
||||
let languageSettingsSetup;
|
||||
let languageHandler;
|
||||
let validationHandler;
|
||||
let yamlSettings;
|
||||
before(() => {
|
||||
const uri = 'https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.22.4-standalone-strict/all.json';
|
||||
const fileMatch = ['*.yml', '*.yaml'];
|
||||
languageSettingsSetup = new serviceSetup_1.ServiceSetup()
|
||||
.withHover()
|
||||
.withValidate()
|
||||
.withCompletion()
|
||||
.withSchemaFileMatch({
|
||||
fileMatch,
|
||||
uri,
|
||||
})
|
||||
.withKubernetes();
|
||||
const { validationHandler: valHandler, languageHandler: langHandler, yamlSettings: settings, } = (0, testHelper_1.setupLanguageService)(languageSettingsSetup.languageSettings);
|
||||
validationHandler = valHandler;
|
||||
languageHandler = langHandler;
|
||||
yamlSettings = settings;
|
||||
});
|
||||
// Tests for validator
|
||||
describe('Yaml Validation with kubernetes', function () {
|
||||
function parseSetup(content) {
|
||||
const testTextDocument = (0, testHelper_1.setupTextDocument)(content);
|
||||
yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
|
||||
yamlSettings.documents.set(testTextDocument);
|
||||
yamlSettings.specificValidatorPaths = ['*.yml', '*.yaml'];
|
||||
return validationHandler.validateTextDocument(testTextDocument);
|
||||
}
|
||||
//Validating basic nodes
|
||||
describe('Test that validation does not throw errors', function () {
|
||||
it('Basic test', (done) => {
|
||||
const content = 'apiVersion: v1';
|
||||
const validator = parseSetup(content);
|
||||
validator
|
||||
.then(function (result) {
|
||||
assert.equal(result.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Basic test on nodes with children', (done) => {
|
||||
const content = 'metadata:\n name: hello';
|
||||
const validator = parseSetup(content);
|
||||
validator
|
||||
.then(function (result) {
|
||||
assert.equal(result.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Advanced test on nodes with children', (done) => {
|
||||
const content = 'apiVersion: v1\nmetadata:\n name: test1';
|
||||
const validator = parseSetup(content);
|
||||
validator
|
||||
.then(function (result) {
|
||||
assert.equal(result.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Type string validates under children', (done) => {
|
||||
const content = 'apiVersion: v1\nkind: Pod\nmetadata:\n resourceVersion: test';
|
||||
const validator = parseSetup(content);
|
||||
validator
|
||||
.then(function (result) {
|
||||
assert.equal(result.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
describe('Type tests', function () {
|
||||
it('Type String does not error on valid node', (done) => {
|
||||
const content = 'apiVersion: v1';
|
||||
const validator = parseSetup(content);
|
||||
validator
|
||||
.then(function (result) {
|
||||
assert.equal(result.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Type Boolean does not error on valid node', (done) => {
|
||||
const content = 'readOnlyRootFilesystem: false';
|
||||
const validator = parseSetup(content);
|
||||
validator
|
||||
.then(function (result) {
|
||||
assert.equal(result.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Type Number does not error on valid node', (done) => {
|
||||
const content = 'generation: 5';
|
||||
const validator = parseSetup(content);
|
||||
validator
|
||||
.then(function (result) {
|
||||
assert.equal(result.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Type Object does not error on valid node', (done) => {
|
||||
const content = 'metadata:\n clusterName: tes';
|
||||
const validator = parseSetup(content);
|
||||
validator
|
||||
.then(function (result) {
|
||||
assert.equal(result.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Type Array does not error on valid node', (done) => {
|
||||
const content = 'items:\n - apiVersion: v1';
|
||||
const validator = parseSetup(content);
|
||||
validator
|
||||
.then(function (result) {
|
||||
assert.equal(result.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
});
|
||||
});
|
||||
/**
|
||||
* Removed these tests because the schema pulled in from
|
||||
* https://github.com/redhat-developer/yaml-language-server/pull/108
|
||||
* No longer has those types of validation
|
||||
*/
|
||||
// describe('Test that validation DOES throw errors', function () {
|
||||
// it('Error when theres no value for a node', done => {
|
||||
// const content = 'apiVersion:';
|
||||
// const validator = parseSetup(content);
|
||||
// validator.then(function (result){
|
||||
// assert.notEqual(result.length, 0);
|
||||
// }).then(done, done);
|
||||
// });
|
||||
// it('Error on incorrect value type (number)', done => {
|
||||
// const content = 'apiVersion: 1000';
|
||||
// const validator = parseSetup(content);
|
||||
// validator.then(function (result){
|
||||
// assert.notEqual(result.length, 0);
|
||||
// }).then(done, done);
|
||||
// });
|
||||
// it('Error on incorrect value type (boolean)', done => {
|
||||
// const content = 'apiVersion: False';
|
||||
// const validator = parseSetup(content);
|
||||
// validator.then(function (result){
|
||||
// assert.notEqual(result.length, 0);
|
||||
// }).then(done, done);
|
||||
// });
|
||||
// it('Error on incorrect value type (string)', done => {
|
||||
// const content = 'isNonResourceURL: hello_world';
|
||||
// const validator = parseSetup(content);
|
||||
// validator.then(function (result){
|
||||
// assert.notEqual(result.length, 0);
|
||||
// }).then(done, done);
|
||||
// });
|
||||
// it('Error on incorrect value type (object)', done => {
|
||||
// const content = 'apiVersion: v1\nkind: Pod\nmetadata:\n name: False';
|
||||
// const validator = parseSetup(content);
|
||||
// validator.then(function (result){
|
||||
// assert.notEqual(result.length, 0);
|
||||
// }).then(done, done);
|
||||
// });
|
||||
// it('Error on incorrect value type in multiple yaml documents', done => {
|
||||
// const content = '---\napiVersion: v1\n...\n---\napiVersion: False\n...';
|
||||
// const validator = parseSetup(content);
|
||||
// validator.then(function (result){
|
||||
// assert.notEqual(result.length, 0);
|
||||
// }).then(done, done);
|
||||
// });
|
||||
// it('Property error message should be \"Property unknown_node is not allowed.\" when property is not allowed ', done => {
|
||||
// const content = 'unknown_node: test';
|
||||
// const validator = parseSetup(content);
|
||||
// validator.then(function (result){
|
||||
// assert.equal(result.length, 1);
|
||||
// assert.equal(result[0].message, 'Property unknown_node is not allowed.');
|
||||
// }).then(done, done);
|
||||
// });
|
||||
// });
|
||||
});
|
||||
describe('yamlCompletion with kubernetes', function () {
|
||||
describe('doComplete', function () {
|
||||
function parseSetup(content, position) {
|
||||
const testTextDocument = (0, testHelper_1.setupTextDocument)(content);
|
||||
yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
|
||||
yamlSettings.documents.set(testTextDocument);
|
||||
return languageHandler.completionHandler({
|
||||
position: testTextDocument.positionAt(position),
|
||||
textDocument: testTextDocument,
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Known issue: https://github.com/redhat-developer/yaml-language-server/issues/51
|
||||
*/
|
||||
// it('Autocomplete on root node without word', done => {
|
||||
// const content = '';
|
||||
// const completion = parseSetup(content, 0);
|
||||
// completion.then(function (result){
|
||||
// assert.notEqual(result.items.length, 0);
|
||||
// }).then(done, done);
|
||||
// });
|
||||
// it('Autocomplete on root node with word', done => {
|
||||
// const content = 'api';
|
||||
// const completion = parseSetup(content, 6);
|
||||
// completion.then(function (result){
|
||||
// assert.notEqual(result.items.length, 0);
|
||||
// }).then(done, done);
|
||||
// });
|
||||
/**
|
||||
* Removed these tests because the schema pulled in from
|
||||
* https://github.com/redhat-developer/yaml-language-server/pull/108
|
||||
* No longer has those types of completion
|
||||
*/
|
||||
// it('Autocomplete on default value (without value content)', done => {
|
||||
// const content = 'apiVersion: ';
|
||||
// const completion = parseSetup(content, 10);
|
||||
// completion.then(function (result){
|
||||
// assert.notEqual(result.items.length, 0);
|
||||
// }).then(done, done);
|
||||
// });
|
||||
it('Autocomplete on default value (with value content)', (done) => {
|
||||
const content = 'apiVersion: v1\nkind: Depl';
|
||||
const completion = parseSetup(content, 19);
|
||||
completion
|
||||
.then(function (result) {
|
||||
assert.notEqual(result.items.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Autocomplete on boolean value (without value content)', (done) => {
|
||||
const content = 'spec:\n allowPrivilegeEscalation: ';
|
||||
const completion = parseSetup(content, 38);
|
||||
completion
|
||||
.then(function (result) {
|
||||
assert.equal(result.items.length, 2);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Autocomplete on boolean value (with value content)', (done) => {
|
||||
const content = 'spec:\n allowPrivilegeEscalation: fal';
|
||||
const completion = parseSetup(content, 43);
|
||||
completion
|
||||
.then(function (result) {
|
||||
assert.equal(result.items.length, 2);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Autocomplete key in middle of file', (done) => {
|
||||
const content = 'metadata:\n nam';
|
||||
const completion = parseSetup(content, 14);
|
||||
completion
|
||||
.then(function (result) {
|
||||
assert.notEqual(result.items.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
it('Autocomplete key in middle of file 2', (done) => {
|
||||
const content = 'metadata:\n name: test\n cluster';
|
||||
const completion = parseSetup(content, 31);
|
||||
completion
|
||||
.then(function (result) {
|
||||
assert.notEqual(result.items.length, 0);
|
||||
})
|
||||
.then(done, done);
|
||||
});
|
||||
});
|
||||
});
|
||||
describe('yamlHover with kubernetes', function () {
|
||||
function parseSetup(content, offset) {
|
||||
const testTextDocument = (0, testHelper_1.setupTextDocument)(content);
|
||||
yamlSettings.documents = new yamlSettings_1.TextDocumentTestManager();
|
||||
yamlSettings.documents.set(testTextDocument);
|
||||
return languageHandler.hoverHandler({
|
||||
position: testTextDocument.positionAt(offset),
|
||||
textDocument: testTextDocument,
|
||||
});
|
||||
}
|
||||
it('Hover on incomplete kubernetes document', async () => {
|
||||
const content = 'apiVersion: v1\nmetadata:\n name: test\nkind: Deployment\nspec:\n ';
|
||||
const hover = await parseSetup(content, 58);
|
||||
assert.strictEqual(vscode_languageserver_types_1.MarkupContent.is(hover?.contents), true);
|
||||
assert.strictEqual((hover?.contents).value, '');
|
||||
});
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=integration.test.js.map
|
||||
Reference in New Issue
Block a user