mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
Lightly massage some of the generated JavaScript
This commit is contained in:
parent
31ad9566e6
commit
1867a3f121
19 changed files with 986 additions and 989 deletions
|
@ -1,17 +1,15 @@
|
|||
// Generated by CoffeeScript 2.4.1
|
||||
/*
|
||||
jasmine tests for Snowflake proxypair
|
||||
*/
|
||||
var MessageEvent, arrayMatching;
|
||||
|
||||
// Replacement for MessageEvent constructor.
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent/MessageEvent
|
||||
MessageEvent = function(type, init) {
|
||||
var MessageEvent = function(type, init) {
|
||||
return init;
|
||||
};
|
||||
|
||||
// Asymmetic matcher that checks that two arrays have the same contents.
|
||||
arrayMatching = function(sample) {
|
||||
var arrayMatching = function(sample) {
|
||||
return {
|
||||
asymmetricMatch: function(other) {
|
||||
var _, a, b, i, j, len;
|
||||
|
@ -35,46 +33,57 @@ arrayMatching = function(sample) {
|
|||
};
|
||||
|
||||
describe('ProxyPair', function() {
|
||||
|
||||
var config, destination, fakeRelay, pp, rateLimit;
|
||||
fakeRelay = Parse.address('0.0.0.0:12345');
|
||||
rateLimit = new DummyRateLimit;
|
||||
config = new Config;
|
||||
destination = [];
|
||||
|
||||
// Using the mock PeerConnection definition from spec/snowflake.spec.coffee.
|
||||
pp = new ProxyPair(fakeRelay, rateLimit, config.pcConfig);
|
||||
var pp = new ProxyPair(fakeRelay, rateLimit, config.pcConfig);
|
||||
|
||||
beforeEach(function() {
|
||||
return pp.begin();
|
||||
});
|
||||
|
||||
it('begins webrtc connection', function() {
|
||||
return expect(pp.pc).not.toBeNull();
|
||||
});
|
||||
|
||||
describe('accepts WebRTC offer from some client', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
return pp.begin();
|
||||
});
|
||||
|
||||
it('rejects invalid offers', function() {
|
||||
expect(typeof pp.pc.setRemoteDescription).toBe("function");
|
||||
expect(pp.pc).not.toBeNull();
|
||||
expect(pp.receiveWebRTCOffer({})).toBe(false);
|
||||
return expect(pp.receiveWebRTCOffer({
|
||||
expect(pp.receiveWebRTCOffer({
|
||||
type: 'answer'
|
||||
})).toBe(false);
|
||||
});
|
||||
return it('accepts valid offers', function() {
|
||||
|
||||
it('accepts valid offers', function() {
|
||||
expect(pp.pc).not.toBeNull();
|
||||
return expect(pp.receiveWebRTCOffer({
|
||||
expect(pp.receiveWebRTCOffer({
|
||||
type: 'offer',
|
||||
sdp: 'foo'
|
||||
})).toBe(true);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
it('responds with a WebRTC answer correctly', function() {
|
||||
spyOn(snowflake.broker, 'sendAnswer');
|
||||
pp.pc.onicecandidate({
|
||||
candidate: null
|
||||
});
|
||||
return expect(snowflake.broker.sendAnswer).toHaveBeenCalled();
|
||||
expect(snowflake.broker.sendAnswer).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('handles a new data channel correctly', function() {
|
||||
expect(pp.client).toBeNull();
|
||||
pp.pc.ondatachannel({
|
||||
|
@ -84,21 +93,25 @@ describe('ProxyPair', function() {
|
|||
expect(pp.client.onopen).not.toBeNull();
|
||||
expect(pp.client.onclose).not.toBeNull();
|
||||
expect(pp.client.onerror).not.toBeNull();
|
||||
return expect(pp.client.onmessage).not.toBeNull();
|
||||
expect(pp.client.onmessage).not.toBeNull();
|
||||
});
|
||||
|
||||
it('connects to the relay once datachannel opens', function() {
|
||||
spyOn(pp, 'connectRelay');
|
||||
pp.client.onopen();
|
||||
return expect(pp.connectRelay).toHaveBeenCalled();
|
||||
expect(pp.connectRelay).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('connects to a relay', function() {
|
||||
pp.connectRelay();
|
||||
expect(pp.relay.onopen).not.toBeNull();
|
||||
expect(pp.relay.onclose).not.toBeNull();
|
||||
expect(pp.relay.onerror).not.toBeNull();
|
||||
return expect(pp.relay.onmessage).not.toBeNull();
|
||||
expect(pp.relay.onmessage).not.toBeNull();
|
||||
});
|
||||
return describe('flushes data between client and relay', function() {
|
||||
|
||||
describe('flushes data between client and relay', function() {
|
||||
|
||||
it('proxies data from client to relay', function() {
|
||||
var msg;
|
||||
pp.pc.ondatachannel({
|
||||
|
@ -116,8 +129,9 @@ describe('ProxyPair', function() {
|
|||
pp.onClientToRelayMessage(msg);
|
||||
pp.flush();
|
||||
expect(pp.client.send).not.toHaveBeenCalled();
|
||||
return expect(pp.relay.send).toHaveBeenCalledWith(arrayMatching([1, 2, 3]));
|
||||
expect(pp.relay.send).toHaveBeenCalledWith(arrayMatching([1, 2, 3]));
|
||||
});
|
||||
|
||||
it('proxies data from relay to client', function() {
|
||||
var msg;
|
||||
spyOn(pp.client, 'send');
|
||||
|
@ -128,16 +142,19 @@ describe('ProxyPair', function() {
|
|||
pp.onRelayToClientMessage(msg);
|
||||
pp.flush();
|
||||
expect(pp.client.send).toHaveBeenCalledWith(arrayMatching([4, 5, 6]));
|
||||
return expect(pp.relay.send).not.toHaveBeenCalled();
|
||||
expect(pp.relay.send).not.toHaveBeenCalled();
|
||||
});
|
||||
return it('sends nothing with nothing to flush', function() {
|
||||
|
||||
it('sends nothing with nothing to flush', function() {
|
||||
spyOn(pp.client, 'send');
|
||||
spyOn(pp.relay, 'send');
|
||||
pp.flush();
|
||||
expect(pp.client.send).not.toHaveBeenCalled();
|
||||
return expect(pp.relay.send).not.toHaveBeenCalled();
|
||||
expect(pp.relay.send).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// TODO: rate limit tests
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue