I've been encountering an issue in my Django Rest Framework (DRF) API tests where I'm using factories to create instances for various models, including User, Workflow, and DynamicActivity. The main test, test_useractivity_operations in test_user_activity.py
test_user_activity.py:
from django.urls import reverse
from rest_framework import status
from rest_framework.test import APIClient
from tests.base import BaseTestCase
from tests.factories.events.dynamic_activity import DynamicActivityFactory
from tests.factories.events.user_activity_data import UserActivityDataFactory
from tests.factories.events.workflow import WorkflowFactory
from tests.factories.others import UserFactory
class TestUserActivity(BaseTestCase):
@classmethod
def setUpTestData(cls):
cls.api = APIClient()
cls.user = UserFactory()
cls.useractivity_1 = UserActivityDataFactory()
cls.api.force_authenticate(user=cls.user)
cls.useractivity_data = {
# "user_id": str(cls.user.id),
"user": UserFactory().pk,
"workflow_id" : WorkflowFactory().pk,
"dynamic_activity_ids" : DynamicActivityFactory().pk,
"input_data": {"key1": "value1"},
"output_data": {"key2": "value2"}
}
def _test_get_single_useractivity(self):
url = reverse("useractivitydata-detail", kwargs={"pk": self.useractivity_1.pk})
resp = self.api.get(url)
assert resp.status_code == status.HTTP_200_OK
def test_useractivity_operations(self):
self._test_get_single_useractivity()
user_activity_data_factory.py
import factory
from events.user_activity_data.models import UserActivityData
from tests.factories.events.dynamic_activity import DynamicActivityFactory
from tests.factories.events.workflow import WorkflowFactory
from tests.factories.others import UserFactory
import json
class JSONFactory(factory.DictFactory):
"""
Use with factory.Dict to make JSON strings.
"""
@classmethod
def _generate(cls, create, attrs):
obj = super()._generate(create, attrs)
return json.dumps(obj)
class UserActivityDataFactory(factory.django.DjangoModelFactory):
class Meta:
model = UserActivityData
user = factory.SubFactory(UserFactory)
workflow_id = factory.SubFactory(WorkflowFactory)
input_data = factory.Dict({
'badger': ['stoat'],
}, dict_factory=JSONFactory)
output_data = factory.Dict({
'badger12': ['stoat12'],
}, dict_factory=JSONFactory)
dynamic_activity_ids = factory.SubFactory(DynamicActivityFactory)
this is my User factory
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = KeycloakUser
id = factory.Faker("uuid4")
is_staff = False
is_superuser = False
is_active = True
date_joined = factory.Faker("date_time")
username = factory.Faker("user_name")
Workflow Factory
import factory
from events.workflow.models import Workflow
class WorkflowFactory(factory.django.DjangoModelFactory):
class Meta:
model = Workflow
workflow_name = "Workflow 1"
DynamicActivityFactory
import factory.fuzzy
from events.dynamic_activity.models import DynamicActivity
from tests.factories.events.workflow import WorkflowFactory
class DynamicActivityFactory(factory.django.DjangoModelFactory):
class Meta:
model = DynamicActivity
workflow_id = factory.SubFactory(WorkflowFactory)
activity_name = factory.Faker("text")
type_of_activity = factory.Faker(
"random_element", elements=["SIMPLE", "CONDITIONAL"]
)
Getting this following issue after running the test_user_activity.py
keycloak.exceptions.KeycloakGetError: 404: b'{"error":"User not found"}' ================================================================= short test summary info ================================================================= FAILED tests/events/test_user_activity.py::TestUserActivity::test_useractivity_operations - keycloak.exceptions.KeycloakGetError: 404: b'{"error":"User not found"}'
Thank you