aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/resources/ResourceManager.class.php31
-rw-r--r--tests/functional/lib/models/resources/BuildingTest.php2
-rw-r--r--tests/functional/lib/models/resources/LocationTest.php2
-rw-r--r--tests/functional/lib/models/resources/ResourceAssignmentTest.php2
-rw-r--r--tests/functional/lib/models/resources/ResourceCategoryTest.php2
-rw-r--r--tests/functional/lib/models/resources/ResourceTest.php2
-rw-r--r--tests/functional/lib/models/resources/RoomTest.php2
-rw-r--r--tests/functional/lib/resources/ResourceManagerTest.php144
8 files changed, 44 insertions, 143 deletions
diff --git a/lib/resources/ResourceManager.class.php b/lib/resources/ResourceManager.class.php
index e0d9466..13588a4 100644
--- a/lib/resources/ResourceManager.class.php
+++ b/lib/resources/ResourceManager.class.php
@@ -534,6 +534,24 @@ class ResourceManager
}
}
+ /**
+ * Check if the coordinate are in appropriate CRSWGS_84 format.
+ *
+ * - latitude: up to 2 digits, decimal point, 1 to 10 digits for fraction
+ * - longitude: up to 3 digits, decimal point, 1 to 10 digits for fraction
+ * - altitude: up to 5 digits, decimal point, 1 to 10 digits for fraction
+ *
+ * @param string $coordinate_string
+ * @return bool
+ */
+ public static function validateCoordinates(string $coordinate_string): bool
+ {
+ return preg_match(
+ ResourcePropertyDefinition::CRSWGS84_REGEX,
+ $coordinate_string
+ );
+ }
+
// Static methods for position properties:
@@ -557,17 +575,8 @@ class ResourceManager
$coordinate_string = $property->state;
- //Check, if the coordinate string ends with "CRSWGS_84/"
- //and if all the numbers are in the appropriate format:
- //- latitude: up to 2 digits, decimal point, 1 to 10 digits for fraction
- //- longitude: up to 3 digits, decimal point, 1 to 10 digits for fraction
- //- altitude: up to 5 digits, decimal point, 1 to 10 digits for fraction
- //before the decimal point. After the decimal point,
- //In that case it is a coordinate format we can parse:
- if(!preg_match(
- ResourcePropertyDefinition::CRSWGS84_REGEX,
- $coordinate_string
- )) {
+ // Show error message when coordinates are invalid
+ if (!self::validateCoordinates($coordinate_string)) {
PageLayout::postError(_('Die Positionsangabe kann nicht umgewandelt werden, da sie ungültige Daten enthält!'));
}
diff --git a/tests/functional/lib/models/resources/BuildingTest.php b/tests/functional/lib/models/resources/BuildingTest.php
index c3f4e82..109cccb 100644
--- a/tests/functional/lib/models/resources/BuildingTest.php
+++ b/tests/functional/lib/models/resources/BuildingTest.php
@@ -46,7 +46,7 @@ class BuildingTest extends \Codeception\Test\Unit
// Workaround old-style Stud.IP-API using $GLOBALS['user']
$this->oldUser = $GLOBALS['user'];
$GLOBALS['user'] = new \Seminar_User(
- \User::build(['user_id' => 'cli', 'username' => 'cli', 'perms' => 'autor'], false)
+ \User::findByUsername('root@studip')
);
//As a final step we create the SORM objects for our test cases:
diff --git a/tests/functional/lib/models/resources/LocationTest.php b/tests/functional/lib/models/resources/LocationTest.php
index ba18e7e..97b139c 100644
--- a/tests/functional/lib/models/resources/LocationTest.php
+++ b/tests/functional/lib/models/resources/LocationTest.php
@@ -49,7 +49,7 @@ class LocationTest extends \Codeception\Test\Unit
// Workaround old-style Stud.IP-API using $GLOBALS['user']
$this->oldUser = $GLOBALS['user'];
$GLOBALS['user'] = new \Seminar_User(
- \User::build(['user_id' => 'cli', 'username' => 'cli', 'perms' => 'autor'], false)
+ \User::findByUsername('root@studip')
);
//As a final step we create the SORM objects for our test cases:
diff --git a/tests/functional/lib/models/resources/ResourceAssignmentTest.php b/tests/functional/lib/models/resources/ResourceAssignmentTest.php
index 78b71f8..f1a6a6c 100644
--- a/tests/functional/lib/models/resources/ResourceAssignmentTest.php
+++ b/tests/functional/lib/models/resources/ResourceAssignmentTest.php
@@ -47,7 +47,7 @@ class ResourceAssignmentTest extends \Codeception\Test\Unit
// Workaround old-style Stud.IP-API using $GLOBALS['user']
$this->oldUser = $GLOBALS['user'];
$GLOBALS['user'] = new \Seminar_User(
- \User::build(['user_id' => 'cli', 'username' => 'cli', 'perms' => 'root'], false)
+ \User::findByUsername('root@studip')
);
$this->oldPerm = $GLOBALS['perm'];
$GLOBALS['perm'] = new \Seminar_Perm();
diff --git a/tests/functional/lib/models/resources/ResourceCategoryTest.php b/tests/functional/lib/models/resources/ResourceCategoryTest.php
index 1042508..59e97c6 100644
--- a/tests/functional/lib/models/resources/ResourceCategoryTest.php
+++ b/tests/functional/lib/models/resources/ResourceCategoryTest.php
@@ -159,7 +159,7 @@ class ResourceCategoryTest extends \Codeception\Test\Unit
$def = new ResourcePropertyDefinition();
$def->name = 'test';
- $def->type = 'unknown';
+ $def->type = 'bool';
$def->store();
$prop = $resource_cat->addProperty(
diff --git a/tests/functional/lib/models/resources/ResourceTest.php b/tests/functional/lib/models/resources/ResourceTest.php
index 24b8b56..86c46f9 100644
--- a/tests/functional/lib/models/resources/ResourceTest.php
+++ b/tests/functional/lib/models/resources/ResourceTest.php
@@ -28,7 +28,7 @@ class ResourceTest extends \Codeception\Test\Unit
// Workaround old-style Stud.IP-API using $GLOBALS['user']
$this->oldUser = $GLOBALS['user'];
$GLOBALS['user'] = new \Seminar_User(
- \User::build(['user_id' => 'cli', 'username' => 'cli', 'perms' => 'root'], false)
+ \User::findByUsername('root@studip')
);
$this->oldPerm = $GLOBALS['perm'];
$GLOBALS['perm'] = new \Seminar_Perm();
diff --git a/tests/functional/lib/models/resources/RoomTest.php b/tests/functional/lib/models/resources/RoomTest.php
index 1d689ca..baf6573 100644
--- a/tests/functional/lib/models/resources/RoomTest.php
+++ b/tests/functional/lib/models/resources/RoomTest.php
@@ -49,7 +49,7 @@ class RoomTest extends \Codeception\Test\Unit
// Workaround old-style Stud.IP-API using $GLOBALS['user']
$this->oldUser = $GLOBALS['user'];
$GLOBALS['user'] = new \Seminar_User(
- \User::build(['user_id' => 'cli', 'username' => 'cli', 'perms' => 'root'], false)
+ \User::findByUsername('root@studip')
);
$this->oldPerm = $GLOBALS['perm'];
$GLOBALS['perm'] = new \Seminar_Perm();
diff --git a/tests/functional/lib/resources/ResourceManagerTest.php b/tests/functional/lib/resources/ResourceManagerTest.php
index 8eb309c..5b65c3b 100644
--- a/tests/functional/lib/resources/ResourceManagerTest.php
+++ b/tests/functional/lib/resources/ResourceManagerTest.php
@@ -29,7 +29,7 @@ class ResourceManagerTest extends \Codeception\Test\Unit
// Workaround old-style Stud.IP-API using $GLOBALS['user']
$this->oldUser = $GLOBALS['user'];
$GLOBALS['user'] = new \Seminar_User(
- \User::build(['user_id' => 'cli', 'username' => 'cli', 'perms' => 'autor'], false)
+ \User::findByUsername('root@studip')
);
//As a final step we create the SORM objects for our test cases:
@@ -299,139 +299,31 @@ class ResourceManagerTest extends \Codeception\Test\Unit
);
}
- public function testEmptyPositionState()
+ /**
+ * @dataProvider coordinateProvider
+ */
+ public function testCoordinatesValidation($coordinates)
{
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->getId();
- $position->property_id = $this->position_def->id;
- $position->state = '';
-
- ResourceManager::getPositionArray($position);
- }
-
- public function testBadLatitudePositionState1()
- {
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->getId();
- $position->property_id = $this->position_def->id;
- $position->state = '14.29302-31.28323-5.292CRSWGS_84/';
-
- ResourceManager::getPositionArray($position);
+ $this->assertFalse(ResourceManager::validateCoordinates($coordinates));
}
- public function testBadLatitudePositionState2()
+ public static function coordinateProvider(): array
{
- $this->expectException(ResourcePropertyStateException::class);
- $position = new ResourceProperty();
- $position->getId();
- $position->property_id = $this->position_def->id;
- $position->state = '+14-31.28323-5.292CRSWGS_84/';
+ return [
+ 'empty' => [''],
- ResourceManager::getPositionArray($position);
- }
+ 'bad-latitude-1' => ['14.29302-31.28323-5.292CRSWGS_84/'],
+ 'bad-latitude-2' => ['+14-31.28323-5.292CRSWGS_84/'],
+ 'missing-latitude' => ['-31.28323-5.292CRSWGS_84/'],
- public function testMissingLatitudePositionState()
- {
- $this->expectException(ResourcePropertyStateException::class);
+ 'bad-longitude-1' => ['-14.29302-31-5.292CRSWGS_84/'],
+ 'bad-longitude-2' => ['-14.29302-+31.28323-5.292CRSWGS_84/'],
- $position = new ResourceProperty();
- $position->property_id = $this->position_def->id;
- $position->state = '-31.28323-5.292CRSWGS_84/';
+ 'missing-altitude' => ['-14.29302-31.28323CRSWGS_84/'],
- ResourceManager::getPositionArray($position);
+ 'bad-suffix' => ['-14.29302-31.28323-5.292CRSWGS_84'],
+ 'missing-suffix' => ['-14.29302-31.28323-5.292'],
+ ];
}
-
- public function testBadLongitudePositionState1()
- {
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->property_id = $this->position_def->id;
- $position->state = '-14.29302-31-5.292CRSWGS_84/';
-
- ResourceManager::getPositionArray($position);
- }
-
- public function testBadLongitudePositionState2()
- {
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->property_id = $this->position_def->id;
- $position->state = '-14.29302-+31.28323-5.292CRSWGS_84/';
-
- ResourceManager::getPositionArray($position);
- }
-
- public function testMissingLongitudePositionState()
- {
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->property_id = $this->position_def->id;
- $position->state = '-14.29302--5.292CRSWGS_84/';
-
- ResourceManager::getPositionArray($position);
- }
-
- public function testBadAltitudePositionState1()
- {
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->property_id = $this->position_def->id;
- $position->state = '-14.29302-31.28323-+5.292CRSWGS_84/';
-
- ResourceManager::getPositionArray($position);
- }
-
- public function testBadAltitudePositionState2()
- {
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->property_id = $this->position_def->id;
- $position->state = '-14.29302-31.28323+5292CRSWGS_84/';
-
- ResourceManager::getPositionArray($position);
- }
-
- public function testMissingAltitudePositionState()
- {
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->property_id = $this->position_def->id;
- $position->state = '-14.29302-31.28323CRSWGS_84/';
-
- ResourceManager::getPositionArray($position);
- }
-
- public function testBadSuffixPositionState()
- {
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->property_id = $this->position_def->id;
- $position->state = '-14.29302-31.28323-5.292CRSWGS_84';
-
- ResourceManager::getPositionArray($position);
- }
-
- public function testMissingSuffixPositionState()
- {
- $this->expectException(ResourcePropertyStateException::class);
-
- $position = new ResourceProperty();
- $position->property_id = $this->position_def->id;
- $position->state = '-14.29302-31.28323-5.292';
-
- ResourceManager::getPositionArray($position);
- }
-
}