/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.solr.rest.schema; import org.apache.solr.rest.SolrRestletTestBase; import org.junit.Test; public class TestSchemaResource extends SolrRestletTestBase { @Test public void testXMLResponse() throws Exception { assertQ("/schema/?indent=on&wt=xml", // should work with or without trailing slash on '/schema/' path "count(/response/lst[@name='schema']/str[@name='name']) = 1", "/response/lst[@name='schema']/str[@name='name'][.='test-rest']", "count(/response/lst[@name='schema']/float[@name='version']) = 1", "/response/lst[@name='schema']/float[@name='version'][.='1.6']", "count(/response/lst[@name='schema']/str[@name='uniqueKey']) = 1", "/response/lst[@name='schema']/str[@name='uniqueKey'][.='id']", "(/response/lst[@name='schema']/arr[@name='fieldTypes']/lst/str[@name='name'])[1] = 'HTMLstandardtok'", "(/response/lst[@name='schema']/arr[@name='fieldTypes']/lst/str[@name='name'])[2] = 'HTMLwhitetok'", "(/response/lst[@name='schema']/arr[@name='fieldTypes']/lst/str[@name='name'])[3] = 'boolean'", "(/response/lst[@name='schema']/arr[@name='fields']/lst/str[@name='name'])[1] = 'HTMLstandardtok'", "(/response/lst[@name='schema']/arr[@name='fields']/lst/str[@name='name'])[2] = 'HTMLwhitetok'", "(/response/lst[@name='schema']/arr[@name='fields']/lst/str[@name='name'])[3] = '_version_'", "(/response/lst[@name='schema']/arr[@name='dynamicFields']/lst/str[@name='name'])[1] = '*_coordinate'", "(/response/lst[@name='schema']/arr[@name='dynamicFields']/lst/str[@name='name'])[2] = 'ignored_*'", "(/response/lst[@name='schema']/arr[@name='dynamicFields']/lst/str[@name='name'])[3] = '*_mfacet'", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='title']" +" and str[@name='dest'][.='title_stemmed']" +" and int[@name='maxChars'][.='200']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='title']" +" and str[@name='dest'][.='dest_sub_no_ast_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='*_i']" +" and str[@name='dest'][.='title']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='*_i']" +" and str[@name='dest'][.='*_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='*_i']" +" and str[@name='dest'][.='*_dest_sub_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='*_i']" +" and str[@name='dest'][.='dest_sub_no_ast_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='*_src_sub_i']" +" and str[@name='dest'][.='title']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='*_src_sub_i']" +" and str[@name='dest'][.='*_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='*_src_sub_i']" +" and str[@name='dest'][.='*_dest_sub_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='*_src_sub_i']" +" and str[@name='dest'][.='dest_sub_no_ast_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='src_sub_no_ast_i']" +" and str[@name='dest'][.='title']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='src_sub_no_ast_i']" +" and str[@name='dest'][.='*_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='src_sub_no_ast_i']" +" and str[@name='dest'][.='*_dest_sub_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='src_sub_no_ast_i']" +" and str[@name='dest'][.='dest_sub_no_ast_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='title_*']" +" and str[@name='dest'][.='text']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='title_*']" +" and str[@name='dest'][.='*_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='title_*']" +" and str[@name='dest'][.='*_dest_sub_s']]", "/response/lst[@name='schema']/arr[@name='copyFields']/lst[ str[@name='source'][.='title_*']" +" and str[@name='dest'][.='dest_sub_no_ast_s']]"); } @Test public void testJSONResponse() throws Exception { assertJQ("/schema?wt=json", // Should work with or without a trailing slash "/schema/name=='test-rest'", "/schema/version==1.6", "/schema/uniqueKey=='id'", "/schema/fieldTypes/[0]/name=='HTMLstandardtok'", "/schema/fieldTypes/[1]/name=='HTMLwhitetok'", "/schema/fieldTypes/[2]/name=='boolean'", "/schema/fields/[0]/name=='HTMLstandardtok'", "/schema/fields/[1]/name=='HTMLwhitetok'", "/schema/fields/[2]/name=='_version_'", "/schema/dynamicFields/[0]/name=='*_coordinate'", "/schema/dynamicFields/[1]/name=='ignored_*'", "/schema/dynamicFields/[2]/name=='*_mfacet'", "/schema/copyFields/[1]=={'source':'src_sub_no_ast_i','dest':'title'}", "/schema/copyFields/[7]=={'source':'title','dest':'dest_sub_no_ast_s'}", "/schema/copyFields/[8]=={'source':'*_i','dest':'title'}", "/schema/copyFields/[9]=={'source':'*_i','dest':'*_s'}", "/schema/copyFields/[10]=={'source':'*_i','dest':'*_dest_sub_s'}", "/schema/copyFields/[11]=={'source':'*_i','dest':'dest_sub_no_ast_s'}", "/schema/copyFields/[12]=={'source':'*_src_sub_i','dest':'title'}", "/schema/copyFields/[13]=={'source':'*_src_sub_i','dest':'*_s'}", "/schema/copyFields/[14]=={'source':'*_src_sub_i','dest':'*_dest_sub_s'}", "/schema/copyFields/[15]=={'source':'*_src_sub_i','dest':'dest_sub_no_ast_s'}", "/schema/copyFields/[16]=={'source':'src_sub_no_ast_i','dest':'*_s'}", "/schema/copyFields/[17]=={'source':'src_sub_no_ast_i','dest':'*_dest_sub_s'}", "/schema/copyFields/[18]=={'source':'src_sub_no_ast_i','dest':'dest_sub_no_ast_s'}"); } @Test public void testSchemaXmlResponse() { assertQ("/schema?wt=schema.xml", // should work with or without trailing slash on '/schema/' path "/schema/@name = 'test-rest'", "/schema/@version = '1.6'", "/schema/uniqueKey = 'id'", "(/schema/fieldType)[1]/@name = 'HTMLstandardtok'", "(/schema/fieldType)[2]/@name = 'HTMLwhitetok'", "(/schema/fieldType)[3]/@name = 'boolean'", "(/schema/field)[1]/@name = 'HTMLstandardtok'", "(/schema/field)[2]/@name = 'HTMLwhitetok'", "(/schema/field)[3]/@name = '_version_'", "(/schema/dynamicField)[1]/@name = '*_coordinate'", "(/schema/dynamicField)[2]/@name = 'ignored_*'", "(/schema/dynamicField)[3]/@name = '*_mfacet'", "/schema/copyField[@source='title'][@dest='title_stemmed'][@maxChars='200']", "/schema/copyField[@source='title'][@dest='dest_sub_no_ast_s']", "/schema/copyField[@source='*_i'][@dest='title']", "/schema/copyField[@source='*_i'][@dest='*_s']", "/schema/copyField[@source='*_i'][@dest='*_dest_sub_s']", "/schema/copyField[@source='*_i'][@dest='dest_sub_no_ast_s']", "/schema/copyField[@source='*_src_sub_i'][@dest='title']", "/schema/copyField[@source='*_src_sub_i'][@dest='*_s']", "/schema/copyField[@source='*_src_sub_i'][@dest='*_dest_sub_s']", "/schema/copyField[@source='*_src_sub_i'][@dest='dest_sub_no_ast_s']", "/schema/copyField[@source='src_sub_no_ast_i'][@dest='title']", "/schema/copyField[@source='src_sub_no_ast_i'][@dest='*_s']", "/schema/copyField[@source='src_sub_no_ast_i'][@dest='*_dest_sub_s']", "/schema/copyField[@source='src_sub_no_ast_i'][@dest='dest_sub_no_ast_s']", "/schema/copyField[@source='title_*'][@dest='text']", "/schema/copyField[@source='title_*'][@dest='*_s']", "/schema/copyField[@source='title_*'][@dest='*_dest_sub_s']", "/schema/copyField[@source='title_*'][@dest='dest_sub_no_ast_s']"); } }