Example #1
0
    def test_mocked_relations_context_manager(self):
        m = Manufacturer()

        with mocked_relations(Manufacturer):
            self.assertEqual(0, m.car_set.count())
            m.car_set.add(Car())
            self.assertEqual(1, m.car_set.count())
Example #2
0
    def create_client(self):
        patcher = mocked_relations(User, Session)
        patcher.start()
        self.addCleanup(patcher.stop)

        user = User(pk=users.KIVE_USER_PK)
        User.objects.add(user)
        User.objects.model = User
        # noinspection PyUnresolvedReferences
        patcher = patch.object(User._meta, 'default_manager', User.objects)
        patcher.start()
        self.addCleanup(patcher.stop)
        dummy_session_key = 'dummysession'
        dummy_session = Session(
            session_key=dummy_session_key,
            expire_date=now() + timedelta(days=1),
            session_data=SessionStore().encode({
                SESSION_KEY: users.KIVE_USER_PK,
                HASH_SESSION_KEY: user.get_session_auth_hash(),
                BACKEND_SESSION_KEY: 'django.contrib.auth.backends.ModelBackend'}))
        Session.objects.add(dummy_session)
        client = Client()
        client.cookies[settings.SESSION_COOKIE_NAME] = dummy_session_key
        client.force_login(kive_user())
        return client
Example #3
0
    def setUp(self):
        super(DockerImageViewMockTests, self).setUp()
        patcher = mocked_relations(KiveUser,
                                   DockerImage,
                                   User,
                                   Group)
        patcher.start()
        self.addCleanup(patcher.stop)

        self.client = self.create_client()
        self.dev_group = Group(pk=groups.DEVELOPERS_PK)
        self.everyone = Group(pk=groups.EVERYONE_PK)
        Group.objects.add(self.dev_group, self.everyone)
        self.user = kive_user()
        self.user.groups.add(self.dev_group)
        self.other_user = User(pk=5)

        self.docker_image = DockerImage(pk='99',
                                        name='git/joe/hello',
                                        tag='v1',
                                        git='http://server1.com/joe/hello.git',
                                        user=self.user)
        DockerImage.objects.add(self.docker_image)

        KiveUser.objects.add(KiveUser(pk=users.KIVE_USER_PK))
    def test_context_manager(self):
        m = Manufacturer()

        with mocked_relations(Manufacturer):
            self.assertEqual(0, m.car_set.count())
            m.car_set.add(Car())
            self.assertEqual(1, m.car_set.count())
Example #5
0
    def create_client(self):
        patcher = mocked_relations(User, Session)
        patcher.start()
        self.addCleanup(patcher.stop)

        user = User(pk=users.KIVE_USER_PK)
        User.objects.add(user)
        User.objects.model = User
        # noinspection PyUnresolvedReferences
        patcher = patch.object(User._meta, 'default_manager', User.objects)
        patcher.start()
        self.addCleanup(patcher.stop)
        dummy_session_key = 'dummysession'
        dummy_session = Session(session_key=dummy_session_key,
                                expire_date=now() + timedelta(days=1),
                                session_data=SessionStore().encode({
                                    SESSION_KEY:
                                    users.KIVE_USER_PK,
                                    HASH_SESSION_KEY:
                                    user.get_session_auth_hash(),
                                    BACKEND_SESSION_KEY:
                                    'django.contrib.auth.backends.ModelBackend'
                                }))
        Session.objects.add(dummy_session)
        client = Client()
        client.cookies[settings.SESSION_COOKIE_NAME] = dummy_session_key
        client.force_login(kive_user())
        return client
Example #6
0
    def test_query_values_of_nested_field(self):
        with mocked_relations(Manufacturer, Car):
            make = Manufacturer(name='vw')
            self.mock_set.add(make)

            polo = Car(make=make, model='polo', speed=240)
            golf = Car(make=make, model='golf', speed=260)

            polo_white = CarVariation(car=polo, color='white')
            golf_white = CarVariation(car=golf, color='white')
            golf_black = CarVariation(car=golf, color='black')

            make.car_set = MockSet(polo, golf)
            polo.variations = MockSet(polo_white)
            golf.variations = MockSet(golf_white, golf_black)

            data = list(
                self.mock_set.values('car__model', 'car__variations__color',
                                     'name'))
            assert {
                'name': make.name,
                'car__model': polo.model,
                'car__variations__color': polo_white.color
            } in data
            assert {
                'name': make.name,
                'car__model': golf.model,
                'car__variations__color': golf_white.color
            } in data
            assert {
                'name': make.name,
                'car__model': golf.model,
                'car__variations__color': golf_black.color
            } in data
