Implement self.get and self.post from Gerrit JS API

https://gerrit-review.googlesource.com/Documentation/js-api.html#self_get
https://gerrit-review.googlesource.com/Documentation/js-api.html#self_post

Feature: Issue 5960
Change-Id: I6778f40ba1d6d8b2b31ebb51ffd39a6fab265424
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html
index c3013bd..40810b1 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html
@@ -36,6 +36,8 @@
     let plugin;
     let errorStub;
     let sandbox;
+    let getResponseObjectStub;
+    let sendStub;
 
     const throwErrFn = function() {
       throw Error('Unfortunately, this handler has stopped');
@@ -43,10 +45,16 @@
 
     setup(() => {
       sandbox = sinon.sandbox.create();
+      getResponseObjectStub = sandbox.stub().returns(Promise.resolve());
+      sendStub = sandbox.stub().returns(Promise.resolve());
       stub('gr-rest-api-interface', {
         getAccount() {
           return Promise.resolve({name: 'Judy Hopps'});
         },
+        getResponseObject: getResponseObjectStub,
+        send(...args) {
+          return sendStub(...args);
+        },
       });
       element = fixture('basic');
       errorStub = sandbox.stub(console, 'error');
@@ -67,6 +75,27 @@
           'http://test.com/plugins/testplugin/static/test.js');
     });
 
+    test('get', done => {
+      const response = {foo: 'foo'};
+      getResponseObjectStub.returns(Promise.resolve(response));
+      plugin.get('/url', r => {
+        assert.isTrue(sendStub.calledWith('GET', '/url'));
+        assert.strictEqual(r, response);
+        done();
+      });
+    });
+
+    test('post', done => {
+      const payload = {foo: 'foo'};
+      const response = {bar: 'bar'};
+      getResponseObjectStub.returns(Promise.resolve(response));
+      plugin.post('/url', payload, r => {
+        assert.isTrue(sendStub.calledWith('POST', '/url', payload));
+        assert.strictEqual(r, response);
+        done();
+      });
+    });
+
     test('history event', done => {
       plugin.on(element.EventType.HISTORY, throwErrFn);
       plugin.on(element.EventType.HISTORY, path => {