btrz-pact-s3
Advanced tools
Comparing version 0.4.0 to 0.4.1
36
index.js
@@ -152,7 +152,6 @@ "use strict"; | ||
verifyPacts(providerBaseUrl, providerName, _s3Client_) { | ||
verifyPacts(providerBaseUrl, providerName, _s3Client_, _pact_) { | ||
let self = this; | ||
const pact = require('@pact-foundation/pact-node'); | ||
let s3Client = _s3Client_ || new AWS.S3({ | ||
const pact = _pact_ || require('@pact-foundation/pact-node'); | ||
const s3Client = _s3Client_ || new AWS.S3({ | ||
accessKeyId: this.accessKeyId, | ||
@@ -164,24 +163,27 @@ secretAccessKey: this.secretAccessKey | ||
s3Client.listObjects({Bucket: self.bucket}, (err, data) => { | ||
if (err) { | ||
return reject(err); | ||
} | ||
let keysFromProvider = data.Contents.filter((content) => { | ||
return (content.Key.indexOf(`${providerName}/`) === 0); | ||
return (content.Key.indexOf(`${providerName.toLowerCase()}/`) === 0); | ||
}).map((content) => {return content.Key}); | ||
if (!keysFromProvider) { | ||
if (keysFromProvider.length === 0) { | ||
return reject(new Error(`There are no pacts for the provider ${providerName}`)); | ||
} | ||
let pactFiles = []; | ||
for (var i=0; i < keysFromProvider.length; i++) { | ||
let file = fs.createWriteStream(`./pacts-to-verify/${path.basename(keysFromProvider[i])}`); | ||
let filePath = `${__dirname}/pacts-to-verify/${path.basename(keysFromProvider[i])}`; | ||
let file = fs.createWriteStream(filePath); | ||
s3Client.getObject({Bucket: self.bucket, Key: keysFromProvider[i]}).createReadStream().pipe(file); | ||
pactFiles.push(filePath); | ||
} | ||
console.log(keysFromProvider); | ||
var opts = { | ||
providerBaseUrl: providerBaseUrl, | ||
pactUrls: [`${__dirname}/pacts-to-verify`] | ||
//pactUrls: [`${__dirname}/pacts-to-verify/sales-inventory.json`] // Array of local Pact file paths or Pact Broker URLs (http based). Required. | ||
pactUrls: pactFiles | ||
}; | ||
// let access = fs.createWriteStream(`./results.${providerName}.log`, { flags: 'a' }), | ||
// error = fs.createWriteStream(`./error.${providerName}.log`, { flags: 'a' }); | ||
pact.verifyPacts(opts) | ||
@@ -199,8 +201,2 @@ .then((result) => { | ||
checkDifferences(differences) { | ||
return differences.filter((dif) => { | ||
return (dif.rhs && dif.kind === "N") | ||
}); | ||
} | ||
getFileKey(filePath) { | ||
@@ -223,3 +219,3 @@ | ||
return resolve(`${pact.provider.name}/${pact.consumer.name}/${fileName}`); | ||
return resolve(`${pact.provider.name.toLowerCase()}/${pact.consumer.name.toLowerCase()}/${fileName}`); | ||
}); | ||
@@ -226,0 +222,0 @@ } |
{ | ||
"name": "btrz-pact-s3", | ||
"version": "0.4.0", | ||
"version": "0.4.1", | ||
"description": "A consumer-driven Pact library for NodeJs to publish pacts to AWS S3 and verify them", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -153,2 +153,92 @@ "use strict"; | ||
describe("verifyPacts", function () { | ||
let pact = require('@pact-foundation/pact-node'); | ||
it("should verify the pacts with the correct params", function (done) { | ||
let providerBaseUrl = "http://api-host.com:3010"; | ||
s3Client = new AWS.S3({ | ||
accessKeyId: options.accessKeyId, | ||
secretAccessKey: options.secretAccessKey | ||
}); | ||
sinon.stub(s3Client, "listObjects", (opts, cb) => { | ||
expect(opts.Bucket).to.be.eql(options.bucket); | ||
s3Client.listObjects.restore(); | ||
cb(null,{ Contents: [{Key: "provider/consumer/pact-file.json"}]}); | ||
}); | ||
sinon.stub(s3Client, "getObject", (opts, cb) => { | ||
expect(opts.Bucket).to.be.eql(options.bucket); | ||
expect(opts.Key).to.be.eql("provider/consumer/pact-file.json"); | ||
s3Client.getObject.restore(); | ||
class S3MockObject { | ||
static createReadStream() { | ||
return require("fs").createReadStream("./"); | ||
} | ||
} | ||
return S3MockObject; | ||
}); | ||
sinon.stub(pact, "verifyPacts", (opts) => { | ||
expect(opts.providerBaseUrl).to.be.eql(providerBaseUrl); | ||
expect(opts.pactUrls[0]).to.contain("pact-file.json"); | ||
pact.verifyPacts.restore(); | ||
return Promise.resolve(); | ||
}); | ||
btrzPactS3.verifyPacts(providerBaseUrl, "provider", s3Client, pact) | ||
.then((result) => { | ||
done(); | ||
}) | ||
.catch((err) => { | ||
done(err); | ||
}); | ||
}); | ||
it("should reject an error if S3 has no pact files for the provider/consumer", function (done) { | ||
let providerBaseUrl = "http://api-host.com:3010"; | ||
s3Client = new AWS.S3({ | ||
accessKeyId: options.accessKeyId, | ||
secretAccessKey: options.secretAccessKey | ||
}); | ||
sinon.stub(s3Client, "listObjects", (opts, cb) => { | ||
expect(opts.Bucket).to.be.eql(options.bucket); | ||
s3Client.listObjects.restore(); | ||
cb(null,{ Contents: [{Key: "another_provider/consumer/pact-file.json"}]}); | ||
}); | ||
btrzPactS3.verifyPacts(providerBaseUrl, "provider", s3Client, pact) | ||
.catch((err) => { | ||
expect(err).to.be.ok; | ||
done(); | ||
}); | ||
}); | ||
it("should reject an error if s3Client.listObjects() returns an error", function (done) { | ||
let providerBaseUrl = "http://api-host.com:3010"; | ||
s3Client = new AWS.S3({ | ||
accessKeyId: options.accessKeyId, | ||
secretAccessKey: options.secretAccessKey | ||
}); | ||
sinon.stub(s3Client, "listObjects", (opts, cb) => { | ||
expect(opts.Bucket).to.be.eql(options.bucket); | ||
s3Client.listObjects.restore(); | ||
cb(new Error("error!"), {}); | ||
}); | ||
btrzPactS3.verifyPacts(providerBaseUrl, "provider", s3Client, pact) | ||
.catch((err) => { | ||
expect(err).to.be.ok; | ||
done(); | ||
}); | ||
}); | ||
}); | ||
describe("getFileKey", function () { | ||
@@ -155,0 +245,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
20280
558
2