Public API for a society manager application

friends-ops-spec.js 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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("reject malformed requests", function (done) {
  68. request({
  69. url: base_url + "/friends/add/",
  70. method: "POST",
  71. json: {
  72. yeah: "no"
  73. }
  74. }, function (error, response, body) {
  75. expect(response.statusCode).toBe(200);
  76. expect(body.success).toBe(0);
  77. expect(body.error).toBe(4);
  78. done();
  79. });
  80. });
  81. });
  82. describe("POST /friends/remove/", function () {
  83. it("can remove friends", function (done) {
  84. request(friend(false, "foo456", foo123auth), function (error, response, body) {
  85. expect(response.statusCode).toBe(200);
  86. expect(body.success).toBe(1);
  87. expect(body.error).toBe(0);
  88. done();
  89. });
  90. });
  91. it("rejects invalid auth keys", function (done) {
  92. request(friend(false, "foo456", "nah"), function (error, response, body) {
  93. expect(response.statusCode).toBe(200);
  94. expect(body.success).toBe(0);
  95. expect(body.error).toBe(1);
  96. done();
  97. });
  98. });
  99. it("cannot remove users who aren't friends", function (done) {
  100. request(friend(false, "foo", foo123auth), function (error, response, body) {
  101. expect(response.statusCode).toBe(200);
  102. expect(body.success).toBe(0);
  103. expect(body.error).toBe(2);
  104. done();
  105. });
  106. });
  107. it("reject malformed requests", function (done) {
  108. request({
  109. url: base_url + "/friends/remove/",
  110. method: "POST",
  111. json: {
  112. yeah: "no"
  113. }
  114. }, function (error, response, body) {
  115. expect(response.statusCode).toBe(200);
  116. expect(body.success).toBe(0);
  117. expect(body.error).toBe(3);
  118. done();
  119. });
  120. });
  121. });
  122. });