소스 검색

Add unit tests for event operations and friend operations

Matt Coles 9 년 전
부모
커밋
775a2ffe2a
3개의 변경된 파일633개의 추가작업 그리고 1개의 파일을 삭제
  1. 495 0
      spec/events-ops-spec.js
  2. 135 0
      spec/friends-ops-spec.js
  3. 3 1
      spec/support/jasmine.json

+ 495 - 0
spec/events-ops-spec.js

@@ -0,0 +1,495 @@
1
+var request = require("request");
2
+var base_url = "http://localhost:3000";
3
+
4
+describe("Events Operations", function () {
5
+
6
+  var event_create = function (auth_key, time) {
7
+    var mydate = Date.now() + 1000000;
8
+    if (time) {
9
+      mydate = 10;
10
+    }
11
+    return {
12
+      url: base_url + "/events/create",
13
+      method: "POST",
14
+      json: {
15
+        society: "foo123soc",
16
+        name: "event",
17
+        location: "location",
18
+        start: mydate,
19
+        end: mydate+10,
20
+        details: "some details",
21
+        auth: auth_key
22
+      }
23
+    }
24
+  };
25
+
26
+  var auth_user = function (username) {
27
+    return {
28
+      url: base_url + "/user/auth/",
29
+      method: "POST",
30
+      json: {
31
+        user: username,
32
+        password: "foofoo"
33
+      }
34
+    };
35
+  };
36
+
37
+  var join_soc = function (soc_name, auth_key) {
38
+    return {
39
+      url: base_url + "/society/join/",
40
+      method: "POST",
41
+      json: {
42
+        society: soc_name,
43
+        auth: auth_key
44
+      }
45
+    };
46
+  };
47
+
48
+  var foo123auth;
49
+  var foo789auth;
50
+  var event_id;
51
+
52
+  describe("POST /events/create/", function () {
53
+    it("can create an event", function (done) {
54
+      request(auth_user("foo123"), function (error, response, body) {
55
+        foo123auth = body["auth-key"];
56
+        request(event_create(foo123auth), function (error, response, body) {
57
+          event_id = body.event.id;
58
+          expect(response.statusCode).toBe(200);
59
+          expect(body.success).toBe(1);
60
+          expect(typeof body.event.name).toBe("string");
61
+          expect(body.error).toBe(0);
62
+          done();
63
+        });
64
+      });
65
+    });
66
+
67
+    it("fails to create if user is not an admin", function (done) {
68
+      request(auth_user("foo789"), function (error, response, body) {
69
+        foo789auth = body["auth-key"];
70
+        request(join_soc("foo123soc", foo789auth), function (error, response, body) {
71
+          request(event_create(foo789auth), function (error, response, body) {
72
+            expect(response.statusCode).toBe(200);
73
+            expect(body.success).toBe(0);
74
+            expect(typeof body.event).toBe("undefined");
75
+            expect(body.error).toBe(1);
76
+            done();
77
+          });
78
+        })
79
+      });
80
+    });
81
+
82
+    it("fails to create if times are invalid", function (done) {
83
+      request(event_create(foo123auth, true), function (error, response, body) {
84
+        expect(response.statusCode).toBe(200);
85
+        expect(body.success).toBe(0);
86
+        expect(typeof body.event).toBe("undefined");
87
+        expect(body.error).toBe(2);
88
+        done();
89
+      });
90
+    });
91
+
92
+    it("rejects malformed requests", function (done) {
93
+      request({
94
+        url: base_url + "/events/create/",
95
+        method: "POST",
96
+        json: {
97
+          yeah: "no"
98
+        }
99
+      }, function (error, response, body) {
100
+        expect(response.statusCode).toBe(200);
101
+        expect(body.success).toBe(0);
102
+        expect(typeof body.event).toBe("undefined");
103
+        expect(body.error).toBe(3);
104
+        done();
105
+      });
106
+    });
107
+  }); //end POST /events/create/
108
+
109
+  describe("GET /events/view/:eventid", function () {
110
+    it("can view an event", function (done) {
111
+      request({
112
+        url: base_url + "/events/view/" + event_id,
113
+        method: "GET",
114
+        qs: {
115
+          auth: foo123auth
116
+        }
117
+      }, function (error, response, body) {
118
+        body = JSON.parse(body);
119
+        expect(response.statusCode).toBe(200);
120
+        expect(typeof body.event.name).toBe("string");
121
+        expect(body.error).toBe(0);
122
+        done();
123
+      });
124
+    });
125
+
126
+    it("does not show non existant events", function (done) {
127
+      request({
128
+        url: base_url + "/events/view/nah",
129
+        method: "GET",
130
+        qs: {
131
+          auth: foo123auth
132
+        }
133
+      }, function (error, response, body) {
134
+        body = JSON.parse(body);
135
+        expect(response.statusCode).toBe(200);
136
+        expect(body.event).not.toBe(null);
137
+        expect(JSON.stringify(body.event)).toEqual(JSON.stringify({}));
138
+        expect(body.error).toBe(1);
139
+        done();
140
+      });
141
+    });
142
+
143
+    it("rejects malformed request", function (done) {
144
+      request({
145
+        url: base_url + "/events/view/nah",
146
+        method: "GET",
147
+      }, function (error, response, body) {
148
+        body = JSON.parse(body);
149
+        expect(response.statusCode).toBe(200);
150
+        expect(body.event).not.toBe(null);
151
+        expect(JSON.stringify(body.event)).toEqual(JSON.stringify({}));
152
+        expect(body.error).toBe(2);
153
+        done();
154
+      });
155
+    });
156
+  });
157
+
158
+  describe("GET /events/pending/", function () {
159
+    it("can view pending events", function (done) {
160
+      request({
161
+        url: base_url + "/events/pending/",
162
+        method: "GET",
163
+        qs: {
164
+          auth: foo123auth
165
+        }
166
+      }, function (error, response, body) {
167
+        body = JSON.parse(body);
168
+        expect(response.statusCode).toBe(200);
169
+        expect(Array.isArray(body.pending_events)).toBe(true);
170
+        expect(body.pending_events.length).toBe(1);
171
+        expect(body.error).toBe(0);
172
+        done();
173
+      });
174
+    });
175
+
176
+    it("rejects invalid auth keys", function (done) {
177
+      request({
178
+        url: base_url + "/events/pending/",
179
+        method: "GET",
180
+        qs: {
181
+          auth: "nah"
182
+        }
183
+      }, function (error, response, body) {
184
+        body = JSON.parse(body);
185
+        expect(response.statusCode).toBe(200);
186
+        expect(Array.isArray(body.pending_events)).toBe(true);
187
+        expect(body.pending_events.length).toBe(0);
188
+        expect(body.error).toBe(1);
189
+        done();
190
+      });
191
+    });
192
+
193
+    it("rejects malformed request", function (done) {
194
+      request({
195
+        url: base_url + "/events/pending/",
196
+        method: "GET",
197
+      }, function (error, response, body) {
198
+        body = JSON.parse(body);
199
+        expect(response.statusCode).toBe(200);
200
+        expect(Array.isArray(body.pending_events)).toBe(true);
201
+        expect(body.pending_events.length).toBe(0);
202
+        expect(body.error).toBe(2);
203
+        done();
204
+      });
205
+    });
206
+  });
207
+
208
+  describe("POST /events/accept/:eventid", function () {
209
+    it("can accept events", function (done) {
210
+      request({
211
+        url: base_url + "/events/accept/" + event_id,
212
+        method: "POST",
213
+        json: {
214
+          auth: foo123auth
215
+        }
216
+      }, function (error, response, body) {
217
+        expect(response.statusCode).toBe(200);
218
+        expect(body.success).toBe(1);
219
+        expect(body.error).toBe(0);
220
+        done();
221
+      });
222
+    });
223
+
224
+    it("rejects non existant events", function (done) {
225
+      request({
226
+        url: base_url + "/events/accept/nah",
227
+        method: "POST",
228
+        json: {
229
+          auth: foo123auth
230
+        }
231
+      }, function (error, response, body) {
232
+        expect(response.statusCode).toBe(200);
233
+        expect(body.success).toBe(0);
234
+        expect(body.error).toBe(2);
235
+        done();
236
+      });
237
+    });
238
+
239
+    it("rejects invalid auth key", function (done) {
240
+      request({
241
+        url: base_url + "/events/accept/" + event_id,
242
+        method: "POST",
243
+        json: {
244
+          auth: "nah"
245
+        }
246
+      }, function (error, response, body) {
247
+        expect(response.statusCode).toBe(200);
248
+        expect(body.success).toBe(0);
249
+        expect(body.error).toBe(1);
250
+        done();
251
+      });
252
+    });
253
+
254
+    it("rejects malformed requests", function (done) {
255
+      request({
256
+        url: base_url + "/events/accept/" + event_id,
257
+        method: "POST",
258
+        json: {
259
+          auuth: foo123auth
260
+        }
261
+      }, function (error, response, body) {
262
+        expect(response.statusCode).toBe(200);
263
+        expect(body.success).toBe(0);
264
+        expect(body.error).toBe(3);
265
+        done();
266
+      });
267
+    });
268
+  });
269
+
270
+  describe("GET /events/accepted/", function () {
271
+    it("can view accepted events", function (done) {
272
+      request({
273
+        url: base_url + "/events/accepted/",
274
+        method: "GET",
275
+        qs: {
276
+          auth: foo123auth
277
+        }
278
+      }, function (error, response, body) {
279
+        body = JSON.parse(body);
280
+        expect(response.statusCode).toBe(200);
281
+        expect(Array.isArray(body.accepted_events)).toBe(true);
282
+        expect(body.accepted_events.length).toBe(1);
283
+        expect(body.error).toBe(0);
284
+        done();
285
+      });
286
+    });
287
+
288
+    it("rejects invalid auth keys", function (done) {
289
+      request({
290
+        url: base_url + "/events/accepted/",
291
+        method: "GET",
292
+        qs: {
293
+          auth: "nah"
294
+        }
295
+      }, function (error, response, body) {
296
+        body = JSON.parse(body);
297
+        expect(response.statusCode).toBe(200);
298
+        expect(Array.isArray(body.accepted_events)).toBe(true);
299
+        expect(body.accepted_events.length).toBe(0);
300
+        expect(body.error).toBe(1);
301
+        done();
302
+      });
303
+    });
304
+
305
+    it("rejects malformed request", function (done) {
306
+      request({
307
+        url: base_url + "/events/accepted/",
308
+        method: "GET",
309
+      }, function (error, response, body) {
310
+        body = JSON.parse(body);
311
+        expect(response.statusCode).toBe(200);
312
+        expect(Array.isArray(body.accepted_events)).toBe(true);
313
+        expect(body.accepted_events.length).toBe(0);
314
+        expect(body.error).toBe(2);
315
+        done();
316
+      });
317
+    });
318
+  });
319
+
320
+  describe("POST /events/decline/:eventid", function () {
321
+    it("can decline events", function (done) {
322
+      request({
323
+        url: base_url + "/events/decline/" + event_id,
324
+        method: "POST",
325
+        json: {
326
+          auth: foo123auth
327
+        }
328
+      }, function (error, response, body) {
329
+        expect(response.statusCode).toBe(200);
330
+        expect(body.success).toBe(1);
331
+        expect(body.error).toBe(0);
332
+        done();
333
+      });
334
+    });
335
+
336
+    it("rejects non existant events", function (done) {
337
+      request({
338
+        url: base_url + "/events/decline/nah",
339
+        method: "POST",
340
+        json: {
341
+          auth: foo123auth
342
+        }
343
+      }, function (error, response, body) {
344
+        expect(response.statusCode).toBe(200);
345
+        expect(body.success).toBe(0);
346
+        expect(body.error).toBe(2);
347
+        done();
348
+      });
349
+    });
350
+
351
+    it("rejects invalid auth key", function (done) {
352
+      request({
353
+        url: base_url + "/events/decline/" + event_id,
354
+        method: "POST",
355
+        json: {
356
+          auth: "nah"
357
+        }
358
+      }, function (error, response, body) {
359
+        expect(response.statusCode).toBe(200);
360
+        expect(body.success).toBe(0);
361
+        expect(body.error).toBe(1);
362
+        done();
363
+      });
364
+    });
365
+
366
+    it("rejects malformed requests", function (done) {
367
+      request({
368
+        url: base_url + "/events/decline/" + event_id,
369
+        method: "POST",
370
+        json: {
371
+          auuth: foo123auth
372
+        }
373
+      }, function (error, response, body) {
374
+        expect(response.statusCode).toBe(200);
375
+        expect(body.success).toBe(0);
376
+        expect(body.error).toBe(3);
377
+        done();
378
+      });
379
+    });
380
+  });
381
+
382
+  describe("GET /events/declined/", function () {
383
+    it("can view declined events", function (done) {
384
+      request({
385
+        url: base_url + "/events/declined/",
386
+        method: "GET",
387
+        qs: {
388
+          auth: foo123auth
389
+        }
390
+      }, function (error, response, body) {
391
+        body = JSON.parse(body);
392
+        expect(response.statusCode).toBe(200);
393
+        expect(Array.isArray(body.declined_events)).toBe(true);
394
+        expect(body.declined_events.length).toBe(1);
395
+        expect(body.error).toBe(0);
396
+        done();
397
+      });
398
+    });
399
+
400
+    it("rejects invalid auth keys", function (done) {
401
+      request({
402
+        url: base_url + "/events/declined/",
403
+        method: "GET",
404
+        qs: {
405
+          auth: "nah"
406
+        }
407
+      }, function (error, response, body) {
408
+        body = JSON.parse(body);
409
+        expect(response.statusCode).toBe(200);
410
+        expect(Array.isArray(body.declined_events)).toBe(true);
411
+        expect(body.declined_events.length).toBe(0);
412
+        expect(body.error).toBe(1);
413
+        done();
414
+      });
415
+    });
416
+
417
+    it("rejects malformed request", function (done) {
418
+      request({
419
+        url: base_url + "/events/declined/",
420
+        method: "GET",
421
+      }, function (error, response, body) {
422
+        body = JSON.parse(body);
423
+        expect(response.statusCode).toBe(200);
424
+        expect(Array.isArray(body.declined_events)).toBe(true);
425
+        expect(body.declined_events.length).toBe(0);
426
+        expect(body.error).toBe(2);
427
+        done();
428
+      });
429
+    });
430
+  });
431
+
432
+  describe("POST /events/cancel/:eventid", function () {
433
+    it("rejects invalid auth key", function (done) {
434
+      request(join_soc("foo123soc", foo789auth), function (error, response, body) {
435
+        request({
436
+          url: base_url + "/events/cancel/" + event_id,
437
+          method: "POST",
438
+          json: {
439
+            auth: foo789auth
440
+          }
441
+        }, function (error, response, body) {
442
+          expect(response.statusCode).toBe(200);
443
+          expect(body.success).toBe(0);
444
+          expect(body.error).toBe(1);
445
+          done();
446
+        });
447
+      });
448
+    });
449
+
450
+    it("can cancel events", function (done) {
451
+      request({
452
+        url: base_url + "/events/cancel/" + event_id,
453
+        method: "POST",
454
+        json: {
455
+          auth: foo123auth
456
+        }
457
+      }, function (error, response, body) {
458
+        expect(response.statusCode).toBe(200);
459
+        expect(body.success).toBe(1);
460
+        expect(body.error).toBe(0);
461
+        done();
462
+      });
463
+    });
464
+
465
+    it("rejects non existant events", function (done) {
466
+      request({
467
+        url: base_url + "/events/cancel/nah/",
468
+        method: "POST",
469
+        json: {
470
+          auth: foo123auth
471
+        }
472
+      }, function (error, response, body) {
473
+        expect(response.statusCode).toBe(200);
474
+        expect(body.success).toBe(0);
475
+        expect(body.error).toBe(2);
476
+        done();
477
+      });
478
+    });
479
+
480
+    it("rejects malformed requests", function (done) {
481
+      request({
482
+        url: base_url + "/events/cancel/" + event_id,
483
+        method: "POST",
484
+        json: {
485
+          auuth: foo123auth
486
+        }
487
+      }, function (error, response, body) {
488
+        expect(response.statusCode).toBe(200);
489
+        expect(body.success).toBe(0);
490
+        expect(body.error).toBe(3);
491
+        done();
492
+      });
493
+    });
494
+  });
495
+});

