コード例 #1
0
    def test_get_law_redirects_to_new_when_stat_prov_none(self, mock_current_app):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')

        state = LocalLandChargeItem()
        state.geometry = "abc"
        state.charge_type = "Top Level"

        category = Category(name="top-level",
                            display_name="Top Level",
                            sub_categories=[],
                            parent=None,
                            statutory_provisions=None,
                            instruments=[])

        self.mock_session.return_value.add_charge_state = state
        self.mock_session.return_value.user.permissions = [Permissions.add_llc]
        self.mock_session.return_value.category_details = category

        response = self.client.get(url_for('add_land_charge.get_law'))

        calls = [call("Redirecting to: %s", "/add-local-land-charge")]
        mock_current_app.logger.info.assert_has_calls(calls)
        self.assert_status(response, 302)
        self.assertRedirects(response, url_for('add_land_charge.new'))
コード例 #2
0
    def test_get_law_successful(self):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')

        state = LocalLandChargeItem()
        state.geometry = "abc"
        state.charge_type = "Top Level"

        category = Category(name="top-level",
                            display_name="Top Level",
                            sub_categories=[],
                            parent=None,
                            statutory_provisions=["abc", "def", "ghi"],
                            instruments=[])

        self.mock_session.return_value.add_charge_state = state
        self.mock_session.return_value.user.permissions = [Permissions.add_llc]
        self.mock_session.return_value.category_details = category

        response = self.client.get(url_for('add_land_charge.get_law'))

        self.assert_status(response, 200)
        self.assert_template_used('confirm_law.html')
        self.assertIn("Top Level", response.data.decode())
        self.assertIn("abc", response.data.decode())
        self.assertIn("def", response.data.decode())
        self.assertIn("ghi", response.data.decode())
コード例 #3
0
    def test_post_all_laws_success_nojs_charge_date(self, mock_service):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')

        state = LocalLandChargeItem()
        state.geometry = "abc"
        state.charge_type = "Top level"

        category = Category(name="Top Level",
                            display_name="Top Level",
                            sub_categories=[],
                            parent=None,
                            statutory_provisions=[],
                            instruments=["abc"])

        self.mock_session.return_value.add_charge_state = state
        self.mock_session.return_value.user.permissions = [Permissions.add_llc]
        self.mock_session.return_value.category_details = category

        mock_service.get_all_stat_provs.return_value = ["abc", "def"]

        response = self.client.post(url_for('add_land_charge.post_search_law'), data={"legislation-nojs": "abc"})

        self.assert_status(response, 302)
        self.assertRedirects(response, url_for('add_land_charge.get_charge_date'))
