Skip to content

Commit

Permalink
Merge 9de8ad8 into b9026e2
Browse files Browse the repository at this point in the history
  • Loading branch information
erikdesjardins committed Aug 30, 2018
2 parents b9026e2 + 9de8ad8 commit 800b2f3
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 77 deletions.
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
language: node_js
node_js:
- 7
- 10
- 6
- 4
branches:
Expand All @@ -18,4 +18,4 @@ deploy:
secure: K6HgFDdiA8kcwOyikGakw6Y1VGiSNapWDZ3jAkW6XOdxHJZRBlmMb1Y+Br9ti4K/XkMMM/Kyo2fwNeBLvZdU+2Ev2BQESvPWl/ZIFciMhCxAAIAGNXJLU4Fqub+xQSpM4bG3O/wSfroIVD9UQUE9EZpW5GdqPX68MobUQzS9nVWTKG1GLDW5Dwd6je17eagqe8ycpdvsFsytPbr6H+MGb78gXMyFafeRcarIam2vR4e6DGULFmqVrIUQV8EsNrA72KBD8URSCif/32mMMAkhIUoWxAX9R+snbxh+7M/66rGWgQL+t1Q0NWZTwL7WA2KGBN+db0BDhEYUPF0MV4LfFGDsFLcFX2wP01fJJ/RBPtOOOLsD+nLPjR/764F5pOyzM+x0e2VXqnghLqlJo6h+y403lRezbCRLfG8NDnYOmkQTfBSb5PY0De0dqIpUYA8m8iVPz3OAax45FLZTft5ka2YDLNNwFBiMaMJkIPqis5pRU+led6DtHbxSEC95+XJF4qRMP7pOUyKGCDqCyf60ADYDqn3TG3mCvsl+kK9v09YevBy4es16F7hYaLU1tYyFPiOnLVyMgQuzCAQ7JmhlGYH465FO+p0v/oRjD4YK6gMWqGAcXamR345I/kqOnY/Rrix9TG+IEb6xCiWKJypDDJPex97Ty+f41MDb8LVCFlQ=
on:
tags: true
node: 7
node: 10
52 changes: 26 additions & 26 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,32 @@ module.exports = function deploy(options) {
throw new Error('Failed to create new submission: ' + (err.response.body.code || err.response.status));
});
})
// update the submission to intake the new package
.then(function() {
// https://docs.microsoft.com/en-us/windows/uwp/monetize/update-an-app-submission
// https://docs.microsoft.com/en-us/windows/uwp/monetize/update-a-flight-submission
return request
.put(appAndFlight + '/submissions/' + submissionInfo.id)
.set('Authorization', 'Bearer ' + accessToken)
.send(Object.assign({}, submissionInfo, {
[flightId ? 'flightPackages' : 'applicationPackages']: [{
fileName: 'package.appx',
fileStatus: 'PendingUpload',
minimumDirectXVersion: 'None',
minimumSystemRam: 'None'
}].concat(submissionInfo[flightId ? 'flightPackages' : 'applicationPackages'].map(function(pack) {
// remove old packages
return Object.assign({}, pack, {
fileStatus: 'PendingDelete'
});
}))
}))
.then(function(response) {
submissionInfo = response.body;
}, function(err) {
throw new Error('Failed to update submission: ' + (err.response.body.code || err.response.status));
});
})
// prepare zip file
.then(function() {
return new Promise(function(resolve, reject) {
Expand Down Expand Up @@ -130,32 +156,6 @@ module.exports = function deploy(options) {
throw new Error('Failed to upload package: ' + (err.response.body.code || err.response.status));
});
})
// update the submission to intake the new package
.then(function() {
// https://docs.microsoft.com/en-us/windows/uwp/monetize/update-an-app-submission
// https://docs.microsoft.com/en-us/windows/uwp/monetize/update-a-flight-submission
return request
.put(appAndFlight + '/submissions/' + submissionInfo.id)
.set('Authorization', 'Bearer ' + accessToken)
.send(Object.assign({}, submissionInfo, {
[flightId ? 'flightPackages' : 'applicationPackages']: [{
fileName: 'package.appx',
fileStatus: 'PendingUpload',
minimumDirectXVersion: 'None',
minimumSystemRam: 'None'
}].concat(submissionInfo[flightId ? 'flightPackages' : 'applicationPackages'].map(function(pack) {
// remove old packages
return Object.assign({}, pack, {
fileStatus: 'PendingDelete'
});
}))
}))
.then(function(response) {
submissionInfo = response.body;
}, function(err) {
throw new Error('Failed to update submission: ' + (err.response.body.code || err.response.status));
});
})
// commit new submission
.then(function() {
// https://docs.microsoft.com/en-us/windows/uwp/monetize/commit-an-app-submission
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "edge-extension-deploy",
"version": "1.0.1",
"version": "1.0.2",
"description": "Deploy Edge extensions to the Windows Store.",
"main": "index.js",
"scripts": {
Expand Down
96 changes: 48 additions & 48 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -205,34 +205,34 @@ test.serial('failing creation', async t => {
t.is(t.context.requests.length, 3);
});

test.serial('failing upload', async t => {
test.serial('failing update', async t => {
t.context.responses = [
{ access_token: 'q' },
{},
{ fileUploadUrl: 'https://mockfileupload.url' },
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
new ResponseError({ code: 'errorCode' }),
];

await t.throws(
deploy({ tenantId: 'q', clientId: 'q', clientSecret: 'q', appId: 'q', appx: new EmptyStream() }),
'Failed to upload package: errorCode',
'Failed to update submission: errorCode',
);

t.is(t.context.requests.length, 4);
});

test.serial('failing update', async t => {
test.serial('failing upload', async t => {
t.context.responses = [
{ access_token: 'q' },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
new ResponseError({ code: 'errorCode' }),
];

await t.throws(
deploy({ tenantId: 'q', clientId: 'q', clientSecret: 'q', appId: 'q', appx: new EmptyStream() }),
'Failed to update submission: errorCode',
'Failed to upload package: errorCode',
);

t.is(t.context.requests.length, 5);
Expand All @@ -243,7 +243,7 @@ test.serial('failing commit', async t => {
{ access_token: 'q' },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
new ResponseError({ code: 'errorCode' }),
];
Expand All @@ -261,7 +261,7 @@ test.serial('failing completion', async t => {
{ access_token: 'q' },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{},
new ResponseError({ code: 'errorCode' }),
Expand All @@ -280,7 +280,7 @@ test.serial('bad commit status', async t => {
{ access_token: 'q' },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{},
{ status: 'CommitFailed', statusDetails: 'statusDetails' }
Expand All @@ -299,7 +299,7 @@ test.serial('bad commit status after polling', async t => {
{ access_token: 'q' },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{},
{ status: 'CommitStarted' },
Expand All @@ -319,7 +319,7 @@ test.serial('bad commit status after polling 2', async t => {
{ access_token: 'q' },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{},
{ status: 'PendingCommit' },
Expand All @@ -339,7 +339,7 @@ test.serial('bad commit status after multiple polling', async t => {
{ access_token: 'q' },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{ fileUploadUrl: 'https://mockfileupload.url', applicationPackages: [] },
{},
{},
{ status: 'PendingCommit' },
Expand All @@ -360,8 +360,8 @@ test.serial('full publish, no pending submission', async t => {
{ access_token: 'myAccessToken' },
{},
{ fileUploadUrl: 'https://mockfileupload.url', id: 'mySubmissionId', applicationPackages: [{ fileName: 'foo', fileStatus: 'Uploaded' }] },
{ fileUploadUrl: 'https://mockfileupload.url', id: 'thisIdWontActuallyChangeInPractice', applicationPackages: [{ fileName: 'foo', fileStatus: 'Uploaded' }] },
{},
{ id: 'thisIdWontActuallyChangeInPractice' },
{},
{ status: 'PreProcessing' }
];
Expand All @@ -378,14 +378,9 @@ test.serial('full publish, no pending submission', async t => {
t.deepEqual(r[2].match, ['myAppId', undefined, '/submissions']);
t.is(r[2].headers.Authorization, 'Bearer myAccessToken');

t.deepEqual(r[3].match, ['https://mockfileupload.url']);
t.is(r[3].headers.Authorization, undefined, 'no auth header for file upload');
t.is(r[3].headers['x-ms-blob-type'], 'BlockBlob');
t.true(r[3].params instanceof Buffer);

t.deepEqual(r[4].match, ['myAppId', undefined, '/submissions/mySubmissionId']);
t.is(r[4].headers.Authorization, 'Bearer myAccessToken');
t.deepEqual(r[4].params, {
t.deepEqual(r[3].match, ['myAppId', undefined, '/submissions/mySubmissionId']);
t.is(r[3].headers.Authorization, 'Bearer myAccessToken');
t.deepEqual(r[3].params, {
applicationPackages: [
{ fileName: 'package.appx', fileStatus: 'PendingUpload', minimumDirectXVersion: 'None', minimumSystemRam: 'None' },
{ fileName: 'foo', fileStatus: 'PendingDelete' }
Expand All @@ -394,6 +389,11 @@ test.serial('full publish, no pending submission', async t => {
id: 'mySubmissionId'
});

t.deepEqual(r[4].match, ['https://mockfileupload.url']);
t.is(r[4].headers.Authorization, undefined, 'no auth header for file upload');
t.is(r[4].headers['x-ms-blob-type'], 'BlockBlob');
t.true(r[4].params instanceof Buffer);

t.deepEqual(r[5].match, ['myAppId', undefined, '/submissions/thisIdWontActuallyChangeInPractice/commit']);
t.is(r[5].headers.Authorization, 'Bearer myAccessToken');

Expand All @@ -409,8 +409,8 @@ test.serial('full publish, with pending submission', async t => {
{ pendingApplicationSubmission: { id: 'mySubmissionCode' } },
{},
{ fileUploadUrl: 'https://mockfileupload.url', id: 'mySubmissionId', applicationPackages: [{ fileName: 'foo', fileStatus: 'Uploaded' }] },
{ fileUploadUrl: 'https://mockfileupload.url', id: 'thisIdWontActuallyChangeInPractice', applicationPackages: [{ fileName: 'foo', fileStatus: 'Uploaded' }] },
{},
{ id: 'thisIdWontActuallyChangeInPractice' },
{},
{ status: 'PreProcessing' }
];
Expand All @@ -430,14 +430,9 @@ test.serial('full publish, with pending submission', async t => {
t.deepEqual(r[3].match, ['myAppId', undefined, '/submissions']);
t.is(r[3].headers.Authorization, 'Bearer myAccessToken');

t.deepEqual(r[4].match, ['https://mockfileupload.url']);
t.is(r[4].headers.Authorization, undefined, 'no auth header for file upload');
t.is(r[4].headers['x-ms-blob-type'], 'BlockBlob');
t.true(r[4].params instanceof Buffer);

t.deepEqual(r[5].match, ['myAppId', undefined, '/submissions/mySubmissionId']);
t.is(r[5].headers.Authorization, 'Bearer myAccessToken');
t.deepEqual(r[5].params, {
t.deepEqual(r[4].match, ['myAppId', undefined, '/submissions/mySubmissionId']);
t.is(r[4].headers.Authorization, 'Bearer myAccessToken');
t.deepEqual(r[4].params, {
applicationPackages: [
{ fileName: 'package.appx', fileStatus: 'PendingUpload', minimumDirectXVersion: 'None', minimumSystemRam: 'None' },
{ fileName: 'foo', fileStatus: 'PendingDelete' }
Expand All @@ -446,6 +441,11 @@ test.serial('full publish, with pending submission', async t => {
id: 'mySubmissionId'
});

t.deepEqual(r[5].match, ['https://mockfileupload.url']);
t.is(r[5].headers.Authorization, undefined, 'no auth header for file upload');
t.is(r[5].headers['x-ms-blob-type'], 'BlockBlob');
t.true(r[5].params instanceof Buffer);

t.deepEqual(r[6].match, ['myAppId', undefined, '/submissions/thisIdWontActuallyChangeInPractice/commit']);
t.is(r[6].headers.Authorization, 'Bearer myAccessToken');

Expand All @@ -460,8 +460,8 @@ test.serial('full publish to flight, no pending submission', async t => {
{ access_token: 'myAccessToken' },
{},
{ fileUploadUrl: 'https://mockfileupload.url', id: 'mySubmissionId', flightPackages: [{ fileName: 'foo', fileStatus: 'Uploaded' }] },
{ fileUploadUrl: 'https://mockfileupload.url', id: 'thisIdWontActuallyChangeInPractice', flightPackages: [{ fileName: 'foo', fileStatus: 'Uploaded' }] },
{},
{ id: 'thisIdWontActuallyChangeInPractice' },
{},
{ status: 'PreProcessing' }
];
Expand All @@ -478,14 +478,9 @@ test.serial('full publish to flight, no pending submission', async t => {
t.deepEqual(r[2].match, ['myAppId', 'myFlightId', '/submissions']);
t.is(r[2].headers.Authorization, 'Bearer myAccessToken');

t.deepEqual(r[3].match, ['https://mockfileupload.url']);
t.is(r[3].headers.Authorization, undefined, 'no auth header for file upload');
t.is(r[3].headers['x-ms-blob-type'], 'BlockBlob');
t.true(r[3].params instanceof Buffer);

t.deepEqual(r[4].match, ['myAppId', 'myFlightId', '/submissions/mySubmissionId']);
t.is(r[4].headers.Authorization, 'Bearer myAccessToken');
t.deepEqual(r[4].params, {
t.deepEqual(r[3].match, ['myAppId', 'myFlightId', '/submissions/mySubmissionId']);
t.is(r[3].headers.Authorization, 'Bearer myAccessToken');
t.deepEqual(r[3].params, {
flightPackages: [
{ fileName: 'package.appx', fileStatus: 'PendingUpload', minimumDirectXVersion: 'None', minimumSystemRam: 'None' },
{ fileName: 'foo', fileStatus: 'PendingDelete' }
Expand All @@ -494,6 +489,11 @@ test.serial('full publish to flight, no pending submission', async t => {
id: 'mySubmissionId'
});

t.deepEqual(r[4].match, ['https://mockfileupload.url']);
t.is(r[4].headers.Authorization, undefined, 'no auth header for file upload');
t.is(r[4].headers['x-ms-blob-type'], 'BlockBlob');
t.true(r[4].params instanceof Buffer);

t.deepEqual(r[5].match, ['myAppId', 'myFlightId', '/submissions/thisIdWontActuallyChangeInPractice/commit']);
t.is(r[5].headers.Authorization, 'Bearer myAccessToken');

Expand All @@ -509,8 +509,8 @@ test.serial('full publish to flight, with pending submission', async t => {
{ pendingFlightSubmission: { id: 'mySubmissionCode' } },
{},
{ fileUploadUrl: 'https://mockfileupload.url', id: 'mySubmissionId', flightPackages: [{ fileName: 'foo', fileStatus: 'Uploaded' }] },
{ fileUploadUrl: 'https://mockfileupload.url', id: 'thisIdWontActuallyChangeInPractice', flightPackages: [{ fileName: 'foo', fileStatus: 'Uploaded' }] },
{},
{ id: 'thisIdWontActuallyChangeInPractice' },
{},
{ status: 'PreProcessing' }
];
Expand All @@ -530,14 +530,9 @@ test.serial('full publish to flight, with pending submission', async t => {
t.deepEqual(r[3].match, ['myAppId', 'myFlightId', '/submissions']);
t.is(r[3].headers.Authorization, 'Bearer myAccessToken');

t.deepEqual(r[4].match, ['https://mockfileupload.url']);
t.is(r[4].headers.Authorization, undefined, 'no auth header for file upload');
t.is(r[4].headers['x-ms-blob-type'], 'BlockBlob');
t.true(r[4].params instanceof Buffer);

t.deepEqual(r[5].match, ['myAppId', 'myFlightId', '/submissions/mySubmissionId']);
t.is(r[5].headers.Authorization, 'Bearer myAccessToken');
t.deepEqual(r[5].params, {
t.deepEqual(r[4].match, ['myAppId', 'myFlightId', '/submissions/mySubmissionId']);
t.is(r[4].headers.Authorization, 'Bearer myAccessToken');
t.deepEqual(r[4].params, {
flightPackages: [
{ fileName: 'package.appx', fileStatus: 'PendingUpload', minimumDirectXVersion: 'None', minimumSystemRam: 'None' },
{ fileName: 'foo', fileStatus: 'PendingDelete' }
Expand All @@ -546,6 +541,11 @@ test.serial('full publish to flight, with pending submission', async t => {
id: 'mySubmissionId'
});

t.deepEqual(r[5].match, ['https://mockfileupload.url']);
t.is(r[5].headers.Authorization, undefined, 'no auth header for file upload');
t.is(r[5].headers['x-ms-blob-type'], 'BlockBlob');
t.true(r[5].params instanceof Buffer);

t.deepEqual(r[6].match, ['myAppId', 'myFlightId', '/submissions/thisIdWontActuallyChangeInPractice/commit']);
t.is(r[6].headers.Authorization, 'Bearer myAccessToken');

Expand Down

0 comments on commit 800b2f3

Please sign in to comment.