Public API for a society manager application

user-ops-spec.js 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. var request = require("request");
  2. var base_url = "http://localhost:3000";
  3. describe("User Operations", function () {
  4. var register_user = function (username) {
  5. return {
  6. url: base_url + "/user/register/",
  7. method: "POST",
  8. json: {
  9. user: username,
  10. password: "foofoo"
  11. }
  12. };
  13. };
  14. var login_user = function (username, pass) {
  15. return {
  16. url: base_url + "/user/auth/",
  17. method: "POST",
  18. json: {
  19. user: username,
  20. password: pass
  21. }
  22. };
  23. };
  24. var user_ops_auth_key = "";
  25. describe("POST /user/register/", function () {
  26. it("can register user", function (done) {
  27. request(register_user("foo123"), function (error, response, body) {
  28. expect(response.statusCode).toBe(200);
  29. expect(body.registered).toBe(1);
  30. if (body["auth-key"]) {
  31. expect(body["auth-key"].length).toBe(60);
  32. }
  33. expect(body.error).toBe(0);
  34. done();
  35. });
  36. });
  37. request(register_user("foo456"), function(){});
  38. request(register_user("foo789"), function(){});
  39. it("cannot register the same user twice", function (done) {
  40. request(register_user("foo123"), function (error, response, body) {
  41. expect(response.statusCode).toBe(200);
  42. expect(body.registered).toBe(0);
  43. expect(body["auth-key"]).toBe(undefined);
  44. expect(body.error).toBe(1);
  45. done();
  46. });
  47. });
  48. it("cannot accept malformed requests", function (done) {
  49. request({
  50. url: base_url + "/user/register/",
  51. method: "POST",
  52. json: {
  53. usr: "foo123",
  54. password: "foofoo"
  55. }
  56. }, function (error, response, body) {
  57. expect(response.statusCode).toBe(200);
  58. expect(body.registered).toBe(0);
  59. expect(body["auth-key"]).toBe(undefined);
  60. expect(body.error).toBe(2);
  61. done();
  62. });
  63. });
  64. }); //end POST /user/register/
  65. describe("POST /user/auth/", function () {
  66. it("can login as an existing user", function (done) {
  67. request(login_user("foo123", "foofoo"), function (error, response, body) {
  68. expect(response.statusCode).toBe(200);
  69. expect(body.logged_in).toBe(1);
  70. expect(body["auth-key"].length).toBe(60);
  71. expect(body.error).toBe(0);
  72. done();
  73. });
  74. });
  75. it("cannot login with an incorrect password", function (done) {
  76. request(login_user("foo123", "foofo"), function (error, response, body) {
  77. expect(response.statusCode).toBe(200);
  78. expect(body.logged_in).toBe(0);
  79. expect(body["auth-key"]).toBe(undefined);
  80. expect(body.error).toBe(1);
  81. done();
  82. });
  83. });
  84. it("cannot login with an incorrect username", function (done) {
  85. request(login_user("foo1233", "foofoo"), function (error, response, body) {
  86. expect(response.statusCode).toBe(200);
  87. expect(body.logged_in).toBe(0);
  88. expect(body["auth-key"]).toBe(undefined);
  89. expect(body.error).toBe(1);
  90. done();
  91. });
  92. });
  93. it("cannot accept malformed requests", function (done) {
  94. request({
  95. url: base_url + "/user/auth/",
  96. method: "POST",
  97. json: {
  98. usr: "foo123",
  99. password: "foofoo"
  100. }
  101. }, function (error, response, body) {
  102. expect(response.statusCode).toBe(200);
  103. expect(body.logged_in).toBe(0);
  104. expect(body["auth-key"]).toBe(undefined);
  105. expect(body.error).toBe(2);
  106. done();
  107. });
  108. });
  109. }); //end POST /user/auth/
  110. describe("GET /user/view/:user", function () {
  111. it("gets an individual user that exists", function (done) {
  112. request(base_url + "/user/view/foo123", function (error, response, body) {
  113. body = JSON.parse(body);
  114. expect(response.statusCode).toBe(200);
  115. expect(body.user).not.toBe(null);
  116. expect(typeof body.user).toBe("object");
  117. expect(body.user.username).toBe("foo123");
  118. expect(Array.isArray(body.user.societies)).toBe(true);
  119. expect(Array.isArray(body.user.friends)).toBe(true);
  120. expect(Array.isArray(body.user.accepted_events)).toBe(true);
  121. expect(Array.isArray(body.user.declined_events)).toBe(true);
  122. expect(body.error).toBe(0);
  123. done();
  124. });
  125. });
  126. it("does not get users that do not exist", function (done) {
  127. request(base_url + "/user/view/foo1233", function (error, response, body) {
  128. body = JSON.parse(body);
  129. expect(response.statusCode).toBe(200);
  130. expect(Object.keys(body.user).length).toBe(0);
  131. expect(JSON.stringify(body.user)).toEqual(JSON.stringify({}));
  132. expect(body.error).toBe(1);
  133. done();
  134. });
  135. });
  136. it("gets all users in the system", function (done) {
  137. request(base_url + "/user/view/", function (error, response, body) {
  138. body = JSON.parse(body);
  139. expect(response.statusCode).toBe(200);
  140. expect(Array.isArray(body.users)).toBe(true);
  141. done();
  142. });
  143. });
  144. }); //end GET /user/view/:user
  145. }); //end user ops