예제 #1
0
    def test_get_sub_with_pk_and_matching_parent_pk_should_200(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class()
        model = DataGenerator.set_up_model_with_parent_resource(basic_class=basic_class)
        url = '/basicClasses/{0}/modelWithParentResources/{1}'.format(basic_class.id, model.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(status.HTTP_200_OK, result.status_code)
예제 #2
0
    def test_get_with_include_that_has_excludes_removes_fields_properly(self):
        # arrange
        model_with_sensitive_data = DataGenerator.set_up_model_with_sensitive_data()
        basic_class = DataGenerator.set_up_basic_class(model_with_sensitive_data=model_with_sensitive_data)
        url = '/basicClass/{0}?include=model_with_sensitive_data'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(status.HTTP_200_OK, result.status_code)
        self.assertNotIn('topSecret', result.data['modelWithSensitiveData'].keys())
예제 #3
0
    def test_get_with_fields_from_foriegnkey(self):
        # arrange
        child_class_one = DataGenerator.set_up_child_class()
        basic_class = DataGenerator.set_up_basic_class(child_one=child_class_one)
        url = '/basicClass/{0}?fields=child_one_id'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        self.assertEqual(len(result.data.keys()), 1)
    def test_get_list_sub(self):
        # arrange
        child_one = DataGenerator.set_up_child_class()
        basic_class = DataGenerator.set_up_basic_class(child_one=child_one)
        url = '/basicClass/{0}/childOne'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        basic_class.refresh_from_db()
        self.assertEqual(child_one.id, result.data['id'])
    def test_get_with_include_that_has_no_nested_child_returns_null(self):
        # arrange
        child_one = DataGenerator.set_up_child_class('test')
        basic_class = DataGenerator.set_up_basic_class(child_one=child_one)
        url = '/basicClass/{0}?include=child_one__nested_child'.format(
            basic_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(status.HTTP_200_OK, result.status_code)
        self.assertIsNone(result.data['childOne']['nestedChild'])
    def test_get_with_cache_without_cache_time(self):
        # arrange
        child_one = DataGenerator.set_up_child_class()
        basic_class = DataGenerator.set_up_basic_class(child_one=child_one)
        url = '/basicClass/{0}/childOne'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')
        cached_result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        self.assertEqual(cached_result.status_code, status.HTTP_200_OK)
        self.assertFalse(cached_result.has_header('Hit'))
예제 #7
0
    def test_delete_sub(self):
        # arrange
        child_one = DataGenerator.set_up_child_class()
        basic_class = DataGenerator.set_up_basic_class(child_one=child_one)
        url = '/basicClass/{0}/childClass/{1}'.format(basic_class.id, child_one.id)

        # act
        result = self.api_client.delete(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        with self.assertRaises(ObjectDoesNotExist) as ex:
            ChildClass.objects.get(pk=child_one.id)
        self.assertIsInstance(ex.exception, ObjectDoesNotExist)
예제 #8
0
    def test_filterable_property_properly_filters(self):
        # arrange
        community_one = DataGenerator.set_up_community()
        community_two = DataGenerator.set_up_community(phase_group=community_one.phase_group)
        application = Application.get_lead_mgmt_application()
        community_application_one = DataGenerator.set_up_community_application(community=community_one, application=application, active=False)
        community_application_two = DataGenerator.set_up_community_application(community=community_one, application=application, active=False)

        url = '/phaseGroups?filters=active=True'

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        self.assertEqual(len(result.data), 0)
예제 #9
0
    def test_post_sub_resource_to_linking_class_with_id_with_no_linking_cls(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class()
        child_class = DataGenerator.set_up_child_class()
        url = '/basicClasses/{0}/childClassNoLinker'.format(basic_class.id)
        body = {
            'id': child_class.id
        }

        # act
        result = self.api_client.post(url, body, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(result.data['errorMessage'], ErrorMessages.POST_SUB_WITH_ID_AND_NO_LINKING_CLASS.
                         format(ChildClass.__name__))
    def test_encrypted_field_returns_decrypted_value(self):
        value = '123456789'
        encrypted_class = DataGenerator.set_up_encrypted_class(value=value)

        encrypted_return = EncryptedClass.objects.get(id=encrypted_class.id)

        self.assertEqual(value[-4:], encrypted_return.encrypted_val[-4:])
        self.assertEqual(len(encrypted_return.encrypted_val), 4)
    def test_post_sub_resource_to_linking_class_with_id(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class()
        child_class = DataGenerator.set_up_child_class()
        url = '/basicClasses/{0}/childClass'.format(basic_class.id)
        body = {'id': child_class.id}

        # act
        result = self.api_client.post(url, body, format='json')

        # assert
        basic_class.refresh_from_db()
        linking_classes = LinkingClass.objects.filter(basic_class=basic_class,
                                                      child_class=child_class)
        child_classes = ChildClass.objects.filter(name=child_class.name)
        self.assertEqual(len(linking_classes), 1)
        self.assertEqual(len(child_classes), 1)
    def test_encrypted_field_returns_full_descrypted_value(self):
        value = '123456789abcdefgfff'
        encrypted_class = DataGenerator.set_up_encrypted_class_with_no_display_value(
            value=value)

        encrypted_return = EncryptedClassNoDisplayChars.objects.get(
            id=encrypted_class.id)

        self.assertEqual(value, encrypted_return.encrypted_val)
    def test_get_with_bool_filter_of_false(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class(active=False)
        url = '/basicClass?filters=active=False'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertFalse(result.data[0].get('active'))
    def test_get_list_sub_with_no_child_resource(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class(child_one=None)
        url = '/basicClass/{0}/childOne'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.data, {})
    def test_get_meta(self):
        # arrange
        meta_data_class = DataGenerator.set_up_meta_data_class()
        url = '/metaDataClass?meta=true'.format(meta_data_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
예제 #16
0
    def test_get_with_contains_all_filter_list(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class(active=False)
        url = '/basicClass?filters=child_three__id__contains_all={0}'.format(basic_class.child_three.first().id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertFalse(result.data[0].get('active'))
    def test_get_one_to_one(self):
        # arrange
        oto = DataGenerator.set_up_ont_to_one_class()
        url = '/oneToOne/{0}'.format(oto.alternative_id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.data['alternativeId'], oto.alternative_id)
    def test_get(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class()
        url = '/basicClass/{0}'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        self.assertEqual(result.data['id'], basic_class.id)
예제 #19
0
    def test_get_with_revicontains_matches(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class()
        url = '/basicClasses?filters=name__revicontains={0}'.format(basic_class.name + generate_str(7))

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(status.HTTP_200_OK, result.status_code)
        self.assertEqual(len(result.data), 1)
    def test_get_should_return_value_in_read_db_not_write_db(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class(write_db='readreplica')
        url = '/readReplicaBasicClass/{0}'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        self.assertEqual(result.data['name'], basic_class.name)
        def test_json_text_field_returns_json_value_as_none(self):
            # arrange
            json_text = None
            jt_class = DataGenerator.set_up_json_text_field_class(
                json_text=json_text)

            # act
            jt_return = JsonTextFieldClass.objects.get(id=jt_class.id)

            # assert
            self.assertIsNone(jt_return.json_text)
예제 #22
0
    def test_get_should_fail_if_data_in_default_db(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class()
        url = '/readReplicaBasicClass/{0}'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(result.data['errorMessage'], ErrorMessages.DOES_NOT_EXIST.format(BasicClass.__name__, basic_class.id))
    def test_post_sub_resource_to_child_(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class()
        url = '/basicClasses/{0}/childOne'.format(basic_class.id)
        body = {'name': 'test 123'}

        # act
        result = self.api_client.post(url, body, format='json')

        # assert
        basic_class.refresh_from_db()
        self.assertEqual(basic_class.child_one.name, result.data['name'])
예제 #24
0
    def test_get_list_no_count(self):
        # arrange
        basic_class_1, basic_class_2, basic_class_3 = [DataGenerator.set_up_basic_class() for x in range(3)]
        url = '/basicClass?page=1&pageSize=3&noCount=true'

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        self.assertEqual(result.data['count'], None)
        self.assertGreater(len(result.data['data']), 1)
예제 #25
0
    def test_get_list_count_by_page_zero(self):
        # arrange
        basic_class_1, basic_class_2, basic_class_3 = [DataGenerator.set_up_basic_class() for x in range(3)]
        url = '/basicClass?pageSize=0'

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        self.assertGreater(result.data['count'], 2)
        self.assertEqual(len(result.data['data']), 0)
    def test_filterable_property_properly_filters(self):
        # todo: this is a bad test due to how they are linked -- it can also cause issues expanding result set
        # arrange
        community_one = DataGenerator.set_up_community()
        community_two = DataGenerator.set_up_community(
            phase_group=community_one.phase_group)
        application = Application.get_lead_mgmt_application()
        community_application_one = DataGenerator.set_up_community_application(
            community=community_one, application=application, active=False)
        community_application_two = DataGenerator.set_up_community_application(
            community=community_two, application=application, active=False)

        url = '/phaseGroups?filters=active=True|id__in={0}'.format(
            community_one.phase_group.id)

        # act
        result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        self.assertEqual(len(result.data), 0)
        def test_json_text_field_returns_json_value_as_list(self):
            # arrange
            json_text = json.loads(
                '[{ "description": "isn\'t it beautiful outside?" }]')
            jt_class = DataGenerator.set_up_json_text_field_class(
                json_text=json_text)

            # act
            jt_return = JsonTextFieldClass.objects.get(id=jt_class.id)

            # assert
            self.assertIsNotNone(jt_return)
            self.assertTrue(isinstance(jt_return.json_text, List))
        def test_json_text_field_calls_mock_to_python_when_set(
                self, mock_to_python):
            # arrange
            mock_to_python.return_value = []
            json_text = json.loads(
                '[{ "description": "isn\'t it beautiful outside?" }]')

            # act
            jt_class = DataGenerator.set_up_json_text_field_class(
                json_text=json_text)

            # assert
            self.assertTrue(mock_to_python.called)
    def test_get_with_cache(self):
        # arrange
        basic_class = DataGenerator.set_up_basic_class()
        url = '/basicClass/{0}'.format(basic_class.id)

        # act
        result = self.api_client.get(url, format='json')
        cached_result = self.api_client.get(url, format='json')

        # assert
        self.assertEqual(result.status_code, status.HTTP_200_OK)
        self.assertEqual(cached_result.status_code, status.HTTP_200_OK)
        self.assertTrue(cached_result.has_header('Hit'))
        def test_json_text_field_calls_mock_from_db_value_when_retrieved_from_db(
                self, mock_from_db):
            # arrange
            mock_from_db.return_value = []
            json_text = json.loads(
                '[{ "description": "isn\'t it beautiful outside?" }]')
            jt_class = DataGenerator.set_up_json_text_field_class(
                json_text=json_text)

            # act
            jt_return = JsonTextFieldClass.objects.get(id=jt_class.id)

            # assert
            self.assertTrue(mock_from_db.called)