Example #7
0
    def setUp(self):
        super(CodeResourceViewMockTests, self).setUp()
        patcher = mocked_relations(KiveUser,
                                   CodeResource,
                                   CodeResourceRevision,
                                   User,
                                   Group)
        patcher.start()
        self.addCleanup(patcher.stop)

        # noinspection PyUnresolvedReferences
        patchers = [patch.object(CodeResource._meta,
                                 'default_manager',
                                 CodeResource.objects),
                    patch.object(CodeResourceRevision._meta,
                                 'default_manager',
                                 CodeResource.objects)]

        def dummy_save(r):
            r.id = id(r)

        # noinspection PyUnresolvedReferences
        patchers.append(patch.object(CodeResource, 'save', dummy_save))
        patcher = PatcherChain(patchers)
        patcher.start()
        self.addCleanup(patcher.stop)

        self.client = self.create_client()
        self.dev_group = Group(pk=groups.DEVELOPERS_PK)
        self.everyone = Group(pk=groups.EVERYONE_PK)
        Group.objects.add(self.dev_group, self.everyone)
        self.user = kive_user()
        self.user.groups.add(self.dev_group)
        self.content_file = ContentFile('some text', 'existing.txt')
        self.code_resource = CodeResource(pk='99',
                                          user=self.user,
                                          name='existing',
                                          filename='existing.txt')
        self.code_resource._state.adding = False

        self.other_user = User(pk=5)
        self.other_code_resource = CodeResource(pk='150', user=self.other_user)
        CodeResource.objects.add(self.code_resource, self.other_code_resource)

        self.code_resource_revision = CodeResourceRevision(
            pk='199',
            user=self.user,
            content_file=self.content_file)
        self.code_resource_revision.coderesource = self.code_resource
        self.other_code_resource_revision = CodeResourceRevision(
            pk='200',
            user=self.other_user)
        self.other_code_resource_revision.coderesource = self.other_code_resource
        self.other_code_resource.revisions.add(self.other_code_resource_revision)
        CodeResourceRevision.objects.add(self.code_resource_revision,
                                         self.other_code_resource_revision)
        k = KiveUser(pk=users.KIVE_USER_PK)
        k.groups.add(self.dev_group)
        KiveUser.objects.add(k)
Example #8
0
 def setUp(self):
     patcher = mocked_relations(Method, MethodDependency, Transformation)
     patcher.start()
     self.addCleanup(patcher.stop)
     driver = CodeResourceRevision(
         coderesource=CodeResource(filename='driver.py'))
     self.method = Method(driver=driver, family=MethodFamily())
     self.dependency = self.add_dependency('helper.py')
    def test_replaces_other_mocks(self):
        original_type = type(Manufacturer.car_set)
        self.assertIsInstance(Manufacturer.car_set, original_type)

        with mocked_relations(Manufacturer):
            Manufacturer.car_set = PropertyMock('Manufacturer.car_set')

        self.assertIsInstance(Manufacturer.car_set, original_type)
Example #10
0
    def test_mocked_relations_replaces_other_mocks(self):
        original_type = type(Manufacturer.car_set)
        self.assertIsInstance(Manufacturer.car_set, original_type)

        with mocked_relations(Manufacturer):
            Manufacturer.car_set = PropertyMock('Manufacturer.car_set')

        self.assertIsInstance(Manufacturer.car_set, original_type)
Example #11
0
    def test_mock_twice(self):
        """ Don't reset the mocking if a class is mocked twice.

        Could happen where Sedan is mocked on the class, and Car (the base
        class) is mocked on a method.
        """
        Car.objects.add(Car(speed=95))
        self.assertEqual(1, Car.objects.count())

        with mocked_relations(Car):
            self.assertEqual(1, Car.objects.count())
Example #12
0
    def test_reusing_patcher(self):
        patcher = mocked_relations(Manufacturer)
        with patcher:
            self.assertEqual(0, Manufacturer.objects.count())
            Manufacturer.objects.add(Manufacturer())
            self.assertEqual(1, Manufacturer.objects.count())

        with patcher:
            self.assertEqual(0, Manufacturer.objects.count())
            Manufacturer.objects.add(Manufacturer())
            self.assertEqual(1, Manufacturer.objects.count())
