Пример #1
0
 def setUp(self):
     django.setup()
     from storymanager.tests_utils import create_user, login_user_into_client
     self.client = APIClient()
     self.user = create_user()
     login_user_into_client(self.user, self.client)
     self.room_title = 'a-b'
Пример #2
0
    def _another_user_joins_room(self, username='******') -> 'User':
        from storymanager.tests_utils import create_user, login_user_into_client

        another_user = create_user(username)
        login_user_into_client(another_user, self.client)
        self.room.add_user(another_user)
        return another_user
Пример #3
0
 def create_many_users_in_room(self, room):
     from storymanager.tests_utils import login_user_into_client, create_user
     usernames = list(map(str, range(10)))
     for username in usernames:
         another_user = create_user(username)
         login_user_into_client(another_user, self.client)
         room.add_user(another_user)
     usernames = [self.user.username] + usernames
     return usernames
Пример #4
0
    def _assert_user_can_write(self, user, post=True):
        from rooms.models import get_user_room_membership, Membership
        from storymanager.tests_utils import login_user_into_client

        login_user_into_client(user, self.client)
        this_membership = get_user_room_membership(user, self.room)
        self.assertTrue(this_membership.status == Membership.CAN_WRITE,
                        this_membership.status)
        if post:
            response = post_text_from_client_to_room(self.full_data,
                                                     self.client, self.room)
            self.assertEqual(status.HTTP_201_CREATED, response.status_code)
Пример #5
0
    def _assert_user_cannot_write(self, user, membership_status='waiting'):
        from rooms.models import get_user_room_membership, Membership
        from storymanager.tests_utils import login_user_into_client

        membership_status = (Membership.WAITING if membership_status
                             == 'waiting' else Membership.STOPPED)
        login_user_into_client(user, self.client)
        this_membership = get_user_room_membership(user, self.room)
        self.assertTrue(this_membership.status == membership_status,
                        this_membership.status)
        response = post_text_from_client_to_room(self.full_data, self.client,
                                                 self.room)
        self.assertEqual(status.HTTP_403_FORBIDDEN, response.status_code,
                         response.data)
Пример #6
0
 def test_user_can_join_room(self):
     from storymanager.tests_utils import create_user_room, create_user, login_user_into_client
     room = create_user_room(self.user, self.room_title)
     usernames = list(map(str, range(10)))
     responses = []
     for username in usernames:
         another_user = create_user(username)
         login_user_into_client(another_user, self.client)
         response = self.client.post(
             reverse('room_users', kwargs={'room_title': room.room_title}))
         self.assertIsNone(response.data)
         responses.append(response)
     self.assertTrue(all(r.status_code == status.HTTP_200_OK for r in responses))
     usernames = [self.user.username] + usernames
     response_users_list = self.client.get(
         reverse('room_users', kwargs={'room_title': room.room_title}))
     self.assertEqual(usernames, [u['username'] for u in response_users_list.data])
Пример #7
0
 def test_user_list_updates_current_turn_user(self):
     from storymanager.tests_utils import create_user_room, login_user_into_client, create_user
     from rooms.models import get_user_room_membership, Membership
     room = create_user_room(self.user, self.room_title)
     usernames = list(map(str, range(3)))
     users = []
     first_author_index = 0
     for i, username in enumerate(usernames):
         another_user = create_user(username)
         login_user_into_client(another_user, self.client)
         room.add_user(another_user)
         if i == first_author_index:
             post_text_from_client_to_room({'visible_text': 'x'}, self.client, room)
         users.append(another_user)
     expected_curr_user = users[(first_author_index + 1) % len(users)]
     self.client.get(reverse('room_users', kwargs={'room_title': room.room_title}))
     expected_curr_membership = get_user_room_membership(expected_curr_user, room)
     self.assertTrue(expected_curr_membership.status == Membership.CAN_WRITE)
Пример #8
0
    def setUp(self):
        django.setup()

        from storymanager.tests_utils import create_user
        from storymanager.tests_utils import login_user_into_client
        from storymanager.tests_utils import create_user_room

        self.client = APIClient()
        self.user = create_user()
        login_user_into_client(self.user, self.client)
        self.room_title = 'a-b'
        self.room = create_user_room(self.user, self.room_title)
        self.full_data = {
            'visible_text': 'visible_text',
            'hidden_text': 'hidden_text'
        }
        self.visible_only_data = {'visible_text': 'visible_text'}
        self.hidden_only_data = {'hidden_text': 'hidden_text'}
Пример #9
0
def ws_create_login_user_with_group(client: APIClient,
                                    group: str = ROOM_TITLE,
                                    **kwargs) -> Tuple[User, str]:
    user = create_user(**kwargs)
    user_group, _ = Group.objects.get_or_create(name=group)
    user.groups.add(user_group)
    user.save()
    token = login_user_into_client(user, client)
    return user, token
Пример #10
0
    def test_current_turn_user_is_chronologically_after_previous_author(self):
        from storymanager.tests_utils import login_user_into_client

        authors_count = 10
        other_usernames = [f'user-{i}' for i in range(authors_count, 0, -1)]
        first_author_index = authors_count // 2
        users = []
        for i, another_username in enumerate(other_usernames):
            users.append(self._another_user_joins_room(another_username))
            if i == first_author_index:
                post_text_from_client_to_room(self.full_data, self.client,
                                              self.room)
        users = [self.user] + users
        exp_current_turn_index = (first_author_index + 1 + 1) % authors_count
        for i, user in enumerate(users):
            login_user_into_client(user, self.client)
            if i < exp_current_turn_index:  # users before are not allowed to write
                self._assert_user_cannot_write(user)
            else:  # users after are allowed to write one after another
                self._assert_user_can_write(user)
                # next user should be correctly named:
                current_turn_username = self._get_current_turn_username()
                self.assertEqual(users[(i + 1) % len(users)].username,
                                 current_turn_username)
Пример #11
0
 def test_user_can_log_out(self):
     from storymanager.tests_utils import create_user, login_user_into_client
     user = create_user()
     login_user_into_client(user, self.client)
     response = self.client.post(reverse('knox_logout'))
     self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code)