summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorXisco Fauli <xiscofauli@libreoffice.org>2020-10-20 17:34:12 +0200
committerXisco Fauli <xiscofauli@libreoffice.org>2020-10-21 08:01:37 +0200
commitb84afd2188d6993c91081885dc24664bd3f1cc73 (patch)
treeb2cea937d2b84a8a51f1bda4a10a1d6ce35913dc /sc
parent5e9cf87743e67c061e48f0f8285469d80def5042 (diff)
CppunitTest_sc_subsequent_export: factor out duplicated code
Change-Id: I87381f243e71e302df92b60c6afde15e78ab7828 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104570 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'sc')
-rw-r--r--sc/qa/unit/helper/qahelper.cxx28
-rw-r--r--sc/qa/unit/helper/qahelper.hxx3
-rw-r--r--sc/qa/unit/subsequent_export-test.cxx50
3 files changed, 30 insertions, 51 deletions
diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx
index 1b0d5e3de64b..db5efcea77e7 100644
--- a/sc/qa/unit/helper/qahelper.cxx
+++ b/sc/qa/unit/helper/qahelper.cxx
@@ -12,6 +12,7 @@
#include "debughelper.hxx"
#include <drwlayer.hxx>
#include <comphelper/sequence.hxx>
+#include <comphelper/storagehelper.hxx>
#include <compiler.hxx>
#include <conditio.hxx>
#include <stlsheet.hxx>
@@ -31,6 +32,7 @@
#include <svl/gridprinter.hxx>
#include <sfx2/docfilt.hxx>
#include <sfx2/docfile.hxx>
+#include <sfx2/frame.hxx>
#include <unotools/tempfile.hxx>
#include <scitems.hxx>
#include <tokenarray.hxx>
@@ -660,7 +662,7 @@ void ScBootstrapFixture::createCSVPath(const OUString& aFileBase, OUString& rCSV
ScDocShellRef ScBootstrapFixture::saveAndReload(
ScDocShell* pShell, const OUString &rFilter,
- const OUString &rUserData, const OUString& rTypeName, SfxFilterFlags nFormatType)
+ const OUString &rUserData, const OUString& rTypeName, SfxFilterFlags nFormatType, const OUString* pPassword)
{
utl::TempFile aTempFile;
@@ -674,6 +676,16 @@ ScDocShellRef ScBootstrapFixture::saveAndReload(
rUserData, "private:factory/scalc*" );
pExportFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT);
aStoreMedium.SetFilter(pExportFilter);
+
+ if (pPassword)
+ {
+ SfxItemSet* pExportSet = aStoreMedium.GetItemSet();
+ uno::Sequence< beans::NamedValue > aEncryptionData = comphelper::OStorageHelper::CreatePackageEncryptionData( *pPassword );
+ pExportSet->Put(SfxUnoAnyItem(SID_ENCRYPTIONDATA, makeAny(aEncryptionData)));
+
+ uno::Reference< embed::XStorage > xMedStorage = aStoreMedium.GetStorage();
+ ::comphelper::OStorageHelper::SetCommonStorageEncryptionData( xMedStorage, aEncryptionData );
+ }
pShell->DoSaveAs( aStoreMedium );
pShell->DoClose();
@@ -683,7 +695,7 @@ ScDocShellRef ScBootstrapFixture::saveAndReload(
if (nFormatType == ODS_FORMAT_TYPE)
nFormat = SotClipboardFormatId::STARCALC_8;
- ScDocShellRef xDocSh = load(aTempFile.GetURL(), rFilter, rUserData, rTypeName, nFormatType, nFormat );
+ ScDocShellRef xDocSh = load(aTempFile.GetURL(), rFilter, rUserData, rTypeName, nFormatType, nFormat, SOFFICE_FILEFORMAT_CURRENT, pPassword );
if(nFormatType == XLSX_FORMAT_TYPE)
validate(aTempFile.GetFileName(), test::OOXML);
else if (nFormatType == ODS_FORMAT_TYPE)
@@ -702,6 +714,18 @@ ScDocShellRef ScBootstrapFixture::saveAndReload( ScDocShell* pShell, sal_Int32 n
return xDocSh;
}
+ScDocShellRef ScBootstrapFixture::saveAndReloadPassword( ScDocShell* pShell, sal_Int32 nFormat )
+{
+ OUString aFilterName(aFileFormats[nFormat].pFilterName, strlen(aFileFormats[nFormat].pFilterName), RTL_TEXTENCODING_UTF8) ;
+ OUString aFilterType(aFileFormats[nFormat].pTypeName, strlen(aFileFormats[nFormat].pTypeName), RTL_TEXTENCODING_UTF8);
+ OUString aPass("test");
+
+ ScDocShellRef xDocSh = saveAndReload(pShell, aFilterName, OUString(), aFilterType, aFileFormats[nFormat].nFormatType, &aPass);
+
+ CPPUNIT_ASSERT(xDocSh.is());
+ return xDocSh;
+}
+
std::shared_ptr<utl::TempFile> ScBootstrapFixture::saveAs( ScDocShell* pShell, sal_Int32 nFormat )
{
OUString aFilterName(aFileFormats[nFormat].pFilterName, strlen(aFileFormats[nFormat].pFilterName), RTL_TEXTENCODING_UTF8) ;
diff --git a/sc/qa/unit/helper/qahelper.hxx b/sc/qa/unit/helper/qahelper.hxx
index d8ffa146a6aa..ad518d160f18 100644
--- a/sc/qa/unit/helper/qahelper.hxx
+++ b/sc/qa/unit/helper/qahelper.hxx
@@ -190,9 +190,10 @@ public:
void createCSVPath(const OUString& aFileBase, OUString& rCSVPath);
ScDocShellRef saveAndReload(ScDocShell* pShell, const OUString &rFilter,
- const OUString &rUserData, const OUString& rTypeName, SfxFilterFlags nFormatType);
+ const OUString &rUserData, const OUString& rTypeName, SfxFilterFlags nFormatType, const OUString* pPassword = nullptr );
ScDocShellRef saveAndReload( ScDocShell* pShell, sal_Int32 nFormat );
+ ScDocShellRef saveAndReloadPassword( ScDocShell* pShell, sal_Int32 nFormat );
std::shared_ptr<utl::TempFile> saveAs(ScDocShell* pShell, sal_Int32 nFormat);
std::shared_ptr<utl::TempFile> exportTo(ScDocShell* pShell, sal_Int32 nFormat);
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index a1a129e1b636..71fa266a191e 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -12,7 +12,6 @@
#include <config_features.h>
#include <sfx2/docfile.hxx>
-#include <sfx2/frame.hxx>
#include <sfx2/sfxmodelfactory.hxx>
#include <sfx2/sfxsids.hrc>
#include <sfx2/docfilt.hxx>
@@ -75,7 +74,6 @@
#include <com/sun/star/frame/Desktop.hpp>
#include <com/sun/star/graphic/GraphicType.hpp>
#include <com/sun/star/sheet/GlobalSheetSettings.hpp>
-#include <comphelper/storagehelper.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -90,8 +88,6 @@ public:
virtual void setUp() override;
virtual void tearDown() override;
- ScDocShellRef saveAndReloadPassword( ScDocShell*, const OUString&, const OUString&, const OUString&, SfxFilterFlags );
-
void test();
void testTdf90104();
void testTdf111876();
@@ -488,41 +484,6 @@ void ScExportTest::registerNamespaces(xmlXPathContextPtr& pXmlXPathCtx)
}
}
-ScDocShellRef ScExportTest::saveAndReloadPassword(ScDocShell* pShell, const OUString &rFilter,
- const OUString &rUserData, const OUString& rTypeName, SfxFilterFlags nFormatType)
-{
- utl::TempFile aTempFile;
- aTempFile.EnableKillingFile();
- SfxMedium aStoreMedium( aTempFile.GetURL(), StreamMode::STD_WRITE );
- SotClipboardFormatId nExportFormat = SotClipboardFormatId::NONE;
- if (nFormatType == ODS_FORMAT_TYPE)
- nExportFormat = SotClipboardFormatId::STARCHART_8;
- auto pExportFilter = std::make_shared<SfxFilter>(
- rFilter,
- OUString(), nFormatType, nExportFormat, rTypeName, OUString(),
- rUserData, "private:factory/scalc*" );
- pExportFilter->SetVersion(SOFFICE_FILEFORMAT_CURRENT);
- aStoreMedium.SetFilter(pExportFilter);
- SfxItemSet* pExportSet = aStoreMedium.GetItemSet();
- uno::Sequence< beans::NamedValue > aEncryptionData = comphelper::OStorageHelper::CreatePackageEncryptionData( "test" );
- pExportSet->Put(SfxUnoAnyItem(SID_ENCRYPTIONDATA, makeAny(aEncryptionData)));
-
- uno::Reference< embed::XStorage > xMedStorage = aStoreMedium.GetStorage();
- ::comphelper::OStorageHelper::SetCommonStorageEncryptionData( xMedStorage, aEncryptionData );
-
- pShell->DoSaveAs( aStoreMedium );
- pShell->DoClose();
-
- //std::cout << "File: " << aTempFile.GetURL() << std::endl;
-
- SotClipboardFormatId nFormat = SotClipboardFormatId::NONE;
- if (nFormatType == ODS_FORMAT_TYPE)
- nFormat = SotClipboardFormatId::STARCALC_8;
-
- OUString aPass("test");
- return load(aTempFile.GetURL(), rFilter, rUserData, rTypeName, nFormatType, nFormat, SOFFICE_FILEFORMAT_CURRENT, &aPass);
-}
-
void ScExportTest::test()
{
ScDocShell* pShell = new ScDocShell(
@@ -597,10 +558,7 @@ void ScExportTest::testPasswordExportODS()
rDoc.SetValue(0, 0, 0, 1.0);
- sal_Int32 nFormat = FORMAT_ODS;
- OUString aFilterName(getFileFormats()[nFormat].pFilterName, strlen(getFileFormats()[nFormat].pFilterName), RTL_TEXTENCODING_UTF8) ;
- OUString aFilterType(getFileFormats()[nFormat].pTypeName, strlen(getFileFormats()[nFormat].pTypeName), RTL_TEXTENCODING_UTF8);
- ScDocShellRef xDocSh = saveAndReloadPassword(pShell, aFilterName, OUString(), aFilterType, getFileFormats()[nFormat].nFormatType);
+ ScDocShellRef xDocSh = saveAndReloadPassword(pShell, FORMAT_ODS);
CPPUNIT_ASSERT(xDocSh.is());
ScDocument& rLoadedDoc = xDocSh->GetDocument();
@@ -621,11 +579,7 @@ void ScExportTest::testTdf134332()
ASSERT_DOUBLES_EQUAL(238.0, rDoc.GetValue(ScAddress(0,10144,0)));
- sal_Int32 nFormat = FORMAT_ODS;
- OUString aFilterName(getFileFormats()[nFormat].pFilterName, strlen(getFileFormats()[nFormat].pFilterName), RTL_TEXTENCODING_UTF8) ;
- OUString aFilterType(getFileFormats()[nFormat].pTypeName, strlen(getFileFormats()[nFormat].pTypeName), RTL_TEXTENCODING_UTF8);
- ScDocShellRef xDocSh = saveAndReloadPassword(static_cast<ScDocShell*>(rDoc.GetDocumentShell()), aFilterName, OUString(),
- aFilterType, getFileFormats()[nFormat].nFormatType);
+ ScDocShellRef xDocSh = saveAndReloadPassword(xShell.get(), FORMAT_ODS);
// Without the fixes in place, it would have failed here
CPPUNIT_ASSERT(xDocSh.is());