Example #1
0
  describe(`spsave: integration tests - ${test.name}`, function () {
    var spr = sprequest.create({ username: test.creds.username, password: test.creds.password }, { domain: test.env.domain });

    beforeEach('delete folders', function (done) {
      this.timeout(10 * 1000);

      spr.requestDigest(test.url)
        .then(digest => {
          return Promise.all([spr.post(`${test.url}/_api/web/GetFolderByServerRelativeUrl(@FolderName)` +
            `?@FolderName='${encodeURIComponent('SiteAssets/files')}'`, {
              headers: {
                'X-RequestDigest': digest,
                'X-HTTP-Method': 'DELETE'
              }
            })]);
        })
        .then(data => {
          done();
        })
        .catch(done);
    });

    after('cleaning', function (done) {
      this.timeout(10 * 1000);

      spr.requestDigest(test.url)
        .then(digest => {
          return Promise.all([spr.post(`${test.url}/_api/web/GetFolderByServerRelativeUrl(@FolderName)` +
            `?@FolderName='${encodeURIComponent('SiteAssets/files')}'`, {
              headers: {
                'X-RequestDigest': digest,
                'X-HTTP-Method': 'DELETE'
              }
            })]);
        })
        .then(data => {
          done();
        })
        .catch(done);
    });

    var path = (url.parse(test.url).path).replace(/(\/$)|(\\$)/, '');

    it('should upload file into the folder', function (done) {
      this.timeout(10 * 1000);
      var fileName = 'index.js';
      var fileContent = fs.readFileSync(fileName);
      var folder = 'SiteAssets/files';

      gulp.src(fileName)
        .pipe(spsave({
          siteUrl: test.url,
          username: test.creds.username,
          password: test.creds.password,
          domain: test.env.domain,
          folder: folder
        }))
        .on('finish', function () {
          var fileRelativeUrl = `${path}/${folder}/${fileName}`;

          spr.get(`${test.url}/_api/web/GetFileByServerRelativeUrl(@FileUrl)/$value` +
            `?@FileUrl='${encodeURIComponent(fileRelativeUrl)}'`, {
              encoding: null
            }).then(data => {
              expect(fileContent.equals(data.body)).is.true;
              done();
            })
            .catch(done);
        });
    });

    it('should upload file into the folder with automatic base option', function (done) {
      this.timeout(10 * 1000);

      var fileContent = fs.readFileSync('test/integration/files/spsave.txt');
      var folder = 'SiteAssets/files';

      gulp.src('test/integration/files/*.*', { base: 'test' })
        .pipe(spsave({
          siteUrl: test.url,
          username: test.creds.username,
          password: test.creds.password,
          domain: test.env.domain,
          folder: folder,
          flatten: false
        }))
        .on('finish', function () {
          var fileRelativeUrl = `${path}/${folder}/integration/files/spsave.txt`;

          spr.get(`${test.url}/_api/web/GetFileByServerRelativeUrl(@FileUrl)/$value` +
            `?@FileUrl='${encodeURIComponent(fileRelativeUrl)}'`, {
              encoding: null
            }).then(data => {
              expect(fileContent.equals(data.body)).is.true;
              done();
            })
            .catch(done);
        });
    });
    
    it('should upload file into the folder with base option and flatten', function (done) {
      this.timeout(10 * 1000);

      var fileContent = fs.readFileSync('test/integration/files/spsave.txt');
      var folder = 'SiteAssets/files';

      gulp.src('test/integration/files/*.*', { base: 'test' })
        .pipe(spsave({
          siteUrl: test.url,
          username: test.creds.username,
          password: test.creds.password,
          domain: test.env.domain,
          folder: folder,
          flatten: true
        }))
        .on('finish', function () {
          var fileRelativeUrl = `${path}/${folder}/spsave.txt`;

          spr.get(`${test.url}/_api/web/GetFileByServerRelativeUrl(@FileUrl)/$value` +
            `?@FileUrl='${encodeURIComponent(fileRelativeUrl)}'`, {
              encoding: null
            }).then(data => {
              expect(fileContent.equals(data.body)).is.true;
              done();
            })
            .catch(done);
        });
    });
    
    it('should not throw an error when processing file further in pipes', function (done) {
      this.timeout(10 * 1000);

      var fileContent = fs.readFileSync('test/integration/files/spsave.txt');
      var folder = 'SiteAssets/files';

      gulp.src('test/integration/files/*.*', { base: 'test' })
        .pipe(spsave({
          siteUrl: test.url,
          username: test.creds.username,
          password: test.creds.password,
          domain: test.env.domain,
          folder: folder,
          flatten: true
        }))
        .pipe(gulp.dest('./test'))
        .on('finish', function () {
          done();
        });
    });
  });
 function FileSync(options) {
     this.config = options;
     this.spr = sprequest.create({ username: options.username, password: options.password });
 }
