@@ -22,11 +22,13 @@ import { Diagnostic, DiagnosticSeverity, Position } from 'vscode-languageserver-
2222import { expect } from 'chai' ;
2323import { SettingsState , TextDocumentTestManager } from '../src/yamlSettings' ;
2424import { ValidationHandler } from '../src/languageserver/handlers/validationHandlers' ;
25- import { LanguageService } from '../src/languageservice/yamlLanguageService' ;
25+ import { LanguageService , SchemaPriority } from '../src/languageservice/yamlLanguageService' ;
2626import { KUBERNETES_SCHEMA_URL } from '../src/languageservice/utils/schemaUrls' ;
2727import { IProblem } from '../src/languageservice/parser/jsonParser07' ;
2828import { JSONSchema } from '../src/languageservice/jsonSchema' ;
2929import { TestTelemetry } from './utils/testsTypes' ;
30+ import { SettingsHandler } from '../src/languageserver/handlers/settingsHandlers' ;
31+ import { Connection } from 'vscode-languageserver' ;
3032
3133describe ( 'Validation Tests' , ( ) => {
3234 let languageSettingsSetup : ServiceSetup ;
@@ -1902,5 +1904,32 @@ obj:
19021904 expect ( result [ 0 ] . message ) . to . eq ( 'Matches multiple schemas when only one must validate.' ) ;
19031905 expect ( telemetry . messages ) . to . be . empty ;
19041906 } ) ;
1907+
1908+ it ( 'custom kubernetes schema should return validation errors' , ( done ) => {
1909+ const settingsHandler = new SettingsHandler (
1910+ { } as Connection ,
1911+ languageService ,
1912+ yamlSettings ,
1913+ validationHandler ,
1914+ telemetry
1915+ ) ;
1916+ const initialSettings = languageSettingsSetup . withKubernetes ( true ) . languageSettings ;
1917+ const kubernetesSettings = settingsHandler . configureSchemas (
1918+ 'https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.26.1-standalone-strict/all.json' ,
1919+ [ '**' ] ,
1920+ undefined ,
1921+ initialSettings ,
1922+ SchemaPriority . SchemaAssociation
1923+ ) ;
1924+ languageService . configure ( kubernetesSettings ) ;
1925+ const content = `apiVersion: apps/v1\nkind: Deployment\nfoo: bar` ;
1926+ const validator = parseSetup ( content ) ;
1927+ validator
1928+ . then ( function ( result ) {
1929+ assert . equal ( result . length , 1 ) ;
1930+ // eslint-disable-next-line
1931+ assert . equal ( result [ 0 ] . message , `Property foo is not allowed.` ) ;
1932+ } ) . then ( done , done ) ;
1933+ } ) ;
19051934 } ) ;
19061935} ) ;
0 commit comments