Example #13
0
    def test_mocked_relations_mock_twice(self):
        """ Don't reset the mocking if a class is mocked twice.

        Could happen where Sedan is mocked on the class, and Car (the base
        class) is mocked on a method.
        """
        Car.objects.add(Car(speed=95))
        self.assertEqual(1, Car.objects.count())

        with mocked_relations(Car):
            self.assertEqual(1, Car.objects.count())
    def test_query_aggregate_on_related_field(self):
        with mocked_relations(Manufacturer):
            cars = [Car(speed=1), Car(speed=2), Car(speed=3)]

            make = Manufacturer()
            make.car_set = MockSet(*cars)

            self.mock_set.add(make)

            result = self.mock_set.aggregate(Avg('car__speed'))
            assert result['car__speed__avg'] == sum([c.speed for c in cars]) / len(cars)
Example #15
0
    def test_mocked_relations_reusing_patcher(self):
        patcher = mocked_relations(Manufacturer)
        with patcher:
            self.assertEqual(0, Manufacturer.objects.count())
            Manufacturer.objects.add(Manufacturer())
            self.assertEqual(1, Manufacturer.objects.count())

        with patcher:
            self.assertEqual(0, Manufacturer.objects.count())
            Manufacturer.objects.add(Manufacturer())
            self.assertEqual(1, Manufacturer.objects.count())
    def test_query_aggregate_on_related_field(self):
        with mocked_relations(Manufacturer):
            cars = [Car(speed=1), Car(speed=2), Car(speed=3)]

            make = Manufacturer()
            make.car_set = MockSet(*cars)

            self.mock_set.add(make)

            result = self.mock_set.aggregate(Avg('car__speed'))
            assert result['car__speed__avg'] == sum([c.speed for c in cars]) / len(cars)
Example #17
0
    def setUp(self):
        patcher = mocked_relations(Method, MethodFamily, Transformation)
        patcher.start()
        self.addCleanup(patcher.stop)
        self.family = MethodFamily()
        self.old_method = self.family.members.create(family=self.family,
                                                     revision_number=1,
                                                     id=101)
        self.old_method.method = self.old_method

        self.new_method = self.family.members.create(family=self.family,
                                                     revision_number=2,
                                                     id=102)
        self.new_method.method = self.new_method
Example #18
0
        def mock_viewset(self, viewset_class):
            model = viewset_class.queryset.model
            patcher = mocked_relations(model, User, KiveUser)
            patcher.start()
            self.addCleanup(patcher.stop)

            user = User(pk=users.KIVE_USER_PK)
            User.objects.add(user)

            self.kive_kive_user = KiveUser(pk=users.KIVE_USER_PK,
                                           username="******")
            KiveUser.objects.add(self.kive_kive_user)

            # noinspection PyUnresolvedReferences
            patcher2 = patch.object(viewset_class, 'queryset', model.objects)
            patcher2.start()
            self.addCleanup(patcher2.stop)
Example #19
0
    def setUp(self):
        super(MethodViewMockTests, self).setUp()
        patcher = mocked_relations(KiveUser,
                                   MethodFamily,
                                   Method,
                                   CodeResource,
                                   CodeResourceRevision,
                                   CompoundDatatype,
                                   ContainerFamily,
                                   Container,
                                   Transformation,
                                   TransformationInput,
                                   TransformationOutput,
                                   User,
                                   Group)
        patcher.start()
        self.addCleanup(patcher.stop)

        # noinspection PyUnresolvedReferences
        patcher = patch.object(MethodFamily._meta,
                               'default_manager',
                               MethodFamily.objects)
        patcher.start()
        self.addCleanup(patcher.stop)

        self.client = self.create_client()
        self.dev_group = Group(pk=groups.DEVELOPERS_PK)
        self.everyone = Group(pk=groups.EVERYONE_PK)
        Group.objects.add(self.dev_group, self.everyone)
        self.user = kive_user()
        self.user.groups.add(self.dev_group)
        self.other_user = User(pk=5)

        self.method_family = MethodFamily(pk='99',
                                          user=self.user)
        MethodFamily.objects.add(self.method_family)

        self.driver = CodeResourceRevision(user=self.user)
        self.driver.pk = 1337  # needed for viewing a method
        self.driver.coderesource = CodeResource()
        self.method = Method(pk='199', user=self.user)
        self.method.driver = self.driver
        self.method.family = self.method_family
        Method.objects.add(self.method)
        KiveUser.objects.add(KiveUser(pk=users.KIVE_USER_PK))
