Public API for a society manager application

user-ops-spec.js 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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. it("cannot register the same user twice", function (done) {
  38. request(register_user("foo123"), function (error, response, body) {
  39. expect(response.statusCode).toBe(200);
  40. expect(body.registered).toBe(0);
  41. expect(body["auth-key"]).toBe(undefined);
  42. expect(body.error).toBe(1);
  43. done();
  44. });
  45. });
  46. it("cannot accept malformed requests", function (done) {
  47. request({
  48. url: base_url + "/user/register/",
  49. method: "POST",
  50. json: {
  51. usr: "foo123",
  52. password: "foofoo"
  53. }
  54. }, function (error, response, body) {
  55. expect(response.statusCode).toBe(200);
  56. expect(body.registered).toBe(0);
  57. expect(body["auth-key"]).toBe(undefined);
  58. expect(body.error).toBe(2);
  59. done();
  60. });
  61. });
  62. }); //end POST /user/register/
  63. describe("POST /user/auth/", function () {
  64. it("can login as an existing user", function (done) {
  65. request(login_user("foo123", "foofoo"), function (error, response, body) {
  66. expect(response.statusCode).toBe(200);
  67. expect(body.logged_in).toBe(1);
  68. expect(body["auth-key"].length).toBe(60);
  69. expect(body.error).toBe(0);
  70. done();
  71. });
  72. });
  73. it("cannot login with an incorrect password", function (done) {
  74. request(login_user("foo123", "foofo"), function (error, response, body) {
  75. expect(response.statusCode).toBe(200);
  76. expect(body.logged_in).toBe(0);
  77. expect(body["auth-key"]).toBe(undefined);
  78. expect(body.error).toBe(1);
  79. done();
  80. });
  81. });
  82. it("cannot login with an incorrect username", function (done) {
  83. request(login_user("foo1233", "foofoo"), function (error, response, body) {
  84. expect(response.statusCode).toBe(200);
  85. expect(body.logged_in).toBe(0);
  86. expect(body["auth-key"]).toBe(undefined);
  87. expect(body.error).toBe(1);
  88. done();
  89. });
  90. });
  91. it("cannot accept malformed requests", function (done) {
  92. request({
  93. url: base_url + "/user/auth/",
  94. method: "POST",
  95. json: {
  96. usr: "foo123",
  97. password: "foofoo"
  98. }
  99. }, function (error, response, body) {
  100. expect(response.statusCode).toBe(200);
  101. expect(body.logged_in).toBe(0);
  102. expect(body["auth-key"]).toBe(undefined);
  103. expect(body.error).toBe(2);
  104. done();
  105. });
  106. });
  107. }); //end POST /user/auth/
  108. describe("GET /user/view/:user", function () {
  109. it("gets an individual user that exists", function (done) {
  110. request(base_url + "/user/view/foo123", function (error, response, body) {
  111. body = JSON.parse(body);
  112. expect(response.statusCode).toBe(200);
  113. expect(body.user).not.toBe(null);
  114. expect(typeof body.user).toBe("object");
  115. expect(body.user.username).toBe("foo123");
  116. expect(Array.isArray(body.user.societies)).toBe(true);
  117. expect(Array.isArray(body.user.friends)).toBe(true);
  118. expect(Array.isArray(body.user.accepted_events)).toBe(true);
  119. expect(Array.isArray(body.user.declined_events)).toBe(true);
  120. expect(body.error).toBe(0);
  121. done();
  122. });
  123. });
  124. it("does not get users that do not exist", function (done) {
  125. request(base_url + "/user/view/foo1233", function (error, response, body) {
  126. body = JSON.parse(body);
  127. expect(response.statusCode).toBe(200);
  128. expect(Object.keys(body.user).length).toBe(0);
  129. expect(JSON.stringify(body.user)).toEqual(JSON.stringify({}));
  130. expect(body.error).toBe(1);
  131. done();
  132. });
  133. });
  134. it("gets all users in the system", function (done) {
  135. request(base_url + "/user/view/", function (error, response, body) {
  136. body = JSON.parse(body);
  137. expect(response.statusCode).toBe(200);
  138. expect(Array.isArray(body.users)).toBe(true);
  139. done();
  140. });
  141. });
  142. }); //end GET /user/view/:user
  143. }); //end user ops