+ 135 - 0
spec/friends-ops-spec.js

@@ -0,0 +1,135 @@
1
+var request = require("request");
2
+var base_url = "http://localhost:3000";
3
+
4
+describe("Friends Operations", function () {
5
+
6
+  var auth_user = function (username) {
7
+    return {
8
+      url: base_url + "/user/auth/",
9
+      method: "POST",
10
+      json: {
11
+        user: username,
12
+        password: "foofoo"
13
+      }
14
+    };
15
+  };
16
+
17
+  var friend = function (add, friendr, auth_key) {
18
+    var the_url = base_url + "/friends/";
19
+    if (add) {
20
+      the_url += "add/";
21
+    } else {
22
+      the_url += "remove/";
23
+    }
24
+    return {
25
+      url: the_url,
26
+      method: "POST",
27
+      json: {
28
+        friend: friendr,
29
+        auth: auth_key
30
+      }
31
+    };
32
+  };
33
+
34
+  var foo123auth;
35
+
36
+  describe("POST /friends/add/", function () {
37
+    it("can add friends", function (done) {
38
+      request(auth_user("foo123"), function (error, response, body) {
39
+        foo123auth = body["auth-key"];
40
+        request(friend(true, "foo456", foo123auth), function (error, response, body) {
41
+          expect(response.statusCode).toBe(200);
42
+          expect(body.success).toBe(1);
43
+          expect(body.error).toBe(0);
44
+          done();
45
+        });
46
+      });
47
+    });
48
+
49
+    it("rejects invalid auth codes", function (done) {
50
+      request(friend(true, "foo456", "nah"), function (error, response, body) {
51
+        expect(response.statusCode).toBe(200);
52
+        expect(body.success).toBe(0);
53
+        expect(body.error).toBe(1);
54
+        done();
55
+      });
56
+    });
57
+
58
+    it("cannot add friends twice", function (done) {
59
+      request(friend(true, "foo456", foo123auth), function (error, response, body) {
60
+        expect(response.statusCode).toBe(200);
61
+        expect(body.success).toBe(0);
62
+        expect(body.error).toBe(2);
63
+        done();
64
+      });
65
+    });
66
+
67
+    it("rejects non-existant friends", function (done) {
68
+      request(friend(true, "foo4", foo123auth), function (error, response, body) {
69
+        expect(response.statusCode).toBe(200);
70
+        expect(body.success).toBe(0);
71
+        expect(body.error).toBe(3);
72
+        done();
73
+      });
74
+    });
75
+
76
+    it("reject malformed requests", function (done) {
77
+      request({
78
+        url: base_url + "/friends/add/",
79
+        method: "POST",
80
+        json: {
81
+          yeah: "no"
82
+        }
83
+      }, function (error, response, body) {
84
+        expect(response.statusCode).toBe(200);
85
+        expect(body.success).toBe(0);
86
+        expect(body.error).toBe(4);
87
+        done();
88
+      });
89
+    });
90
+  });
91
+
92
+  describe("POST /friends/remove/", function () {
93
+    it("can remove friends", function (done) {
94
+      request(friend(false, "foo456", foo123auth), function (error, response, body) {
95
+        expect(response.statusCode).toBe(200);
96
+        expect(body.success).toBe(1);
97
+        expect(body.error).toBe(0);
98
+        done();
99
+      });
100
+    });
101
+
102
+    it("rejects invalid auth keys", function (done) {
103
+      request(friend(false, "foo456", "nah"), function (error, response, body) {
104
+        expect(response.statusCode).toBe(200);
105
+        expect(body.success).toBe(0);
106
+        expect(body.error).toBe(1);
107
+        done();
108
+      });
109
+    });
110
+
111
+    it("cannot remove users who aren't friends", function (done) {
112
+      request(friend(false, "foo", foo123auth), function (error, response, body) {
113
+        expect(response.statusCode).toBe(200);
114
+        expect(body.success).toBe(0);
115
+        expect(body.error).toBe(2);
116
+        done();
117
+      });
118
+    });
119
+
120
+    it("reject malformed requests", function (done) {
121
+      request({
122
+        url: base_url + "/friends/remove/",
123
+        method: "POST",
124
+        json: {
125
+          yeah: "no"
126
+        }
127
+      }, function (error, response, body) {
128
+        expect(response.statusCode).toBe(200);
129
+        expect(body.success).toBe(0);
130
+        expect(body.error).toBe(3);
131
+        done();
132
+      });
133
+    });
134
+  });
135
+});

+ 3 - 1
spec/support/jasmine.json

@@ -3,6 +3,8 @@
3 3
     "spec_files": [
4 4
         "misc-ops-spec.js",
5 5
         "user-ops-spec.js",
6
-        "society-ops-spec.js"
6
+        "society-ops-spec.js",
7
+        "events-ops-spec.js",
8
+        "friends-ops-spec.js"
7 9
     ]
8 10
 }