Socket
Socket
Sign inDemoInstall

btrz-pact-s3

Package Overview
Dependencies
156
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

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 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc