Mercurial > gemma
view schema/gemma_tests.sql @ 5025:4c658a8f34da
Fix row level security policies for waterway admin
Since 'staging_done OR' was added to the conditions to improve
performance for read access, it was also allowed to delete and partly
update entries with staging_done set to true but otherwise being
outside the country of the respective waterway admin. Using an extra
policy for each command and using the 'staging_done OR' tweak only
FOR SELECT should fix authorization while keeping performance.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 18 Mar 2020 12:16:42 +0100 |
parents | cf25b23e3eec |
children | e21cbb9768a2 |
line wrap: on
line source
-- This is Free Software under GNU Affero General Public License v >= 3.0 -- without warranty, see README.md and license for details. -- SPDX-License-Identifier: AGPL-3.0-or-later -- License-Filename: LICENSES/AGPL-3.0.txt -- Copyright (C) 2019 by via donau -- – Österreichische Wasserstraßen-Gesellschaft mbH -- Software engineering by Intevation GmbH -- Author(s): -- * Tom Gottfried <tom@intevation.de> -- -- pgTAP test script for gemma schema definition -- SELECT ok(is_valid_from_item('SELECT * FROM sys_admin.published_services'), 'Valid statement passes check'); SELECT ok(NOT is_valid_from_item('This is not SQL'), 'Arbitrary text does not pass check'); SELECT ok(is_valid_from_item(NULL) IS NULL, 'NULL value is not checked'); SELECT throws_ok($$ INSERT INTO waterway.waterway_axis (wtwaxs, objnam) VALUES (ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'), 'test'), (ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'), 'test') $$, 23505, NULL, 'No duplicate geometries can be inserted into waterway_axis'); SELECT lives_ok($$ INSERT INTO waterway.waterway_axis (wtwaxs, objnam, validity) VALUES ( ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'), 'test', tstzrange(NULL, current_timestamp) ), ( ST_GeogFromText('MULTILINESTRING((0 0, 1 1))'), 'test', tstzrange(current_timestamp, NULL) ) $$, 'Duplicate axis geometries can be inserted if validity differs'); SELECT throws_ok($$ INSERT INTO waterway.waterway_area (area) VALUES (ST_GeogFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')), (ST_GeogFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')) $$, 23505, NULL, 'No duplicate geometries can be inserted into waterway_area');