/// import {WebApiClient,WebApiContext,WebApiConfiguration} from '../lib/core-sdk'; import {UsersResource} from './support/test-api/users'; import {PostsResource} from './support/test-api/posts'; import {ContactsResource} from './support/test-api/contacts'; import {useWebApiKey,useEnvironment,Environment,Judge,sharedContext,config,JudgeSession,PaginatedListResponse} from '../lib/core-sdk'; import {CreateUserRequest,UpdateUserRequest,User} from './support/test-api/users'; import {Post} from './support/test-api/posts'; import {FilledSigningObject, SigningObject, Signable} from '../lib/core-sdk'; export class TestApiClient extends WebApiClient{ constructor(config: WebApiConfiguration){ super(config,""); } get users():UsersResource{ return new UsersResource(this.getPath()+"/users",this); } get posts():PostsResource{ return new PostsResource(this.getPath()+"/posts",this); } get contacts(): ContactsResource { return new ContactsResource(this.getPath() + '/contacts', this); } } function testAuthorizationTac(signingObject) { expect(signingObject.getPossibleAuthorizationTypes()[0]).toBe('TAC'); expect(signingObject.getPossibleAuthorizationTypes().length).toBe(1); expect(signingObject.canBeSignedWith('TAC')).toBe(true); } function testStateOpen(signingObject) { expect(signingObject.isDone()).toBe(false); expect(signingObject.isCanceled()).toBe(false); expect(signingObject.isOpen()).toBe(true); } function testStateDone(signingObject) { expect(signingObject.isDone()).toBe(true); expect(signingObject.isCanceled()).toBe(false); expect(signingObject.isOpen()).toBe(false); } describe('WebApi framework',function(){ var client : TestApiClient var judge : Judge var judgeSession : JudgeSession var originalTimeoutInterval = null; beforeAll(function(){ //Because Judge starts slowly on the first request originalTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000; }); afterAll(function(){ jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeoutInterval; }); beforeEach(function(){ useWebApiKey("TEST_API_KEY").useEnvironment(new Environment("http://csas-judge.herokuapp.com",null)); judge = new Judge(); judgeSession = judge.startNewSession(); client = new TestApiClient(config); }); it('tests FilledSigningObject methods', () => { var order = { userId: 1, id: 1, title: "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", body: "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto", signInfo: { "state": "OPEN", "signId": "1607878324" } } let filled = new FilledSigningObject({ authorizationType: "TAC", scenarios: [ [ "TAC", "CASE_MOBILE" ], [ "NO_AUTHORIZATION", "TAC" ] ], signInfo: { state: 'OPEN', signId: 'sakfljsalkjflaskjflsakjfdů' } }, client, 'some/url', null); expect(filled.canBeSignedWith('TAC')).toBe(true); expect(filled.canBeSignedWith('CASE_MOBILE')).toBe(true); expect(filled.canBeSignedWith('STUFF')).toBe(false); expect(filled.getPossibleAuthorizationTypes().length).toBe(3); }); it('signs immutable order', done => { var info; judgeSession.setNextCase('webapi.posts.create.signable.immutable').then(() => { return client.posts.create({ userId: 1, id: 1, title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', body: 'quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto' }); }).then(response => { testStateOpen(response.signing) info = response; return response.signing.getInfo(); }).then(response => { testAuthorizationTac(response); testAuthorizationTac(info.signing); return response.startSigningWithTac(); }).then(response => { testStateOpen(info.signing); return response.finishSigning('00000000'); }).then(response => { testStateDone(response); testStateDone(info.signing); done(); }).catch(e => { console.log(e); }); }); // it('fails to sign immutable order if you start signing with unavailable authorization type', done => { // var info; // judgeSession.setNextCase('webapi.posts.create.signable.immutable.authorizationType.invalid').then(() => { // return client.posts.create({ // userId: 1, // id: 1, // title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', // body: 'quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto' // }); // }).then(response => { // testStateOpen(response.signing) // info = response; // return response.signing.getInfo(); // }).then(response => { // testAuthorizationTac(response); // testAuthorizationTac(info.signing); // return response.startSigningWithCaseMobile(); // }).catch(e => { // expect(e.statusCode).toBe(400); // testStateOpen(info.signing); // done(); // }); // }); it('fails to sign immutable order if you send wrong password', done => { var info; judgeSession.setNextCase('webapi.posts.create.signable.immutable.OTP.invalid').then(() => { return client.posts.create({ userId: 1, id: 1, title: 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit', body: 'quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto' }); }).then(response => { testStateOpen(response.signing) info = response; return response.signing.getInfo(); }).then(response => { testAuthorizationTac(response); testAuthorizationTac(info.signing); return response.startSigningWithTac(); }).then(response => { return response.finishSigning('12345'); }).catch(e => { expect(e.statusCode).toBe(400); testStateOpen(info.signing); done(); }); }); it('signs manageable order', done => { var info; judgeSession.setNextCase('webapi.contacts.create.signable.manageable').then(() => { return client.contacts.personal.create({ name: 'John', phoneNumber: '732845987' }); }).then(response => { info = response; testStateOpen(response.signing); return response.signing.getInfo(); }).then(response => { testAuthorizationTac(response); testAuthorizationTac(info.signing); return response.startSigningWithTac(); }).then(response => { return response.finishSigning('00000000'); }).then(response => { testStateDone(response) testStateDone(info.signing); done(); }).catch(e => { console.log(e); }); }); // it('fails to sign manageable order if you start signing with unavailable authorization type', done => { // var info; // judgeSession.setNextCase('webapi.contacts.create.signable.manageable.authorizationType.invalid').then(() => { // return client.contacts.personal.create({ // name: 'John', // phoneNumber: '732845987' // }); // }).then(response => { // info = response; // testStateOpen(response.signing); // return response.signing.getInfo(); // }).then(response => { // testAuthorizationTac(response); // testAuthorizationTac(info.signing); // return response.startSigningWithCaseMobile(); // }).catch(e => { // expect(e.statusCode).toBe(400); // testStateOpen(info.signing); // done(); // }); // }); it('fails to sign manageable order if you send wrong password', done => { var info; judgeSession.setNextCase('webapi.contacts.create.signable.manageable.OTP.invalid').then(() => { return client.contacts.personal.create({ name: 'John', phoneNumber: '732845987' }); }).then(response => { info = response; testStateOpen(response.signing); return response.signing.getInfo(); }).then(response => { testAuthorizationTac(response); testAuthorizationTac(info.signing); return response.startSigningWithTac(); }).then(response => { return response.finishSigning('00000000'); }).catch(e => { expect(e.statusCode).toBe(400); testStateOpen(info.signing); done(); }); }); });