コード例 #4
0
    def test_post_law_validation_errors(self):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')

        state = LocalLandChargeItem()
        state.geometry = "abc"
        state.charge_type = "Top Level"

        category = Category(name="top-level",
                            display_name="Top Level",
                            sub_categories=[],
                            parent=None,
                            statutory_provisions=["abc", "def", "ghi"],
                            instruments=[])

        self.mock_session.return_value.add_charge_state = state
        self.mock_session.return_value.user.permissions = [Permissions.add_llc]
        self.mock_session.return_value.category_details = category

        response = self.client.post(url_for('add_land_charge.get_law'), data={"confirm-law-option": None})

        self.assert_status(response, 400)
        self.assert_template_used('confirm_law.html')
        self.assertIn("There are errors on this page", response.data.decode())
        self.assertIn("Choose one option", response.data.decode())
    def test_get_sub_category_success_land_compensation(self, mock_service):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')

        state = LocalLandChargeItem()
        state.geometry = "abc"
        state.charge_type = "Land compensation"

        category = Category(name="Land compensation",
                            display_name="Land compensation",
                            sub_categories=[],
                            parent=None,
                            statutory_provisions=[],
                            instruments=[])

        mock_service.get_category_parent_info.return_value = category

        self.mock_session.return_value.add_charge_state = state
        self.mock_session.return_value.user.permissions = [Permissions.add_llc]

        response = self.client.get(url_for('add_land_charge.get_sub_category'))

        self.assert_status(response, 302)
        self.assertRedirects(response,
                             url_for("add_land_charge.get_all_legal_document"))
    def test_get_sub_category_success(self, mock_service):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')

        state = LocalLandChargeItem()
        state.geometry = "abc"
        state.charge_type = "Top Level"

        sub1 = SubCategory("test1", "Test 1")
        sub2 = SubCategory("test2", "Test 2")

        category = Category(name="top-level",
                            display_name="Top Level",
                            sub_categories=[sub1, sub2],
                            parent=None,
                            statutory_provisions=[],
                            instruments=[])

        mock_service.get_category_parent_info.return_value = category

        self.mock_session.return_value.add_charge_state = state
        self.mock_session.return_value.user.permissions = [Permissions.add_llc]

        response = self.client.get(url_for('add_land_charge.get_sub_category'))

        self.assert_status(response, 200)
        self.assert_template_used('sub_categories.html')
        self.assertIn("top level", response.data.decode())
        self.assertIn("Test 1", response.data.decode())
        self.assertIn("Test 2", response.data.decode())
    def test_post_sub_category_success_no_sub_one_prov_one_instruments_lons(
            self, mock_service):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')

        state = LocalLandChargeItem()
        state.geometry = "abc"
        state.charge_type = "Top Level"

        category = Category(name="Light obstruction notice",
                            display_name="Top Level",
                            sub_categories=[],
                            parent=None,
                            statutory_provisions=["abc"],
                            instruments=["abc"])

        mock_service.get_sub_category_info.return_value = category

        self.mock_session.return_value.add_charge_state = state
        self.mock_session.return_value.user.permissions = [Permissions.add_llc]

        response = self.client.post(
            url_for('add_land_charge.post_sub_category'),
            data={'charge-sub-category': 'Light obstruction notice'})

        self.assert_status(response, 302)
        self.assertRedirects(response, url_for("add_lon.new"))
    def test_post_legal_document_successful_charge_date(self):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')

        state = LocalLandChargeItem()
        state.geometry = "abc"
        state.charge_type = "Charge category"
        state.statutory_provision = "test statutory provision"

        category = Category(name="top-level",
                            display_name="Top Level",
                            sub_categories=[],
                            parent=None,
                            statutory_provisions=[],
                            instruments=["abc", "def", "ghi"])

        self.mock_session.return_value.add_charge_state = state
        self.mock_session.return_value.user.permissions = [Permissions.add_llc]
        self.mock_session.return_value.category_details = category
        self.mock_session.return_value.category_confirmation = False

        response = self.client.post(
            url_for('add_land_charge.get_legal_document'),
            data={"confirm-instrument": "abc"})

        self.assert_status(response, 302)
        self.assertRedirects(response,
                             url_for('add_land_charge.get_charge_date'))
コード例 #9
0
    def get_category_parent_info(category):
        request_path = "{0}/categories/{1}".format(MAINTAIN_API_URL, category)
        current_app.logger.info("Calling search api via this URL: %s",
                                request_path)

        response = g.requests.get(request_path)

        if response.status_code != 200:
            current_app.logger.warning(
                'Failed to retrieve sub categories with status code {}'.format(
                    response.status_code))
            raise ApplicationError('Failed to retrieve sub categories')

        category_details = response.json()

        return Category(
            category_details["name"], category_details["display-name"],
            CategoryService.filter_categories_by_permissions(
                category_details["sub-categories"]),
            category_details["statutory-provisions"],
            category_details["instruments"], None)
コード例 #10
0
    def test_post_law_successful_lon(self):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')

        state = LocalLandChargeItem()
        state.geometry = "abc"
        state.charge_type = "Light obstruction notice"

        category = Category(name="Light obstruction notice",
                            display_name="Top Level",
                            sub_categories=[],
                            parent=None,
                            statutory_provisions=["abc", "def", "ghi"],
                            instruments=["abc"])

        self.mock_session.return_value.add_charge_state = state
        self.mock_session.return_value.user.permissions = [Permissions.add_llc]
        self.mock_session.return_value.category_details = category

        response = self.client.post(url_for('add_land_charge.get_law'), data={"confirm-law-option": "abc"})

        self.assert_status(response, 302)
        self.assertRedirects(response, url_for('add_lon.new'))