Example #20
0
        def mock_viewset(self, viewset_class):
            model = viewset_class.queryset.model
            patcher = mocked_relations(model, User, KiveUser)
            patcher.start()
            self.addCleanup(patcher.stop)

            user = User(pk=users.KIVE_USER_PK)
            User.objects.add(user)

            self.kive_kive_user = KiveUser(pk=users.KIVE_USER_PK, username="******")
            KiveUser.objects.add(self.kive_kive_user)

            # noinspection PyUnresolvedReferences
            patcher2 = patch.object(viewset_class,
                                    'queryset',
                                    model.objects)
            patcher2.start()
            self.addCleanup(patcher2.stop)
    def test_query_values_of_nested_field(self):
        with mocked_relations(Manufacturer, Car):
            make = Manufacturer(name='vw')
            self.mock_set.add(make)

            polo = Car(make=make, model='polo', speed=240)
            golf = Car(make=make, model='golf', speed=260)

            polo_white = CarVariation(car=polo, color='white')
            golf_white = CarVariation(car=golf, color='white')
            golf_black = CarVariation(car=golf, color='black')

            make.car_set = MockSet(polo, golf)
            polo.variations = MockSet(polo_white)
            golf.variations = MockSet(golf_white, golf_black)

            data = list(self.mock_set.values('car__model', 'car__variations__color', 'name'))
            assert {'name': make.name, 'car__model': polo.model, 'car__variations__color': polo_white.color} in data
            assert {'name': make.name, 'car__model': golf.model, 'car__variations__color': golf_white.color} in data
            assert {'name': make.name, 'car__model': golf.model, 'car__variations__color': golf_black.color} in data
Example #22
0
    def setUp(self):
        self.mock_viewset(ContainerAppViewSet)
        super(ContainerAppApiMockTests, self).setUp()

        patcher = mocked_relations(Container, ContainerFamily)
        patcher.start()
        self.addCleanup(patcher.stop)
        self.list_path = reverse("containerapp-list")
        self.list_view, _, _ = resolve(self.list_path)

        self.detail_pk = 43
        self.detail_path = reverse("containerapp-detail",
                                   kwargs={'pk': self.detail_pk})

        self.detail_view, _, _ = resolve(self.detail_path)

        self.my_user = User(pk=1000)
        User.objects.add(self.my_user)
        my_kive_user = KiveUser(pk=self.my_user.pk, username='******')
        KiveUser.objects.add(my_kive_user)

        other_user = User(pk=1001)
        User.objects.add(other_user)
        other_kive_user = KiveUser(pk=other_user.pk)
        KiveUser.objects.add(other_kive_user)

        my_container = Container.objects.create(id=100, user=my_kive_user)
        my_container.family = ContainerFamily.objects.create()
        other_container = Container.objects.create(id=101,
                                                   user=other_kive_user)
        archive = ContainerApp(pk=42, name='archive', description='impressive')
        compress = ContainerApp(pk=43, name='compress')
        backup = ContainerApp(pk=44, name='backup')
        distribute = ContainerApp(pk=45, name='distribute')
        archive.container = compress.container = backup.container = my_container
        distribute.container = other_container
        ContainerApp.objects.add(archive, compress, backup, distribute)
Example #23
0
    def setUp(self):
        self.mock_viewset(ContainerAppViewSet)
        super(ContainerAppApiMockTests, self).setUp()

        patcher = mocked_relations(Container, ContainerFamily)
        patcher.start()
        self.addCleanup(patcher.stop)
        self.list_path = reverse("containerapp-list")
        self.list_view, _, _ = resolve(self.list_path)

        self.detail_pk = 43
        self.detail_path = reverse("containerapp-detail",
                                   kwargs={'pk': self.detail_pk})

        self.detail_view, _, _ = resolve(self.detail_path)

        self.my_user = User(pk=1000)
        User.objects.add(self.my_user)
        my_kive_user = KiveUser(pk=self.my_user.pk, username='******')
        KiveUser.objects.add(my_kive_user)

        other_user = User(pk=1001)
        User.objects.add(other_user)
        other_kive_user = KiveUser(pk=other_user.pk)
        KiveUser.objects.add(other_kive_user)

        my_container = Container.objects.create(id=100, user=my_kive_user)
        my_container.family = ContainerFamily.objects.create()
        other_container = Container.objects.create(id=101, user=other_kive_user)
        archive = ContainerApp(pk=42, name='archive', description='impressive')
        compress = ContainerApp(pk=43, name='compress')
        backup = ContainerApp(pk=44, name='backup')
        distribute = ContainerApp(pk=45, name='distribute')
        archive.container = compress.container = backup.container = my_container
        distribute.container = other_container
        ContainerApp.objects.add(archive, compress, backup, distribute)