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.2.0 to 0.3.0

pacts-to-verify/sales-inventory.json

97

index.js

@@ -5,3 +5,4 @@ "use strict";

fs = require("fs"),
path = require('path');
path = require('path'),
url = require('url');

@@ -138,3 +139,3 @@ class BtrzPactS3 {

//pacts.forEach(function(pact) {
return this.getFilesFromPath(pacts[0])
return this.getFilesFromPath(pacts[0])
.then((files) => {

@@ -146,30 +147,84 @@ return Promise.all(files.map(function (file) {

.catch((err) => {
if (this.logger) {
this.logger.error(`Error on BtrzPactS3::publishPacts()`, err);
}
throw err;
});
}
}
getFileKey(filePath) {
verifyPacts(providerBaseUrl, providerName, _s3Client_) {
let self = this;
const pact = require('@pact-foundation/pact-node');
function resolver(resolve, reject) {
return fs.readFile(filePath, "utf8", function (err, data) {
if (err) {
let s3Client = _s3Client_ || new AWS.S3({
accessKeyId: this.accessKeyId,
secretAccessKey: this.secretAccessKey
});
function resolver(resolve, reject) {
s3Client.listObjects({Bucket: self.bucket}, (err, data) => {
let keysFromProvider = data.Contents.filter((content) => {
return (content.Key.indexOf(`${providerName}/`) === 0);
}).map((content) => {return content.Key});
if (!keysFromProvider) {
return reject(new Error(`There are no pacts for the provider ${providerName}`));
}
for (var i=0; i < keysFromProvider.length; i++) {
let file = fs.createWriteStream(`./pacts-to-verify/${path.basename(keysFromProvider[i])}`);
s3Client.getObject({Bucket: self.bucket, Key: keysFromProvider[i]}).createReadStream().pipe(file);
}
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.
};
// let access = fs.createWriteStream(`./results.${providerName}.log`, { flags: 'a' }),
// error = fs.createWriteStream(`./error.${providerName}.log`, { flags: 'a' });
pact.verifyPacts(opts)
.then((result) => {
return resolve(result);
})
.catch((err) => {
return reject(err);
}
let fileName = path.basename(filePath);
let pact = JSON.parse(data);
});
});
}
return new Promise(resolver);
}
if (!pact.consumer.name) {
return reject(new Error(`The consumer name was not especified in the ${fileName} pact file`));
}
if (!pact.provider.name) {
return reject(new Error(`The provider name was not especified in the ${fileName} pact file`));
}
checkDifferences(differences) {
return differences.filter((dif) => {
return (dif.rhs && dif.kind === "N")
});
}
return resolve(`${pact.consumer.name}/${pact.provider.name}/${fileName}`);
});
}
return new Promise(resolver);
getFileKey(filePath) {
function resolver(resolve, reject) {
return fs.readFile(filePath, "utf8", function (err, data) {
if (err) {
return reject(err);
}
let fileName = path.basename(filePath);
let pact = JSON.parse(data);
if (!pact.consumer.name) {
return reject(new Error(`The consumer name was not especified in the ${fileName} pact file`));
}
if (!pact.provider.name) {
return reject(new Error(`The provider name was not especified in the ${fileName} pact file`));
}
return resolve(`${pact.provider.name}/${pact.consumer.name}/${fileName}`);
});
}
return new Promise(resolver);
}
}
exports.BtrzPactS3 = BtrzPactS3;
exports.BtrzPactS3 = BtrzPactS3;
{
"name": "btrz-pact-s3",
"version": "0.2.0",
"version": "0.3.0",
"description": "The S3 pact lib for Betterez",

@@ -25,4 +25,6 @@ "main": "index.js",

"dependencies": {
"@pact-foundation/pact-node": "^4.5.4",
"aws-sdk": "^2.6.11",
"btrz-logger": "^1.2.0"
"btrz-logger": "^1.2.0",
"request-promise": "^4.1.1"
},

@@ -29,0 +31,0 @@ "devDependencies": {

# btrz-pact-s3
Pact publish and verify, serving files in AWS S3 and based in the Pact Foundation https://docs.pact.io
# Publish pacts
# Install
run `npm install btrz-pact-s3 --save`
# Using btrz-pact-s3
let options = {
accessKeyId: "your_s3_key",
secretAccessKey: "your_s3_secret_key",
bucket: "your_s3_bucket"
}
const BtrzPactS3 = require("btrz-pact-s3").BtrzPactS3,
btrzPactS3 = new BtrzPactS3(options, logger);
The `logger` is optional, if you need to log errors and information. We recommend to use a logger service.
# Publishing pacts
btrzPactS3.publishPacts([`${__dirname}/pacts`])
.then(() => {
console.log("Pacts published with success!");
})
.catch((err) => {
console.log("Error publishing pacts", err);
});
You can use individual pact files in the array or just a path where they are.
# Test
`npm test`

@@ -12,2 +12,3 @@ "use strict";

AWS = require("aws-sdk"),
request = require("request-promise"),
sinon = require("sinon");

@@ -98,3 +99,3 @@ let logger = new Logger(),

expect(opts.Bucket).to.be.eql(options.bucket);
expect(opts.Key).to.be.eql("baby/soup/baby-soup.json");
expect(opts.Key).to.be.eql("soup/baby/baby-soup.json");
expect(opts.ACL).to.be.eql("public-read");

@@ -119,5 +120,4 @@ expect(opts.Body).to.respondTo("read");

putObjectStub.onCall(0).returns(function (opts, cb) {
console.log("wdsdddddddddddddddddddddddddddd");
expect(opts.Bucket).to.be.eql(options.bucket);
expect(opts.Key).to.be.eql("baby/song/baby-song.json");
expect(opts.Key).to.be.eql("song/baby/baby-song.json");
expect(opts.ACL).to.be.eql("public-read");

@@ -130,3 +130,3 @@ expect(opts.Body).to.respondTo("read");

expect(opts.Bucket).to.be.eql(options.bucket);
expect(opts.Key).to.be.eql("bird/fruit/bird-fruit.json");
expect(opts.Key).to.be.eql("fruit/bird/bird-fruit.json");
expect(opts.ACL).to.be.eql("public-read");

@@ -138,5 +138,4 @@ expect(opts.Body).to.respondTo("read");

putObjectStub.returns(function (opts, cb) {
console.log("wdsdddddddddddddddddddddddddddd");
expect(opts.Bucket).to.be.eql(options.bucket);
expect(opts.Key).to.be.eql("bird/seed/bird-seed.json");
expect(opts.Key).to.be.eql("seed/bird/bird-seed.json");
expect(opts.ACL).to.be.eql("public-read");

@@ -159,2 +158,28 @@ expect(opts.Body).to.respondTo("read");

describe.skip("verifyPacts", function () {
it("should verify the pacts", function (done) {
options = {
accessKeyId: "AKIAIEMO3QJHYL45MHGQ",
secretAccessKey: "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",
bucket: "btrz-pact"
};
s3Client = new AWS.S3({
accessKeyId: options.accessKeyId,
secretAccessKey: options.secretAccessKey
});
btrzPactS3 = new BtrzPactS3(options, logger);
btrzPactS3.verifyPacts("http://localhost:3010", "inventory")
.then((result) => {
done();
})
.catch((err) => {
done(err);
});
});
});
describe("getFileKey", function () {

@@ -165,3 +190,3 @@

.then((key) => {
expect(key).to.be.eql("baby/soup/baby-soup.json");
expect(key).to.be.eql("soup/baby/baby-soup.json");
done();

@@ -168,0 +193,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