Ejemplo n.º 1
0
def get_login_data(token: str,
                   should_delete: bool = True) -> Optional[Dict[str, Any]]:
    key = LOGIN_KEY_FORMAT.format(token=token)
    data = get_dict_from_redis(redis_client, LOGIN_KEY_FORMAT, key)
    if data is not None and should_delete:
        redis_client.delete(key)
    return data
Ejemplo n.º 2
0
    def test_put_data_key_length_check(self) -> None:
        data = {"a": 1, "b": "some value"}

        max_valid_token_length = MAX_KEY_LENGTH - (len(self.key_format) -
                                                   len('{token}'))
        key = put_dict_in_redis(self.redis_client,
                                self.key_format,
                                data,
                                expiration_seconds=self.expiration_seconds,
                                token_length=max_valid_token_length)
        retrieved_data = get_dict_from_redis(self.redis_client,
                                             self.key_format, key)
        self.assertEqual(data, retrieved_data)

        # Trying to put data under an overly long key should get stopped before even
        # generating the random token.
        with mock.patch("zerver.lib.redis_utils.generate_random_token"
                        ) as mock_generate:
            with self.assertRaises(ZulipRedisKeyTooLongError):
                put_dict_in_redis(self.redis_client,
                                  self.key_format,
                                  data,
                                  expiration_seconds=self.expiration_seconds,
                                  token_length=max_valid_token_length + 1)
            mock_generate.assert_not_called()
Ejemplo n.º 3
0
 def test_put_and_get_data(self) -> None:
     data = {"a": 1, "b": "some value"}
     key = put_dict_in_redis(self.redis_client,
                             self.key_format,
                             data,
                             expiration_seconds=self.expiration_seconds)
     retrieved_data = get_dict_from_redis(self.redis_client,
                                          self.key_format, key)
     self.assertEqual(data, retrieved_data)
Ejemplo n.º 4
0
 def test_get_data_key_format_validation(self) -> None:
     with self.assertRaises(ZulipRedisKeyOfWrongFormatError):
         get_dict_from_redis(self.redis_client, self.key_format,
                             'nonmatching_format_1111')
Ejemplo n.º 5
0
 def test_get_data_key_length_check(self) -> None:
     with self.assertRaises(ZulipRedisKeyTooLongError):
         get_dict_from_redis(self.redis_client,
                             key_format='{token}',
                             key='A' * (MAX_KEY_LENGTH + 1))