Example #1
0
    it('should respond with an event stream', function(done) {
      var es = new EventSource(this.url + '/StreamClass/createStream');
      var testData = this.data;
      var result = [];

      es.on('data', function(e) {
        result.push(JSON.parse(e.data));
      });

      es.on('end', function() {
        expect(testData).to.eql(result);
        done();
      });
    });
Example #2
0
        function(done) {
          const es = new EventSource(this.url + '/StreamClass/createInfiniteStream');

          es.on('data', function(e) {
            es.close();
            process.nextTick(done);
          });
        });
Example #3
0
        function(done) {
          const es = new EventSource(this.url + '/StreamClass/createInfiniteStream');

          es.on('data', function(e) {
            es.close();
            streamClosed.then(() => done());
          });
        });
Example #4
0
    it('should respond with an event stream with errors', function(done) {
      var es = new EventSource(this.url + '/StreamClass/createStreamWithError');

      es.on('error', function(e) {
        var err;
        if (e && e.data) {
          err = JSON.parse(e.data);
        } else {
          return done(new Error('no error data!'));
        }
        expect(err.message).to.equal('test error');
        done();
      });
    });
  it('Create', () => co(function * () {
    let server = yield apemanApi({
      port,
      configuration: {
        $api: {
          pingPong: {
            ping () {
              return 'pong'
            }
          },
          $serverMiddlewares: [
            create('/sse/bomb', (client) => co(function * () {
              let count = 10
              while (count >= 0) {
                client.send('tick', JSON.stringify(count))
                yield asleep(100)
                count--
              }
              client.send('boom!')
            }), { keep: false })
          ],
          $pathname: '/api/rpc'
        }
      }

    })
    assert(server)

    let client = apemanApiClient(`${baseUrl}/api/rpc`)
    assert.ok(client)

    {
      let pingPong = yield client.connect('pingPong')
      let pong = yield pingPong.ping()
      assert.equal(pong, 'pong')
    }

    yield asleep(300)

    let eventSource = new EventSource(`${baseUrl}/sse/bomb`)
    eventSource.on('tick', (event) => {
      let { data } = event
      console.log('tick', data)
    })

    yield asleep(500)

    yield server.close()
  }))