wmt-marketplace-auth-canada
Version:
Generate the authentication headers required by Walmart Marketplace API.
54 lines (46 loc) • 2.53 kB
text/typescript
import { expect } from 'chai';
import * as Headers from '../../lib/headers';
describe('Custom Headers object has expected defaults.', () => {
let headers = new Headers.Custom;
it('Has WMService Name of Walmart Marketplace.', () => {
expect(headers.WMService.Name).to.equal('Walmart Marketplace');
});
it('Has Accept header of application/json', () => {
expect(headers.Accept).to.equal('application/json');
});
it('Has a Content-Type header of application/json', () => {
expect(headers.ContentType).to.equal('application/json');
});
it('Has a CorrelationId', () => {
expect(headers.WMQOS.CorrelationId).is.not.null;
});
});
describe('Signed Headers object is built from Custom Headers object.', () => {
let headers = new Headers.Custom;
headers.setCorrelationId('1234hfvgtr');
it('Has a CorrelationId of 1234hfvgtr.', () => {
expect(headers.WMQOS.CorrelationId).to.equal('1234hfvgtr');
});
// Channel and ConsumerId samples generated by: `uuidgen | tr "[:upper:]" "[:lower:]"`
headers.setConsumer({
Channel: { Type: '38b7eb6c-3672-4022-93a2-f47794f36338' },
ConsumerId: 'f091ae58-774c-45ff-9d8a-e30a83344e42'
});
it('Has a Consumer Channel Type value of 38b7eb6c-3672-4022-93a2-f47794f36338', () => {
expect(headers.WMConsumer.Channel.Type).to.equal('38b7eb6c-3672-4022-93a2-f47794f36338');
});
it('Has a ConsumerId of f091ae58-774c-45ff-9d8a-e30a83344e42', () => {
expect(headers.WMConsumer.ConsumerId).to.equal('f091ae58-774c-45ff-9d8a-e30a83344e42');
});
// Private key sample from https://en.wikipedia.org/wiki/PKCS_8.
let digitalSignatureRequest = {
RequestUrl: 'https://marketplace.walmartapis.com/v3/feeds',
PrivateKey: 'MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAq7BFUpkGp3+LQmlQYx2eqzDV+xeG8kx/sQFV18S5JhzGeIJNA72wSeukEPojtqUyX2J0CciPBh7eqclQ2zpAswIDAQABAkAgisq4+zRdrzkwH1ITV1vpytnkO/NiHcnePQiOW0VUybPyHoGM/jf75C5xET7ZQpBe5kx5VHsPZj0CBb3b+wSRAiEA2mPWCBytosIU/ODRfq6EiV04lt6waE7I2uSPqIC20LcCIQDJQYIHQII+3YaPqyhGgqMexuuuGx+lDKD6/Fu/JwPb5QIhAKthiYcYKlL9h8bjDsQhZDUACPasjzdsDEdq8inDyLOFAiEAmCr/tZwA3qeAZoBzI10DGPIuoKXBd3nk/eBxPkaxlEECIQCNymjsoI7GldtujVnr1qT+3yedLfHKsrDVjIT3LsvTqw==',
RequestMethod: 'GET'
}
headers.setTimestamp(1523287838530);
let signedHeaders = Headers.sign(headers, digitalSignatureRequest);
it('Has a digital signature.', () => {
expect(signedHeaders["WM_SEC.AUTH_SIGNATURE"]).to.equal('E1EPWiqwuLYceSVr2XGmljo7qq1+EDI5++1XvFcVf+/klas+mLMAJbDihfAwkjyDxi3WkJDdTCNfle0O+4V/9g==');
});
});