コード例 #11
0
 def populate_state(self):
     """Populates the add charge from session state."""
     current_app.logger.info(
         "Method called, getting session state from session api")
     response = SessionAPIService.get_session_state(
         self.session_key, Session.session_state_key)
     if response is not None:
         current_app.logger.info("Non-empty session state contents")
         if 'add_charge_state' in response:
             current_app.logger.info("add_charge_state in session state")
             self.add_charge_state = LocalLandChargeItem.from_json(
                 response['add_charge_state'])
         if 'add_lon_charge_state' in response:
             current_app.logger.info(
                 "add_lon_charge_state in session state")
             self.add_lon_charge_state = LightObstructionNoticeItem.from_json(
                 response['add_lon_charge_state'])
         if 'last_created_charge' in response:
             current_app.logger.info("last_created_charge in session state")
             self.last_created_charge = LastCreatedCharge.from_dict(
                 response['last_created_charge'])
         if 'statutory_provision_list' in response:
             current_app.logger.info(
                 "statutory_provision_list in session state")
             self.statutory_provision_list = response[
                 'statutory_provision_list']
         if 'edited_fields' in response:
             current_app.logger.info("edited_fields in session state")
             self.edited_fields = response['edited_fields']
         if 'llc1_state' in response:
             current_app.logger.info("llc1_state in session state")
             self.llc1_state = LLC1Search.from_json(response['llc1_state'])
         if 'redirect_route' in response:
             current_app.logger.info('redirect_route in session state')
             self.redirect_route = response['redirect_route']
         if 'search_extent' in response:
             current_app.logger.info('search_extent in session state')
             self.search_extent = response['search_extent']
         if 'filenames' in response:
             current_app.logger.info('filenames in session state')
             self.filenames = response['filenames']
         if 'previously_selected_address' in response:
             current_app.logger.info(
                 'previously_selected_address in session state')
             self.previously_selected_address = response[
                 'previously_selected_address']
         if 'adding_charge_for_other_authority' in response:
             current_app.logger.info(
                 'adding_charge_for_other_authority in session state')
             self.adding_charge_for_other_authority = response[
                 'adding_charge_for_other_authority']
         if 'submit_token' in response:
             current_app.logger.info('submit token in session state')
             self.submit_token = response['submit_token']
         if 'upload_shapefile_processed' in response:
             current_app.logger.info(
                 'upload_shapefile_processed in session state')
             self.upload_shapefile_processed = response[
                 'upload_shapefile_processed']
         if 'category_details' in response:
             self.category_details = Category.from_dict(
                 response['category_details'])
         if 'category_confirmation' in response:
             self.category_confirmation = response['category_confirmation']
         if 'charge_added_outside_users_authority' in response:
             self.charge_added_outside_users_authority = response[
                 'charge_added_outside_users_authority']
         if 'other_authority_update_permission' in response:
             self.other_authority_update_permission = response[
                 'other_authority_update_permission']
         if 'other_authority_cancel_permission' in response:
             self.other_authority_cancel_permission = response[
                 'other_authority_cancel_permission']
         if 'source_information' in response:
             self.source_information = response['source_information']
         if 'source_information_id' in response:
             self.source_information_id = response['source_information_id']
         if 'send_payment_link_info' in response:
             current_app.logger.info(
                 "send_payment_link_info in session state")
             self.send_payment_link_info = PaymentLink.from_json(
                 response['send_payment_link_info'])
         if 'payment_info' in response:
             current_app.logger.info("payment_info in session state")
             self.payment_info = PaymentInfo.from_json(
                 response['payment_info'])
         if 'search_details' in response:
             self.search_details = SearchDetails.from_json(
                 response['search_details'])
