| /* |
| * 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()); |
| } |
| } |