Example #3
0
describe('gulp-spsync-creds: file upload tests', function () {
    var spr = sprequest.create({ username: config.username, password: config.password });

    before('delete file and folders', function (done) {
        console.log('Delete file and folders before running tests');
        this.timeout(10 * 1000);      

        spr.requestDigest(config.site)
            .then(digest => {
                return deleteFile(spr, digest, deleteFile)
                .then(function (success) {
                    return deleteFolder(spr, digest, folderUrl);
                })
                .catch(function (err) {
                    return deleteFolder(spr, digest, folderUrl);
                });
            })
            .then(data => {
                done();
            })
            .catch(done);
        }
    );

    beforeEach('delete file', function (done) {
        console.log('Delete file before running next test');
        this.timeout(10 * 1000);      

        spr.requestDigest(config.site)
            .then(digest => {
                return deleteFile(spr, digest, deleteFile);
            })
            .then(data => {
                done();
            })
            .catch(done);
        }
    );

    after('cleaning', function (done) {
        console.log('Clean up file and folders after tests have ran');
        this.timeout(10 * 1000);

        spr.requestDigest(config.site)
            .then(digest => {
                return deleteFile(spr, digest, deleteFile)
                .then(function (success) {
                    return deleteFolder(spr, digest, folderUrl);
                })
                .catch(function (err) {
                    return deleteFolder(spr, digest, folderUrl);
                });
            })
            .then(data => {
                done();
            })
            .catch(done);
        }
    );

    it('File should be uploaded to a folder', function (done) {
        this.timeout(10 * 1000);
        var fileContent = fs.readFileSync(fileLoc);

        gulp.src(fileLoc, { base: baseLoc })
            .pipe(spsync({
                site: config.site,
                username: config.username,
                password: config.password,
                cache: true,
                verbose: true
            }))
            .on('finish', function () {
                spr.get(retrieveFileUrl, {
                    encoding: null
                })
                .then(data => {
                    expect(fileContent.equals(data.body)).is.true;
                    done();
                })
                .catch(done);
            });
    });

    it('Same as previous but no folder creation', function (done) {
        this.timeout(10 * 1000);
        var fileContent = fs.readFileSync(fileLoc);

        gulp.src(fileLoc, { base: baseLoc })
            .pipe(spsync({
                site: config.site,
                username: config.username,
                password: config.password,
                cache: true,
                verbose: true
            }))
            .on('finish', function () {
                spr.get(retrieveFileUrl, {
                    encoding: null
                })
                .then(data => {
                    expect(fileContent.equals(data.body)).is.true;
                    done();
                })
                .catch(done);
            });
    });

    it('Upload file and set metadata', function (done) {
        this.timeout(10 * 1000);
        gulp.src(fileLoc, { base: baseLoc })
            .pipe(spsync({
                site: config.site,
                username: config.username,
                password: config.password,
                files_metadata: config.fileMetadata,
                update_metadata: true,
                cache: true,
                verbose: true
            }))
            .on('finish', function () {
                spr.get(metadataFileUrl, {
                    headers: {
                        "Accept": "application/json; odata=verbose",
                    }
                })
                .then(data => {
                    expect(data.body.d.Title === config.fileMetadata[0].metadata.Title).is.true;
                    expect(data.body.d.MasterPageDescription === config.fileMetadata[0].metadata.MasterPageDescription).is.true;
                    done();
                })
                .catch(done);
            });
    });

    it('File should get published', function (done) {
        this.timeout(10 * 1000);
        gulp.src(fileLoc, { base: baseLoc })
            .pipe(spsync({
                site: config.site,
                username: config.username,
                password: config.password,
                files_metadata: config.fileMetadata,
                publish: true,
                verbose: true
            }))
            .on('finish', function () {
                spr.get(publishFileUrl, {
                    headers: {
                        "Accept": "application/json; odata=verbose",
                    }
                })
                .then(data => {
                    expect(data.body.d.MajorVersion >= 1 && data.body.d.MinorVersion === 0).is.true;
                    done();
                })
                .catch(done); 
            });
    });
});