You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			160 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			TypeScript
		
	
		
		
			
		
	
	
			160 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			TypeScript
		
	
| 
								 
											3 years ago
										 
									 | 
							
								// tslint:disable: no-implicit-dependencies max-func-body-length no-unused-expression
							 | 
						||
| 
								 | 
							
								import { expect } from 'chai';
							 | 
						||
| 
								 | 
							
								import Sinon from 'sinon';
							 | 
						||
| 
								 | 
							
								import { parseCapabilities } from '../../../../session/apis/open_group_api/sogsv3/sogsV3Capabilities';
							 | 
						||
| 
								 | 
							
								import { getCapabilitiesFromBatch } from '../../../../session/apis/open_group_api/sogsv3/sogsCapabilities';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// tslint:disable: chai-vague-errors
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('FetchCapabilities', () => {
							 | 
						||
| 
								 | 
							
								  afterEach(() => {
							 | 
						||
| 
								 | 
							
								    Sinon.restore();
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  describe('parseCapabilities', () => {
							 | 
						||
| 
								 | 
							
								    it('return null if null is given as body', () => {
							 | 
						||
| 
								 | 
							
								      expect(parseCapabilities(null)).to.be.eq(null);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('return null if undefined is given as body', () => {
							 | 
						||
| 
								 | 
							
								      expect(parseCapabilities(undefined)).to.be.eq(null);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('return [] if given empty array valid', () => {
							 | 
						||
| 
								 | 
							
								      expect(parseCapabilities({ capabilities: [] })).to.be.deep.eq([]);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('return null if given null array ', () => {
							 | 
						||
| 
								 | 
							
								      expect(parseCapabilities({ capabilities: null })).to.be.deep.eq(null);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('return null if given string instead of object  ', () => {
							 | 
						||
| 
								 | 
							
								      expect(parseCapabilities('')).to.be.deep.eq(null);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('return null if given object without cap field  ', () => {
							 | 
						||
| 
								 | 
							
								      expect(parseCapabilities({ plop: [] })).to.be.deep.eq(null);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('return valid if given one cap ', () => {
							 | 
						||
| 
								 | 
							
								      expect(parseCapabilities({ capabilities: ['sogs'] })).to.be.deep.eq(['sogs']);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('return valid if given two caps ', () => {
							 | 
						||
| 
								 | 
							
								      expect(parseCapabilities({ capabilities: ['blind', 'sogs'] })).to.be.deep.eq([
							 | 
						||
| 
								 | 
							
								        'blind',
							 | 
						||
| 
								 | 
							
								        'sogs',
							 | 
						||
| 
								 | 
							
								      ]);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('return valid if given two caps, sorted ', () => {
							 | 
						||
| 
								 | 
							
								      expect(
							 | 
						||
| 
								 | 
							
								        parseCapabilities({
							 | 
						||
| 
								 | 
							
								          capabilities: ['sogs', 'blind'],
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								      ).to.be.deep.eq(['blind', 'sogs']);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  describe('getCapabilitiesFromBatch', () => {
							 | 
						||
| 
								 | 
							
								    it('finds single capability in single array of results', () => {
							 | 
						||
| 
								 | 
							
								      const caps = getCapabilitiesFromBatch(
							 | 
						||
| 
								 | 
							
								        [{ type: 'capabilities' }],
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            body: {
							 | 
						||
| 
								 | 
							
								              capabilities: ['sogs'],
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								      expect(caps).to.deep.eq(['sogs']);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('finds few capabilities (sorted) in single array of results', () => {
							 | 
						||
| 
								 | 
							
								      const caps = getCapabilitiesFromBatch(
							 | 
						||
| 
								 | 
							
								        [{ type: 'capabilities' }],
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            body: {
							 | 
						||
| 
								 | 
							
								              capabilities: ['sogs', 'blinded'],
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								      expect(caps).to.deep.eq(['blinded', 'sogs']);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('finds few capabilities (sorted) in multi array of results', () => {
							 | 
						||
| 
								 | 
							
								      const caps = getCapabilitiesFromBatch(
							 | 
						||
| 
								 | 
							
								        [{ type: 'pollInfo', pollInfo: { roomId: 'roomId' } }, { type: 'capabilities' }],
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            body: {
							 | 
						||
| 
								 | 
							
								              whatever: [],
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            body: {
							 | 
						||
| 
								 | 
							
								              capabilities: ['sogs', 'blinded'],
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								      expect(caps).to.deep.eq(['blinded', 'sogs']);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('does not find capabilities  in multi array of results not correctly sorted', () => {
							 | 
						||
| 
								 | 
							
								      const caps = getCapabilitiesFromBatch(
							 | 
						||
| 
								 | 
							
								        [{ type: 'pollInfo', pollInfo: { roomId: 'roomId' } }, { type: 'capabilities' }],
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            body: {
							 | 
						||
| 
								 | 
							
								              capabilities: ['sogs', 'blinded'],
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            body: {
							 | 
						||
| 
								 | 
							
								              whatever: [],
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								      expect(caps).to.deep.eq(null);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('does not crash if there is no such index', () => {
							 | 
						||
| 
								 | 
							
								      const caps = getCapabilitiesFromBatch(
							 | 
						||
| 
								 | 
							
								        [{ type: 'pollInfo', pollInfo: { roomId: 'roomId' } }, { type: 'capabilities' }], // index is 1 -0 based
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            body: {
							 | 
						||
| 
								 | 
							
								              whatever: [],
							 | 
						||
| 
								 | 
							
								            }, // there is no index 1, just 0
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								      expect(caps).to.deep.eq(null);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('does not find capabilities when no capabilities subrequest', () => {
							 | 
						||
| 
								 | 
							
								      const caps = getCapabilitiesFromBatch(
							 | 
						||
| 
								 | 
							
								        [{ type: 'pollInfo', pollInfo: { roomId: 'roomId' } }],
							 | 
						||
| 
								 | 
							
								        [
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            body: {
							 | 
						||
| 
								 | 
							
								              capabilities: ['sogs', 'blinded'],
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            body: {
							 | 
						||
| 
								 | 
							
								              whatever: [],
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								      expect(caps).to.deep.eq(null);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 |