auth.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import assert from 'assert';
  2. import { updateAvatar, updateUsername } from 'misago/reducers/users';
  3. import reducer, { signIn, signOut, patch } from 'misago/reducers/auth';
  4. describe("Auth Reducer", function() {
  5. it("patches auth user", function() {
  6. let state = {
  7. user: {
  8. username: 'Original'
  9. }
  10. };
  11. assert.deepEqual(reducer(state, patch({
  12. username: 'Patched!',
  13. new_attr: 'Set'
  14. })), {
  15. user: {
  16. username: 'Patched!',
  17. new_attr: 'Set'
  18. }
  19. }, "reducer patched authenticated user");
  20. });
  21. it("updates avatar", function() {
  22. let state = {
  23. isAuthenticated: true,
  24. user: {
  25. id: 321,
  26. avatar_hash: 'aabbccdd'
  27. }
  28. };
  29. assert.deepEqual(reducer(state, updateAvatar({
  30. id: 321
  31. }, '11223344')), {
  32. isAuthenticated: true,
  33. user: {
  34. id: 321,
  35. avatar_hash: '11223344'
  36. }
  37. }, "reducer changed authenticated user's avatar hash");
  38. assert.deepEqual(reducer(state, updateAvatar({
  39. id: 322
  40. }, '11223344')), {
  41. isAuthenticated: true,
  42. user: {
  43. id: 321,
  44. avatar_hash: 'aabbccdd'
  45. }
  46. }, "reducer validates user id");
  47. });
  48. it("updates username", function() {
  49. let state = {
  50. isAuthenticated: true,
  51. user: {
  52. id: 321,
  53. username: 'Bob',
  54. slug: 'bob'
  55. }
  56. };
  57. assert.deepEqual(reducer(state, updateUsername({
  58. id: 321
  59. }, 'Weebl', 'weebl')), {
  60. isAuthenticated: true,
  61. user: {
  62. id: 321,
  63. username: 'Weebl',
  64. slug: 'weebl'
  65. }
  66. }, "reducer changed authenticated user's name");
  67. assert.deepEqual(reducer(state, updateUsername({
  68. id: 322
  69. }, 'Weebl', 'weebl')), {
  70. isAuthenticated: true,
  71. user: {
  72. id: 321,
  73. username: 'Bob',
  74. slug: 'bob'
  75. }
  76. }, "reducer validates user id");
  77. });
  78. it("signs user in", function() {
  79. let state = {
  80. signedIn: false
  81. };
  82. assert.deepEqual(reducer(state, signIn({username: 'Weebl'})), {
  83. signedIn: {
  84. username: 'Weebl'
  85. }
  86. }, "reducer changed store state for sign in");
  87. });
  88. it("signs user out", function() {
  89. let state = {
  90. isAuthenticated: true,
  91. isAnonymous: true,
  92. signedIn: false,
  93. signedOut: true
  94. };
  95. assert.deepEqual(reducer(state, signOut()), {
  96. isAuthenticated: false,
  97. isAnonymous: true,
  98. signedIn: false,
  99. signedOut: true
  100. }, "reducer changed store state for sign out");
  101. });
  102. it("soflty signs user out", function() {
  103. let state = {
  104. isAuthenticated: true,
  105. isAnonymous: true,
  106. signedIn: false,
  107. signedOut: true
  108. };
  109. assert.deepEqual(reducer(state, signOut(true)), {
  110. isAuthenticated: false,
  111. isAnonymous: true,
  112. signedIn: false,
  113. signedOut: false
  114. }, "reducer changed store state for soft sign out");
  115. });
  116. });