blob: f1b0d5b108dc459c49a180fc2abec95716a27086 [file] [log] [blame]
/*
* 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.sling.commons.osgi;
import junit.framework.TestCase;
/**
* Tests for the manifest header parsing.
*/
public class ManifestHeaderTest extends TestCase {
public void testNonExisting() {
String header = null;
final ManifestHeader entry = ManifestHeader.parse(header);
assertNull(entry);
}
public void testSinglePath() {
String header = "something";
final ManifestHeader entry = ManifestHeader.parse(header);
assertEquals(1, entry.getEntries().length);
assertEquals(header, entry.getEntries()[0].getValue());
assertEquals(0, entry.getEntries()[0].getAttributes().length);
assertEquals(0, entry.getEntries()[0].getDirectives().length);
}
public void testSeveralPaths() {
String header = "one,two, three ,\n four, \n five";
final ManifestHeader entry = ManifestHeader.parse(header);
assertEquals(5, entry.getEntries().length);
assertEquals("one", entry.getEntries()[0].getValue());
assertEquals(0, entry.getEntries()[0].getAttributes().length);
assertEquals(0, entry.getEntries()[0].getDirectives().length);
assertEquals("two", entry.getEntries()[1].getValue());
assertEquals(0, entry.getEntries()[1].getAttributes().length);
assertEquals(0, entry.getEntries()[1].getDirectives().length);
assertEquals("three", entry.getEntries()[2].getValue());
assertEquals(0, entry.getEntries()[2].getAttributes().length);
assertEquals(0, entry.getEntries()[2].getDirectives().length);
assertEquals("four", entry.getEntries()[3].getValue());
assertEquals(0, entry.getEntries()[3].getAttributes().length);
assertEquals(0, entry.getEntries()[3].getDirectives().length);
assertEquals("five", entry.getEntries()[4].getValue());
assertEquals(0, entry.getEntries()[4].getAttributes().length);
assertEquals(0, entry.getEntries()[4].getDirectives().length);
}
public void testAttributes() {
String header = "one;a=1;b=2";
final ManifestHeader entry = ManifestHeader.parse(header);
assertEquals(1, entry.getEntries().length);
assertEquals("one", entry.getEntries()[0].getValue());
assertEquals(2, entry.getEntries()[0].getAttributes().length);
assertEquals(0, entry.getEntries()[0].getDirectives().length);
assertEquals("a", entry.getEntries()[0].getAttributes()[0].getName());
assertEquals("b", entry.getEntries()[0].getAttributes()[1].getName());
assertEquals("1", entry.getEntries()[0].getAttributes()[0].getValue());
assertEquals("2", entry.getEntries()[0].getAttributes()[1].getValue());
}
public void testDirectives() {
String header = "one;a:=1;b:=2";
final ManifestHeader entry = ManifestHeader.parse(header);
assertEquals(1, entry.getEntries().length);
assertEquals("one", entry.getEntries()[0].getValue());
assertEquals(2, entry.getEntries()[0].getDirectives().length);
assertEquals(0, entry.getEntries()[0].getAttributes().length);
assertEquals("a", entry.getEntries()[0].getDirectives()[0].getName());
assertEquals("b", entry.getEntries()[0].getDirectives()[1].getName());
assertEquals("1", entry.getEntries()[0].getDirectives()[0].getValue());
assertEquals("2", entry.getEntries()[0].getDirectives()[1].getValue());
}
public void testQuoting() {
String header = "one;a:=\"1,2\"";
final ManifestHeader entry = ManifestHeader.parse(header);
assertEquals(1, entry.getEntries().length);
assertEquals("one", entry.getEntries()[0].getValue());
assertEquals(1, entry.getEntries()[0].getDirectives().length);
assertEquals(0, entry.getEntries()[0].getAttributes().length);
assertEquals("a", entry.getEntries()[0].getDirectives()[0].getName());
assertEquals("1,2", entry.getEntries()[0].getDirectives()[0].getValue());
}
public void testQuoting2() {
String header = "CQ-INF/content/apps/xyz/docroot;overwrite:=true;path:=/apps/xyz/docroot;ignoreImportProviders:=\"json,xml\"";
final ManifestHeader entry = ManifestHeader.parse(header);
assertEquals(1, entry.getEntries().length);
assertEquals("CQ-INF/content/apps/xyz/docroot", entry.getEntries()[0].getValue());
assertEquals(3, entry.getEntries()[0].getDirectives().length);
assertEquals(0, entry.getEntries()[0].getAttributes().length);
assertEquals("overwrite", entry.getEntries()[0].getDirectives()[0].getName());
assertEquals("true", entry.getEntries()[0].getDirectives()[0].getValue());
assertEquals("path", entry.getEntries()[0].getDirectives()[1].getName());
assertEquals("/apps/xyz/docroot", entry.getEntries()[0].getDirectives()[1].getValue());
assertEquals("ignoreImportProviders", entry.getEntries()[0].getDirectives()[2].getName());
assertEquals("json,xml", entry.getEntries()[0].getDirectives()[2].getValue());
}
public void testMultipleEntries() {
String header = "SLING-INF/content/etc;checkin:=true;path:=/etc,\nSLING-INF/content/libs;overwrite:=true;path:=/libs";
final ManifestHeader entry = ManifestHeader.parse(header);
assertEquals(2, entry.getEntries().length);
assertEquals("SLING-INF/content/etc", entry.getEntries()[0].getValue());
assertEquals(2, entry.getEntries()[0].getDirectives().length);
assertEquals(0, entry.getEntries()[0].getAttributes().length);
assertEquals("checkin", entry.getEntries()[0].getDirectives()[0].getName());
assertEquals("path", entry.getEntries()[0].getDirectives()[1].getName());
assertEquals("true", entry.getEntries()[0].getDirectives()[0].getValue());
assertEquals("/etc", entry.getEntries()[0].getDirectives()[1].getValue());
assertEquals("SLING-INF/content/libs", entry.getEntries()[1].getValue());
assertEquals(2, entry.getEntries()[1].getDirectives().length);
assertEquals(0, entry.getEntries()[1].getAttributes().length);
assertEquals("overwrite", entry.getEntries()[1].getDirectives()[0].getName());
assertEquals("path", entry.getEntries()[1].getDirectives()[1].getName());
assertEquals("true", entry.getEntries()[1].getDirectives()[0].getValue());
assertEquals("/libs", entry.getEntries()[1].getDirectives()[1].getValue());
}
}