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 }); }
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); }); }); });