Public API for a society manager application

friends-ops-spec.js 3.9KB

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