Public API for a society manager application

friends-ops-spec.js 4.0KB

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