コード例 #12
0
    def test_value_set(self):
        search_extent_geo = {
            'features': [{
                'geometry': {
                    'coordinates': [[[-378838.7455502291, 6966202.685233321],
                                     [159887.69930341933, 6965138.008464836],
                                     [177987.20436767233, 6568013.573819755],
                                     [-456560.1496496685, 6562690.189977327],
                                     [-378838.7455502291, 6966202.685233321]]]
                }
            }]
        }

        category_obj = Category(name="top-level",
                                display_name="Top Level",
                                sub_categories=[],
                                parent=None,
                                statutory_provisions=[],
                                instruments=[])

        add_lon_charge_state_obj = LightObstructionNoticeItem()
        llc1_state_obj = LLC1Search()
        last_created_charge_obj = LastCreatedCharge()

        with main.app.test_request_context():
            user = User()
            user.id = 'id'
            user.first_name = 'joe'
            user.surname = 'bloggs'
            user.organisation = 'testorg'
            user.roles = ['testrole']
            user.status = 'Active'
            user.email = 'username'

            state = LocalLandChargeItem()

            state.statutory_provision = "test_provision"
            state.charge_geographic_description = "test_geo_location"
            state.expiry_date = date(2011, 1, 1)
            state.further_information_location = "test_fi_location"
            state.further_information_reference = "test_fi_reference"

            sess = Session('abc')
            sess.user = user
            sess.add_charge_state = state
            sess.redirect_route = 'some route for redirection'
            sess.two_factor_authentication_passed = True
            sess.two_factor_authentication_code = 123
            sess.two_factor_authentication_redirect_url = 'redirect url'
            sess.two_factor_authentication_generation_time = 'generation time'
            sess.two_factor_authentication_invalid_attempts = 0

            sess.add_lon_charge_state = add_lon_charge_state_obj
            sess.llc1_state = llc1_state_obj
            sess.last_created_charge = last_created_charge_obj
            sess.statutory_provision_list = 'statutory provision list'
            sess.edited_fields = ['field']
            sess.search_extent = search_extent_geo
            sess.filenames = {
                'form_a': '',
                'temporary_lon_cert': '',
                'definitive_lon_cert': ''
            }
            sess.previously_selected_address = {
                "address": "previously selected address"
            }
            sess.adding_charge_for_other_authority = False
            sess.submit_token = 'a submit token'
            sess.category_details = category_obj
            sess.category_confirmation = True
            sess.upload_shapefile_processed = True
            sess.charge_added_outside_users_authority = True
            sess.other_authority_update_permission = True
            sess.other_authority_cancel_permission = True

            g.trace_id = "test_id"

            self.assertIsNotNone(sess)

            result = sess.to_dict()

            self.assertEqual(result['add_charge_state']['statutory-provision'],
                             "test_provision")
            self.assertEqual(
                result['add_charge_state']['charge-geographic-description'],
                "test_geo_location")
            self.assertEqual(result['add_charge_state']['expiry-date'],
                             "2011-01-01")
            self.assertEqual(
                result['add_charge_state']['further-information-location'],
                "test_fi_location")
            self.assertEqual(
                result['add_charge_state']['further-information-reference'],
                "test_fi_reference")
            self.assertEqual(result['redirect_route'],
                             'some route for redirection')
            self.assertEqual(result['add_lon_charge_state'],
                             add_lon_charge_state_obj.to_json())
            self.assertEqual(result['llc1_state'], llc1_state_obj.to_json())
            self.assertEqual(result['last_created_charge'],
                             last_created_charge_obj.__dict__)
            self.assertEqual(result['statutory_provision_list'],
                             'statutory provision list')
            self.assertEqual(result['edited_fields'], ['field'])
            self.assertEqual(result['search_extent'], search_extent_geo)
            self.assertEqual(result['filenames'], {
                'form_a': '',
                'temporary_lon_cert': '',
                'definitive_lon_cert': ''
            })
            self.assertEqual(result['previously_selected_address'],
                             {"address": "previously selected address"})
            self.assertEqual(result['submit_token'], 'a submit token')
            self.assertEqual(result['category_details'],
                             category_obj.to_json())
            self.assertEqual(result['category_confirmation'], True)
            self.assertEqual(result['upload_shapefile_processed'], True)
            self.assertEqual(result['charge_added_outside_users_authority'],
                             True)
            self.assertEqual(result['other_authority_update_permission'], True)
            self.assertEqual(result['other_authority_cancel_permission'], True)

            two_factor_authentication_result = sess.two_factor_authentication_to_dict(
            )

            self.assertEqual(
                two_factor_authentication_result[
                    'two_factor_authentication_passed'], True)
            self.assertEqual(
                two_factor_authentication_result[
                    'two_factor_authentication_code'], 123)
            self.assertEqual(
                two_factor_authentication_result[
                    'two_factor_authentication_redirect_url'], 'redirect url')
            self.assertEqual(
                two_factor_authentication_result[
                    'two_factor_authentication_generation_time'],
                'generation time')
            self.assertEqual(
                two_factor_authentication_result[
                    'two_factor_authentication_invalid_attempts'], 0)