17415: Enhanced test to check xml
authorDaniel Kutyła <daniel.kutyla@contractors.roche.com>
Fri, 16 Apr 2021 22:27:22 +0000 (00:27 +0200)
committerDaniel Kutyła <daniel.kutyla@contractors.roche.com>
Fri, 16 Apr 2021 22:27:22 +0000 (00:27 +0200)
Arvados-DCO-1.1-Signed-off-by: Daniel Kutyła <daniel.kutyla@contractors.roche.com>

cypress/integration/collection.spec.js
src/views-components/webdav-s3-dialog/webdav-s3-dialog.tsx

index b3f06d10c8f71f673fbf9902c7e52042443b0969..ea5076e1e75e77460a1b37dbaad69b4fadf4b7f5 100644 (file)
@@ -32,7 +32,7 @@ describe('Collection panel tests', function () {
         cy.clearLocalStorage();
     });
 
-    it('allows to download mountain duck config for a collection', () => {
+    it.only('allows to download mountain duck config for a collection', () => {
         cy.createCollection(adminUser.token, {
             name: `Test collection ${Math.floor(Math.random() * 999999)}`,
             owner_uuid: activeUser.user.uuid,
@@ -47,11 +47,26 @@ describe('Collection panel tests', function () {
             cy.get('[data-cy=download-button').click();
 
             const filename = path.join(downloadsFolder, `${testCollection.name}.duck`);
-            const expectedValue = '<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEplistPUBLIC"-//Apple//DTDPLIST1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plistversion="1.0"><dict><key>Protocol</key><string>davs</string><key>Provider</key><string>iterateGmbH</string><key>UUID</key><string>zzzzz-4zz18-oehuaangyo2timv</string><key>Hostname</key><string>0.0.0.0</string><key>Port</key><string>40041</string><key>Username</key><string>collectionuser1</string><key>Labels</key><array></array></dict></plist>';
 
             cy.readFile(filename, { timeout: 15000 })
-                .then((str) => {
-                    expect(str.replaceAll(' ', '').replaceAll('\n', ''), expectedValue);
+                .then((body) => {
+                    const childrenCollection = Array.prototype.slice.call(Cypress.$(body).find('dict')[0].children);
+                    const map = {};
+                    let i, j = 2;
+                    
+                    for (i=0; i < childrenCollection.length; i += j) {
+                      map[childrenCollection[i].outerText] = childrenCollection[i + 1].outerText;
+                    }
+
+                    cy.get('#simple-tabpanel-0').find('a')
+                        .then((a) => {
+                            const [host, port] = a.text().split('@')[1].split('/')[0].split(':');
+                            expect(map['Protocol']).to.equal('davs');
+                            expect(map['UUID']).to.equal(testCollection.uuid);
+                            expect(map['Username']).to.equal(activeUser.user.username);
+                            expect(map['Port']).to.equal(port);
+                            expect(map['Hostname']).to.equal(host);
+                        });
                 })
                 .then(() => cy.task('clearDownload', { filename }));
         });
index c4d2ede00de2d3349145fda317c7ebf32a1c2306..c1acfd80b7241695ee4179949c4c60d0ccba412e 100644 (file)
@@ -47,7 +47,8 @@ function TabPanel(props: TabPanelData) {
 const mountainduckTemplate = ({
     uuid, 
     username,
-    collectionsUrl,
+    cyberDavStr,
+    collectionsUrl
 }: any) => `<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
@@ -61,7 +62,7 @@ const mountainduckTemplate = ({
       <key>Hostname</key>
       <string>${collectionsUrl.replace('https://', ``).replace('*', uuid).split(':')[0]}</string>
       <key>Port</key>
-      <string>${collectionsUrl.split(':')[2] || 443}</string>
+      <string>${(cyberDavStr.split(':')[2] || '443').split('/')[0]}</string>
       <key>Username</key>
       <string>${username}</string>
       <key>Labels</key>
@@ -193,7 +194,7 @@ export const WebDavS3InfoDialog = compose(
                     <Button
                         data-cy='download-button'
                         className={props.classes.downloadButton}
-                        onClick={() => downloadMountainduckFileHandler(`${props.data.collectionName || props.data.uuid}.duck`, mountainduckTemplate(props.data))}
+                        onClick={() => downloadMountainduckFileHandler(`${props.data.collectionName || props.data.uuid}.duck`, mountainduckTemplate({ ...props.data, cyberDavStr }))}
                         variant='contained'
                         color='primary'
                         size='small'>