[tor-commits] [snowflake/master] Test ProxyPair with ArrayBuffers, not strings.
dcf at torproject.org
dcf at torproject.org
Thu Dec 20 04:44:49 UTC 2018
commit 297ae7b1b8800f7c70d31da034ae3802c39273c9
Author: David Fifield <david at bamsoftware.com>
Date: Tue Dec 4 16:55:12 2018 -0700
Test ProxyPair with ArrayBuffers, not strings.
---
proxy/spec/proxypair.spec.coffee | 29 +++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/proxy/spec/proxypair.spec.coffee b/proxy/spec/proxypair.spec.coffee
index 4cbb38d..566c6f1 100644
--- a/proxy/spec/proxypair.spec.coffee
+++ b/proxy/spec/proxypair.spec.coffee
@@ -2,6 +2,25 @@
jasmine tests for Snowflake proxypair
###
+# Replacement for MessageEvent constructor.
+# https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent/MessageEvent
+MessageEvent = (type, init) ->
+ init
+
+# Asymmetic matcher that checks that two arrays have the same contents.
+arrayMatching = (sample) -> {
+ asymmetricMatch: (other) ->
+ a = new Uint8Array(sample)
+ b = new Uint8Array(other)
+ if a.length != b.length
+ return false
+ for _, i in a
+ if a[i] != b[i]
+ return false
+ true
+ jasmineToString: ->
+ '<arrayMatchine(' + jasmine.pp(sample) + ')>'
+}
describe 'ProxyPair', ->
fakeRelay = Parse.address '0.0.0.0:12345'
@@ -76,17 +95,19 @@ describe 'ProxyPair', ->
}
spyOn pp.client, 'send'
spyOn pp.relay, 'send'
- pp.c2rSchedule.push 'foo'
+ msg = new MessageEvent("message", { data: Uint8Array.from([1, 2, 3]).buffer })
+ pp.onClientToRelayMessage(msg)
pp.flush()
expect(pp.client.send).not.toHaveBeenCalled()
- expect(pp.relay.send).toHaveBeenCalledWith 'foo'
+ expect(pp.relay.send).toHaveBeenCalledWith arrayMatching([1, 2, 3])
it 'proxies data from relay to client', ->
spyOn pp.client, 'send'
spyOn pp.relay, 'send'
- pp.r2cSchedule.push 'bar'
+ msg = new MessageEvent("message", { data: Uint8Array.from([4, 5, 6]).buffer })
+ pp.onRelayToClientMessage(msg)
pp.flush()
- expect(pp.client.send).toHaveBeenCalledWith 'bar'
+ expect(pp.client.send).toHaveBeenCalledWith arrayMatching([4, 5, 6])
expect(pp.relay.send).not.toHaveBeenCalled()
it 'sends nothing with nothing to flush', ->
More information about the tor-commits
mailing list