Add test for duplicate message suppression. Fix totally broken subscribe by key code.
This commit is contained in:
4
api.py
4
api.py
@@ -77,9 +77,9 @@ def Subscribe(google_user, client, args):
|
||||
'events': models.Subscription.FindOrCreate(subject, client, messages),
|
||||
}
|
||||
for key in keys:
|
||||
message = models.Subject.GetKey(key)
|
||||
message = subject.GetKey(key)
|
||||
if message:
|
||||
ret['events'].append(message)
|
||||
ret['events'].append(message.ToEvent())
|
||||
return ret
|
||||
|
||||
|
||||
|
||||
@@ -199,6 +199,38 @@ asyncTest('subscribe/unsubscribe Promise', function() {
|
||||
});
|
||||
});
|
||||
|
||||
asyncTest('Duplicate message suppression', function() {
|
||||
expect(3);
|
||||
|
||||
var subject = randstring();
|
||||
var key = randstring();
|
||||
var message1 = randstring();
|
||||
var message2 = randstring();
|
||||
|
||||
var callbacks = {
|
||||
'onMessage': function (msg) {
|
||||
equal(msg['subject'], subject, 'subject matches');
|
||||
equal(msg['key'], key, 'key matches');
|
||||
equal(msg['message'], message1, 'message matches');
|
||||
cosmo.shutdown();
|
||||
start();
|
||||
},
|
||||
};
|
||||
|
||||
var cosmo = new Cosmopolite(callbacks, null, randstring());
|
||||
// Break cosmo's UUID generator so that it generates duplicate values.
|
||||
cosmo.uuid_ = function() {
|
||||
return '4';
|
||||
// chosen by fair dice roll.
|
||||
// guaranteed to be random.
|
||||
};
|
||||
cosmo.sendMessage(subject, message1, key).then(function() {
|
||||
cosmo.sendMessage(subject, message2, key).then(function() {
|
||||
cosmo.subscribe(subject, 0, [key]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
module('dev_appserver only');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user