userver: samples/redis_service/testsuite/test_redis.py
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
samples/redis_service/testsuite/test_redis.py
1# /// [Functional test]
2async def test_redis(service_client, redis_store):
3 response = await service_client.delete('/v1/key-value?key=hello')
4 assert response.status == 200
5
6 # Checking content of the database via direct access
7 assert redis_store.get('hello') is None
8
9 response = await service_client.post('/v1/key-value?key=hello&value=world')
10 assert response.status == 201
11 assert 'text/plain' in response.headers['Content-Type']
12 assert response.text == 'world'
13
14 # Checking content of the database via direct access
15 assert redis_store.get('hello') == b'world'
16
17 response = await service_client.request('GET', '/v1/key-value?key=hello')
18 assert response.status == 200
19 assert 'text/plain' in response.headers['Content-Type']
20 assert response.text == 'world'
21 # /// [Functional test]
22
23 response = await service_client.request(
24 'POST',
25 '/v1/key-value?key=hello&value=there',
26 )
27 assert response.status == 409 # Conflict
28
29 response = await service_client.request('GET', '/v1/key-value?key=hello')
30 assert response.status == 200
31 assert 'text/plain' in response.headers['Content-Type']
32 assert response.text == 'world' # Still the same
33
34 response = await service_client.request(
35 'DELETE',
36 '/v1/key-value?key=hello',
37 )
38 assert response.status == 200
39 assert 'text/plain' in response.headers['Content-Type']
40 assert response.text == '1'
41
42 response = await service_client.request('GET', '/v1/key-value?key=hello')
43 assert response.status == 404 # Not Found
44
45
46async def test_evalsha(service_client):
47 script = 'return "42"'
48
49 hash_id = 'initialhash'
50 response = await service_client.post(
51 f'/v1/script?command=evalsha&key=hello&hash={hash_id}',
52 )
53 assert response.status == 200
54 assert 'text/plain' in response.headers['Content-Type']
55 assert response.text == 'NOSCRIPT'
56
57 response = await service_client.post(
58 f'/v1/script?command=scriptload&key=hello&script={script}',
59 )
60 assert response.status == 200
61 hash_id = response.content.decode()
62
63 response = await service_client.post(
64 f'/v1/script?command=evalsha&key=hello&hash={hash_id}',
65 )
66 assert response.status == 200
67 assert 'text/plain' in response.headers['Content-Type']
68 assert response.text == '42'