UNPKG

5.66 kBJavaScriptView Raw
1var request = require('superagent');
2var assert = require('assert');
3var expect = require('expect.js');
4var uuid = require('uuid');
5var async = require('async');
6
7/*
8user one -> user two, user two accept, then user one delete
9user one -> user three, user one cancel
10user one -> user four, user four decline
11user two -> user three, user three accept, then user 2 block
12user three -> user four, user four accept, then user four delete
13*/
14
15describe('friends', function () {
16 this.timeout(50000);
17
18 var client1 = request.agent();
19 var client2 = request.agent();
20 var client3 = request.agent();
21 var client4 = request.agent();
22
23 var userTwoId;
24
25 var endpoint1 = 'http://127.0.0.1:3000/antisocial/';
26 var endpoint2 = 'http://127.0.0.1:3000/antisocial/';
27 var endpoint3 = 'http://127.0.0.1:3000/antisocial/';
28 var endpoint4 = 'http://127.0.0.1:3000/antisocial/';
29 var endpointBad = 'http://127.0.0.1:3000/antisocial/bad';
30
31 var app = require('../app');
32
33 before(function (done) {
34 app.start(3000);
35 done();
36 });
37
38 after(function () {
39 app.stop();
40 });
41
42 it('should be able to create account 1', function (done) {
43 client1.post('http://127.0.0.1:3000/register')
44 .type('form')
45 .send({
46 'name': 'user one',
47 'username': 'user-one'
48 })
49 .end(function (err, res) {
50 expect(err).to.be(null);
51 expect(res.status).to.equal(200);
52 var accessToken = getCookie(res.headers['set-cookie'], 'access_token');
53 expect(accessToken).to.be.a('string');
54 endpoint1 += res.body.result.username;
55 done();
56 });
57 });
58
59 it('should be able to create account 2', function (done) {
60 client2.post('http://127.0.0.1:3000/register')
61 .type('form')
62 .send({
63 'name': 'user two',
64 'username': 'user-two'
65 })
66 .end(function (err, res) {
67 expect(err).to.be(null);
68 expect(res.status).to.equal(200);
69 var accessToken = getCookie(res.headers['set-cookie'], 'access_token');
70 expect(accessToken).to.be.a('string');
71 endpoint2 += res.body.result.username;
72 userTwoId = res.body.result.id;
73 done();
74 });
75 });
76
77 it('should be able to create account 3', function (done) {
78 client3.post('http://127.0.0.1:3000/register')
79 .type('form')
80 .send({
81 'name': 'user three',
82 'username': 'user-three'
83 })
84 .end(function (err, res) {
85 expect(err).to.be(null);
86 expect(res.status).to.equal(200);
87 var accessToken = getCookie(res.headers['set-cookie'], 'access_token');
88 expect(accessToken).to.be.a('string');
89 endpoint3 += res.body.result.username;
90 done();
91 });
92 });
93
94 it('should be able to create account 4', function (done) {
95 client4.post('http://127.0.0.1:3000/register')
96 .type('form')
97 .send({
98 'name': 'user four',
99 'username': 'user-four'
100 })
101 .end(function (err, res) {
102 expect(err).to.be(null);
103 expect(res.status).to.equal(200);
104 var accessToken = getCookie(res.headers['set-cookie'], 'access_token');
105 expect(accessToken).to.be.a('string');
106 endpoint4 += res.body.result.username;
107 done();
108 });
109 });
110
111
112 it('create an invite', function (done) {
113 app.db.newInstance('invitations', {
114 'token': 'testinvite',
115 'userId': userTwoId
116 }, function (err, invite) {
117 expect(err).to.be(null);
118 done();
119 });
120 });
121
122 it('user1 should be able to request friend user2 again with invite', function (done) {
123 client1.get('http://127.0.0.1:3000/antisocial/user-one/request-friend?endpoint=' + encodeURIComponent(endpoint2) + '&invite=testinvite').end(function (err, res) {
124 expect(res.status).to.be(200);
125 expect(res.body.status).to.equal('ok');
126 done();
127 });
128 });
129
130 it('user1 should be able to connect to user2 socket.io activity feed', function (done) {
131 app.db.getInstances('users', [{
132 'property': 'username',
133 'value': 'user-one'
134 }], function (err, instances) {
135 var user = instances[0];
136 app.db.getInstances('friends', [{
137 'property': 'userId',
138 'value': user.id
139 }], function (err, instances) {
140 var friend = instances[0];
141 var subscribe = require('../lib/activity-feed-subscribe');
142 subscribe.connect(app.antisocial, user, friend);
143 setTimeout(function () {
144 done();
145 }, 5000);
146 });
147 });
148 });
149
150 /*
151 it('user1 should be able to connect to user2 socket.io activity feed', function (done) {
152 app.db.getInstances('users', [{
153 'property': 'username',
154 'value': 'user-one'
155 }], function (err, instances) {
156 var user = instances[0];
157 app.db.getInstances('friends', [{
158 'property': 'userId',
159 'value': user.id
160 }], function (err, instances) {
161 var friend = instances[0];
162 var endpoint = 'http://127.0.0.1:3000';
163 var socket = require('socket.io-client')(endpoint, {
164 'path': '/antisocial-activity'
165 });
166
167 socket.on('connect', function () {
168 console.log('client connected');
169 socket.on('authenticated', function () {
170 console.log('client authenticated');
171 socket.emit('data', {
172 'foo': 'bar'
173 });
174 done();
175 });
176 socket.on('unauthorized', function (err) {
177 console.log('client unauthorized', err.message);
178 done();
179 });
180
181 socket.emit('authentication', {
182 'username': friend.remoteUsername,
183 'friendAccessToken': friend.remoteAccessToken,
184 'friendHighWater': friend.highWater
185 });
186 });
187
188 socket.on('disconnect', function () {
189 console.log('client disconnect');
190 done();
191 });
192
193 socket.on('error', function () {
194 console.log('client error');
195 done();
196 });
197 });
198 });
199
200 });
201*/
202
203});
204
205function getCookie(headers, id) {
206 for (var i = 0; i < headers.length; i++) {
207 var kv = headers[i].split(';')[0].split('=');
208 if (kv[0] === id) {
209 return kv[1];
210 }
211 }
212 return null;
213}