@@ -22,11 +22,13 @@ import { Diagnostic, DiagnosticSeverity, Position } from 'vscode-languageserver-
22
22
import { expect } from 'chai' ;
23
23
import { SettingsState , TextDocumentTestManager } from '../src/yamlSettings' ;
24
24
import { ValidationHandler } from '../src/languageserver/handlers/validationHandlers' ;
25
- import { LanguageService } from '../src/languageservice/yamlLanguageService' ;
25
+ import { LanguageService , SchemaPriority } from '../src/languageservice/yamlLanguageService' ;
26
26
import { KUBERNETES_SCHEMA_URL } from '../src/languageservice/utils/schemaUrls' ;
27
27
import { IProblem } from '../src/languageservice/parser/jsonParser07' ;
28
28
import { JSONSchema } from '../src/languageservice/jsonSchema' ;
29
29
import { TestTelemetry } from './utils/testsTypes' ;
30
+ import { SettingsHandler } from '../src/languageserver/handlers/settingsHandlers' ;
31
+ import { Connection } from 'vscode-languageserver' ;
30
32
31
33
describe ( 'Validation Tests' , ( ) => {
32
34
let languageSettingsSetup : ServiceSetup ;
@@ -1902,5 +1904,32 @@ obj:
1902
1904
expect ( result [ 0 ] . message ) . to . eq ( 'Matches multiple schemas when only one must validate.' ) ;
1903
1905
expect ( telemetry . messages ) . to . be . empty ;
1904
1906
} ) ;
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
+ } ) ;
1905
1934
} ) ;
1906
1935
} ) ;
0 commit comments