You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.6 KiB

  1. import pytest
  2. from keycloak.keycloak_admin import KeycloakAdmin
  3. def find_code_blocks(readme_text):
  4. code_blocks = list()
  5. start_index = readme_text.find("```python")
  6. if start_index == -1:
  7. return list()
  8. code_block_full = readme_text[start_index + 9 :] # noqa: E203
  9. end_index = code_block_full.find("```")
  10. code_block = code_block_full[:end_index]
  11. code_blocks.append(code_block)
  12. code_blocks.extend(find_code_blocks(code_block_full[end_index + 3 :])) # noqa: E203
  13. return code_blocks
  14. # @pytest.mark.skip()
  15. def test_readme(admin: KeycloakAdmin):
  16. admin.create_realm(payload={"realm": "example_realm", "enabled": True})
  17. admin.realm_name = "example_realm"
  18. admin.create_client(
  19. payload={
  20. "name": "example_client",
  21. "enabled": True,
  22. "protocol": "openid-connect",
  23. "publicClient": False,
  24. "redirectUris": ["http://localhost/*"],
  25. "webOrigins": ["+"],
  26. "clientId": "example_client",
  27. "secret": "secret",
  28. "clientAuthenticatorType": "client-secret",
  29. }
  30. )
  31. admin.create_user(
  32. payload={
  33. "username": "user",
  34. "email": "user@test.test",
  35. "enabled": True,
  36. "credentials": [{"type": "password", "value": "password"}],
  37. }
  38. )
  39. with open("README.md", "r") as fp:
  40. readme = fp.read()
  41. code_blocks = find_code_blocks(readme)
  42. for code in code_blocks:
  43. print("=" * 50)
  44. print(code)
  45. exec(code)
  46. print("OK")
  47. print("=" * 50)