public void ExceptionIfNotWritable() { using (var stream = GetStream(TestFiles.malformed_uri_xlsx)) { var settings = new OpenSettings { RelationshipErrorHandlerFactory = RelationshipErrorHandler.CreateRewriterFactory((partUri, id, uri) => null), }; var exception = Assert.Throws <OpenXmlPackageException>(() => SpreadsheetDocument.Open(stream, false)); Assert.IsType <UriFormatException>(exception.InnerException); } }
public void RewriteMalformedUri() { const string Rewritten = "http://error"; const string Id = "rId1"; var Count = 0; using (var stream = GetStream(TestFiles.malformed_uri_xlsx, isEditable: true)) { var settings = new OpenSettings { RelationshipErrorHandlerFactory = RelationshipErrorHandler.CreateRewriterFactory((partUri, id, uri) => { Count++; Assert.Equal(Id, id); Assert.Equal("/xl/worksheets/_rels/sheet1.xml.rels", partUri.OriginalString); Assert.Equal("mailto:one@", uri); return(Rewritten); }), }; using (var doc = SpreadsheetDocument.Open(stream, true, settings)) { Assert.Equal(1, Count); var worksheetPart = Assert.Single(doc.WorkbookPart.WorksheetParts); var hyperlinkRelationship = Assert.Single(worksheetPart.HyperlinkRelationships); var worksheet = Assert.IsType <Worksheet>(worksheetPart.RootElement); var hyperlink = Assert.Single(worksheet.Descendants <Hyperlink>()); Assert.Equal(Id, hyperlinkRelationship.Id); Assert.Equal(Rewritten, hyperlinkRelationship.Uri.OriginalString); Assert.Equal(Id, hyperlink.Id); } } }
public void RewriteMalformedUriLong() { const string Rewritten = "http://error"; const string Id = "rId1"; var Count = 0; using var stream = GetStream(TestFiles.malformed_uri_long_xlsx, isEditable: true); var settings = new OpenSettings { RelationshipErrorHandlerFactory = RelationshipErrorHandler.CreateRewriterFactory((partUri, id, uri) => { Count++; Assert.Equal(Id, id); Assert.Equal("/xl/worksheets/_rels/sheet1.xml.rels", partUri.OriginalString); Assert.Equal("mailto:[email protected];%[email protected];%[email protected];%[email protected];%[email protected];%[email protected]?subject=Unsubscribe%20Request&body=Please%20unsubscribe%20me%20from%20all%20future%20communications", uri); return(Rewritten); }), }; using var doc = SpreadsheetDocument.Open(stream, true, settings); Assert.Equal(1, Count); var worksheetPart = Assert.Single(doc.WorkbookPart.WorksheetParts); var hyperlinkRelationship = Assert.Single(worksheetPart.HyperlinkRelationships); var worksheet = Assert.IsType <Worksheet>(worksheetPart.RootElement); var hyperlink = Assert.Single(worksheet.Descendants <Hyperlink>()); Assert.Equal(Id, hyperlinkRelationship.Id); Assert.Equal(Rewritten, hyperlinkRelationship.Uri.OriginalString); Assert.Equal(Id, hyperlink.Id); }