| /** ********************************************************************** |
| * |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER |
| * |
| * Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved. |
| * |
| * Use is subject to license terms. |
| * |
| * Licensed 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. You can also |
| * obtain a copy of the License at http://odftoolkit.org/docs/license.txt |
| * |
| * 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.odftoolkit.odfvalidator; |
| |
| import java.io.PrintWriter; |
| import java.io.StringWriter; |
| import java.util.logging.Level; |
| import org.junit.Assert; |
| import org.junit.Test; |
| |
| /** |
| * Test some invalid packages. |
| */ |
| public class InvalidPackageTest extends OdfValidatorTestBase { |
| |
| @Test |
| public void validatePackage1() { |
| String output = ""; |
| try { |
| String name = "testInvalidPkg1.odt"; |
| output = doValidation(name, null); |
| } catch (Throwable t) { |
| t.printStackTrace(); |
| Assert.fail(t.toString()); |
| } |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: The file 'mimetype' is not the first file in the ODF package")); |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: The file 'mimetype' shall not be compressed")); |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: There shall be no extra field for the 'mimetype' file")); |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml: Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt: Info: 7 errors, 10 warnings")); |
| } |
| |
| @Test |
| public void validatePackage1_V1_1() { |
| String output = ""; |
| try { |
| String name = "testInvalidPkg1.odt"; |
| output = doValidation(name, OdfVersion.V1_1); |
| } catch (Throwable t) { |
| t.printStackTrace(); |
| Assert.fail(t.toString()); |
| } |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Warning: The file 'mimetype' is not the first file in the ODF package")); |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: The file 'mimetype' shall not be compressed")); |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt/mimetype: Error: There shall be no extra field for the 'mimetype' file")); |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt/META-INF/manifest.xml: Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); |
| Assert.assertTrue(output.contains("testInvalidPkg1.odt: Info: 10 errors, 11 warnings")); |
| } |
| |
| @Test |
| public void validatePackage2() { |
| String output = ""; |
| try { |
| String name = "testInvalidPkg2.odt"; |
| output = doValidation(name, null); |
| } catch (Throwable t) { |
| t.printStackTrace(); |
| Assert.fail(t.toString()); |
| } |
| Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype: Error: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file")); |
| Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml: Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); |
| Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml: Error: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package")); |
| Assert.assertTrue(output.contains("testInvalidPkg2.odt: Info: 5 errors, 10 warnings")); |
| } |
| |
| @Test |
| public void validatePackage2_V1_1() { |
| String output = ""; |
| try { |
| String name = "testInvalidPkg2.odt"; |
| output = doValidation(name, OdfVersion.V1_1); |
| } catch (Throwable t) { |
| t.printStackTrace(); |
| Assert.fail(t.toString()); |
| } |
| Assert.assertTrue(output.contains("testInvalidPkg2.odt/mimetype: Warning: The ODF package 'testInvalidPkg2.odt' contains no 'mimetype' file")); |
| Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml: Error: The file 'Configurations2/accelerator/current.xml' shall not be listed in the 'META-INF/manifest.xml' file as it does not exist in the ODF package")); |
| Assert.assertTrue(output.contains("testInvalidPkg2.odt/META-INF/manifest.xml: Warning: The file 'not_in_manifest' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package")); |
| Assert.assertTrue(output.contains("testInvalidPkg2.odt: Info: 7 errors, 12 warnings")); |
| } |
| |
| @Test |
| public void validatePackage3() { |
| String output = ""; |
| try { |
| String name = "testInvalidPkg3.odt"; |
| output = doValidation(name, null); |
| } catch (Throwable t) { |
| t.printStackTrace(); |
| Assert.fail(t.toString()); |
| } |
| Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("Error: The ODF package 'testInvalidPkg3.odt' shall contain the 'META-INF/manifest.xml' file")); |
| Assert.assertTrue("Output of validatePackage3(): " + output, output.contains("testInvalidPkg3.odt: Info: 3 errors, no warnings")); |
| } |
| |
| @Test |
| public void validateEncryptedODT() { |
| String output = ""; |
| try { |
| // password: hello |
| String name = "encrypted-with-pwd_hello.odt"; |
| output = doValidation(name, null); |
| } catch (Exception t) { |
| StringWriter errors = new StringWriter(); |
| t.printStackTrace(new PrintWriter(errors)); |
| Assert.fail(t.toString() + "\n" + errors.toString()); |
| } |
| Assert.assertTrue(output.contains("Fatal: ZIP entry 'mimetype': only DEFLATED entries can have EXT descriptor")); |
| java.util.logging.Logger.getLogger(getClass().getName()).log(Level.INFO, "Test result:\n{0}", output); |
| } |
| |
| @Test |
| public void validateDocumentSignature() { |
| String output = ""; |
| try { |
| // the manifest.xml is valid, but "META-INF/documentsignatures.xml" |
| // was erroneously reported as missing |
| String name = "good.odt"; |
| output = doValidation(name, OdfVersion.V1_2, OdfValidatorMode.EXTENDED_CONFORMANCE); |
| } catch (Throwable t) { |
| t.printStackTrace(); |
| Assert.fail(t.toString()); |
| } |
| Assert.assertFalse("Output of validateDocumentSignature(): " + output, output.contains("Error: The file 'META-INF/documentsignatures.xml' shall be listed in the 'META-INF/manifest.xml' file as it exists in the ODF package 'good.odt'")); |
| Assert.assertTrue("Output of validateDocumentSignature(): " + output, output.contains("Error: element \"document-signatures\" is missing \"version\" attribute")); |
| Assert.assertTrue("Output of validateDocumentSignature(): " + output, output.contains("good.odt: Info: 1 errors, no warnings")); |
| } |
| |
| } |