Commit b690fe78 authored by Tobias Munk's avatar Tobias Munk

Merge commit '013b9eda' into feature/prepare-4.3

# Conflicts:
#	tests/codeception/_support/_generated/AcceptanceTesterActions.php
parents d979a751 013b9eda
Pipeline #8454 failed with stages
......@@ -33,9 +33,9 @@ DOCS_API_PATHS = src,vendor/schmunk42,vendor/dmstr,vendor/codemix
#DB_PORT_3306_TCP_PORT = 3306
# Usage with tutum/mariadb and auto-setup of the database (works with external connections)
DB_ENV_MYSQL_DATABASE = dev-${APP_NAME}
DB_ENV_MYSQL_ROOT_USER = admin
DB_ENV_MYSQL_ROOT_PASSWORD = "${DB_ENV_MARIADB_PASS}"
DB_ENV_MYSQL_DATABASE = ${APP_NAME}
DB_ENV_MYSQL_USER = ${APP_NAME}
DB_ENV_MYSQL_PASSWORD = dev123
......
......@@ -56,7 +56,11 @@ lint:
stage: test_pre
script:
- make diagnose
- set +e
- bash build/scripts/lint.sh
- set -e
- cp -r tests/_metrics/ /tmp/${BUILD_PREFIX}/${CI_BUILD_NAME} || EXIT_CODE=$?
- exit ${EXIT_CODE}
allow_failure: true
except:
- tags
......
......@@ -28,8 +28,8 @@ docker-compose run --rm php climb || EXIT_CODE=1
docker-compose run --rm php vendor/bin/php-cs-fixer fix --dry-run --format=txt -v src || EXIT_CODE=1
docker run --rm -v "${PWD}:/project" jolicode/phaudit phploc src/
docker run --rm -v "${PWD}:/project" jolicode/phaudit phpcpd src/
docker run --rm -v "${PWD}:/project" jolicode/phaudit phpdcd src/
docker run --rm -v "${PWD}:/project" jolicode/phaudit phpmetrics src/
docker run --rm -v "${PWD}:/project" jolicode/phaudit phpmd src text cleancode,codesize,controversial,design,naming,unusedcode
docker run --rm -v "${PWD}:/project" jolicode/phaudit phpmetrics --report-html=tests/_metrics/report.html src/
# shell scripts
docker run --rm -v "${PWD}/build/scripts/lint.sh:/tmp/FileToBeChecked" chrisdaish/shellcheck || EXIT_CODE=1
......
......@@ -7,8 +7,6 @@ make TEST setup up
set +e
set -v
make TEST run-tests codecept_opts='functional allow_fail --html=_report_allow_fail_functional.html' || EXIT_CODE=1
make TEST run-tests codecept_opts='acceptance allow_fail --html=_report_allow_fail_acceptance.html' || EXIT_CODE=1
make TEST run-tests codecept_opts='unit,functional,acceptance -g optional --html=_report_optional.html' || EXIT_CODE=1
set -e
exit ${EXIT_CODE}
......@@ -10,8 +10,7 @@ make TEST clean-tests
set -v
set +e
make TEST run-tests codecept_opts='unit prod --html=_report_unit.html' || EXIT_CODE=1
make TEST run-tests codecept_opts='functional prod --html=_report_functional.html' || EXIT_CODE=1
make TEST run-tests codecept_opts='acceptance prod --html=_report_acceptance.html' || EXIT_CODE=1
make TEST run-tests codecept_opts='unit,functional,acceptance -g mandatory --html=_report_mandatory.html' || EXIT_CODE=1
exit ${EXIT_CODE}
......@@ -30,9 +30,10 @@
},
"minimum-stability": "stable",
"require": {
"dmstr/yii2-cms-metapackage": "^3.2.0",
"dmstr/yii2-pages-module": "0.12.0-beta2",
"dmstr/yii2-cms-metapackage": "dev-master",
"vlucas/phpdotenv": "2.*",
"yiisoft/yii2": "~2.0.6"
"yiisoft/yii2": "^2.0.7"
},
"require-dev": {
"dmstr/yii2-cms-dev-metapackage": "~1.0"
......
......@@ -4,21 +4,21 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "8d549abfc000e8e4a7b4c5d1f9804604",
"content-hash": "676445a5ed2d2ba70a380319aa4d8d23",
"hash": "7097c23a2558459199818aab0ae05847",
"content-hash": "2e6c8208f40d55367fcc45ba8248616a",
"packages": [
{
"name": "almasaeed2010/adminlte",
"version": "v2.3.2",
"version": "v2.3.3",
"source": {
"type": "git",
"url": "https://github.com/almasaeed2010/AdminLTE.git",
"reference": "1ee281b3b99e8d8cccdc72fb8437c6888149cb46"
"reference": "8db979795044412a2e2b4e9659788c23cb59fcd3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/almasaeed2010/AdminLTE/zipball/1ee281b3b99e8d8cccdc72fb8437c6888149cb46",
"reference": "1ee281b3b99e8d8cccdc72fb8437c6888149cb46",
"url": "https://api.github.com/repos/almasaeed2010/AdminLTE/zipball/8db979795044412a2e2b4e9659788c23cb59fcd3",
"reference": "8db979795044412a2e2b4e9659788c23cb59fcd3",
"shasum": ""
},
"type": "library",
......@@ -45,7 +45,7 @@
"theme",
"web"
],
"time": "2015-10-23 14:50:49"
"time": "2016-03-24 14:31:41"
},
{
"name": "bower-asset/ace-builds",
......@@ -658,16 +658,16 @@
},
{
"name": "dektrium/yii2-user",
"version": "v0.9.5",
"version": "0.9.6",
"source": {
"type": "git",
"url": "https://github.com/dektrium/yii2-user.git",
"reference": "84100e0e63e2052ef4ddd12f1840dfd092446e23"
"reference": "ae737861ff170b9c4376b274244bd9994ee0d248"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dektrium/yii2-user/zipball/84100e0e63e2052ef4ddd12f1840dfd092446e23",
"reference": "84100e0e63e2052ef4ddd12f1840dfd092446e23",
"url": "https://api.github.com/repos/dektrium/yii2-user/zipball/ae737861ff170b9c4376b274244bd9994ee0d248",
"reference": "ae737861ff170b9c4376b274244bd9994ee0d248",
"shasum": ""
},
"require": {
......@@ -717,7 +717,7 @@
"yii2",
"yii2-user"
],
"time": "2015-09-27 14:49:11"
"time": "2016-03-27 18:09:10"
},
{
"name": "devgroup/yii2-jsoneditor",
......@@ -870,24 +870,24 @@
},
{
"name": "dmstr/yii2-cms-metapackage",
"version": "3.2.0",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/dmstr/yii2-cms-metapackage.git",
"reference": "458154babde02ae0781e34fbe3602a896741bfc7"
"reference": "dcdf3e81614c626a1e27f30f152fd1b769d127e7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dmstr/yii2-cms-metapackage/zipball/458154babde02ae0781e34fbe3602a896741bfc7",
"reference": "458154babde02ae0781e34fbe3602a896741bfc7",
"url": "https://api.github.com/repos/dmstr/yii2-cms-metapackage/zipball/dcdf3e81614c626a1e27f30f152fd1b769d127e7",
"reference": "dcdf3e81614c626a1e27f30f152fd1b769d127e7",
"shasum": ""
},
"require": {
"dektrium/yii2-rbac": "~0.2",
"dektrium/yii2-user": "^0.9.5",
"dektrium/yii2-user": "^0.9.6",
"dmstr/yii2-adminlte-asset": "^2.2.4",
"dmstr/yii2-libs-metapackage": "~0.1",
"dmstr/yii2-pages-module": "^0.11.3 || ~0.12",
"dmstr/yii2-pages-module": "0.12.0-beta2",
"dmstr/yii2-prototype-module": "~0.0",
"insolita/yii2-adminlte-widgets": "~1.1",
"lajax/yii2-translate-manager": "^1.5.1",
......@@ -906,7 +906,7 @@
}
],
"description": "Content Management Extensions for Phundament 4 (Yii 2.0 Framework)",
"time": "2016-03-04 18:12:12"
"time": "2016-03-29 08:21:42"
},
{
"name": "dmstr/yii2-db",
......@@ -1074,16 +1074,16 @@
},
{
"name": "dmstr/yii2-pages-module",
"version": "0.11.3",
"version": "0.12.0-beta2",
"source": {
"type": "git",
"url": "https://github.com/dmstr/yii2-pages-module.git",
"reference": "6407f5dffd8d321ceeba2237678541c68e189494"
"reference": "07cd7404c7cd757f2a8a9629e8e348149b4b8f74"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dmstr/yii2-pages-module/zipball/6407f5dffd8d321ceeba2237678541c68e189494",
"reference": "6407f5dffd8d321ceeba2237678541c68e189494",
"url": "https://api.github.com/repos/dmstr/yii2-pages-module/zipball/07cd7404c7cd757f2a8a9629e8e348149b4b8f74",
"reference": "07cd7404c7cd757f2a8a9629e8e348149b4b8f74",
"shasum": ""
},
"require": {
......@@ -1091,7 +1091,7 @@
"kartik-v/yii2-tree-manager": "~1.0.3",
"kartik-v/yii2-widget-select2": "^2.0.1",
"rmrevin/yii2-fontawesome": "~2.9",
"yiisoft/yii2": "2.0.*"
"yiisoft/yii2": "^2.0.6"
},
"type": "yii2-extension",
"extra": {
......@@ -1123,7 +1123,7 @@
"navigation",
"yii2"
],
"time": "2016-02-05 09:10:28"
"time": "2016-03-23 20:52:43"
},
{
"name": "dmstr/yii2-prototype-module",
......@@ -3772,7 +3772,10 @@
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"stability-flags": {
"dmstr/yii2-pages-module": 10,
"dmstr/yii2-cms-metapackage": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
......
......@@ -21,6 +21,11 @@ class User extends \yii\web\User
{
const PUBLIC_ROLE = 'Public';
/**
* @var array Users with all permissions
*/
public $rootUsers = [];
/**
* Extended permission check with `Guest` role and `route`.
*
......@@ -33,7 +38,8 @@ class User extends \yii\web\User
public function can($permissionName, $params = [], $allowCaching = true)
{
switch (true) {
case \Yii::$app->user->identity && \Yii::$app->user->identity->isAdmin:
// root users have all permissions
case \Yii::$app->user->identity && in_array(\Yii::$app->user->identity->username, $this->rootUsers):
return true;
break;
case !empty($params['route']):
......
......@@ -90,6 +90,7 @@ $common = [
'enableAutoLogin' => true,
'loginUrl' => ['/user/security/login'],
'identityClass' => 'dektrium\user\models\User',
'rootUsers' => ['admin'],
],
'view' => [
'theme' => [
......@@ -121,8 +122,7 @@ $common = [
'class' => 'dektrium\user\Module',
'layout' => '@app/views/layouts/container',
'defaultRoute' => 'profile',
'admins' => ['admin'],
// TODO: supported from 0.9.6 --- 'roles' => ['user-module'],
'adminPermission' => 'user-module',
'enableFlashMessages' => false,
],
'rbac' => [
......@@ -154,6 +154,7 @@ $common = [
'params' => [
'adminEmail' => getenv('APP_ADMIN_EMAIL'),
'yii.migrations' => [
getenv('APP_MIGRATION_LOOKUP'),
'@yii/rbac/migrations',
'@dektrium/user/migrations',
'@vendor/lajax/yii2-translate-manager/migrations',
......
......@@ -20,52 +20,5 @@ use yii\helpers\ArrayHelper;
*/
class Module extends \yii\base\Module
{
public function getMenuItems()
{
$menuItemPresets = [
'admin' => ['label' => '<i class="fa fa-dashboard"></i> <span>Dashboard</span>', 'url' => ['/admin']],
'user' => ['label' => '<i class="fa fa-users"></i> <span>Users</span>', 'url' => ['/user/admin']],
'packaii' => ['label' => '<i class="fa fa-cubes"></i> <span>Packages</span>', 'url' => ['/packaii']],
'gii' => ['label' => '<i class="fa fa-code"></i> <span>Code Generation</span>', 'url' => ['/gii']],
];
$autoMenuItems = [];
foreach (\Yii::$app->getModules() as $name => $m) {
switch ($name) {
case 'admin':
case 'user':
case 'packaii':
case 'gii':
$menuItems[] = $menuItemPresets[$name];
break;
default:
$module = \Yii::$app->getModule($name);
$autoMenuItems[] = [
'label' => '<i class="fa fa-cube"></i> <span>'.ucfirst($name).'</span>',
'url' => ['/'.$module->id],
];
}
}
$menuItems = ArrayHelper::merge($menuItems, $autoMenuItems);
return $menuItems;
}
public function getControllers($module = null)
{
if ($module === null) {
$module = \Yii::$app;
} else {
$module = \Yii::$app->getModule($module);
}
foreach (scandir($module->getControllerPath()) as $i => $name) {
if (substr($name, 0, 1) == '.') {
continue;
}
$controllers[] = \yii\helpers\Inflector::camel2id(str_replace('Controller.php', '', $name));
}
return $controllers;
}
}
......@@ -4,11 +4,11 @@
<div class="small-box bg-blue">
<div class="inner">
<h3>
<?= getenv('APP_NAME') ?>
ID
</h3>
<p>
Go to Frontend
<?= getenv('APP_NAME') ?>
</p>
</div>
<div class="icon">
......
<?php
namespace app\widgets;
/**
* @link http://www.yiiframework.com/
*
......@@ -6,8 +9,6 @@
* @license http://www.yiiframework.com/license/
*/
namespace app\widgets;
/**
* Alert widget renders a message from session flash. All flash messages are displayed
* in the sequence they were assigned using setFlash. You can set message as following:.
......
<?php
// @group mandatory
use tests\codeception\_pages\LoginPage;
$I = new AcceptanceTester($scenario);
......
<?php
// @group mandatory
use tests\codeception\_pages\LoginPage;
$I = new AcceptanceTester($scenario);
......
<?php
// @group mandatory
use tests\codeception\_pages\LoginPage;
$I = new AcceptanceTester($scenario);
......
<?php
// @group mandatory
use tests\codeception\_pages\LoginPage;
$I = new AcceptanceTester($scenario);
......
<?php
// @group mandatory
$I = new AcceptanceTester($scenario);
$I->wantTo('ensure that home page is not visible without login');
......
<?php
// @group mandatory
$I = new AcceptanceTester($scenario);
$I->wantTo('ensure that JavaScript works');
......
<?php
/**
* @link http://www.diemeisterei.de/
* @copyright Copyright (c) 2015 diemeisterei GmbH, Stuttgart
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
// @group mandatory
$I = new AcceptanceTester($scenario);
......
<?php
// @group mandatory
use tests\codeception\_pages\LoginPage;
$I = new AcceptanceTester($scenario);
......
<?php
// @group optional
use tests\codeception\_pages\LoginPage;
$I = new AcceptanceTester($scenario);
......
<?php
/**
* @link http://www.diemeisterei.de/
* @copyright Copyright (c) 2015 diemeisterei GmbH, Stuttgart
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
// @group mandatory
$I = new AcceptanceTester($scenario);
......
<?php
use tests\codeception\_pages\AboutPage;
// @group mandatory
$I = new AcceptanceTester($scenario);
......
<?php
use tests\codeception\_pages\AboutPage;
// @group mandatory
$I = new AcceptanceTester($scenario);
$I->wantTo('ensure that sign-up works');
......
<?php
// @group mandatory
use tests\codeception\_pages\LoginPage;
$I = new AcceptanceTester($scenario);
......
<?php
/**
* @link http://www.diemeisterei.de/
* @copyright Copyright (c) 2015 diemeisterei GmbH, Stuttgart
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
// @group mandatory
use \tests\codeception\_pages\LoginPage;
......
<?php
// @group mandatory
$I = new FunctionalTester($scenario);
$I->wantTo('ensure that access control works');
......
<?php
// @group mandatory
use tests\codeception\_pages\LoginPage;
$I = new FunctionalTester($scenario);
......
<?php
// @group optional
use tests\codeception\_pages\LoginPage;
$I = new FunctionalTester($scenario);
......
<?php
// @group mandatory
$I = new FunctionalTester($scenario);
$I->wantTo('ensure that error page works');
$I->amOnPage('/_this_page_does_not_exist_');
$I->seeResponseCodeIs(404);
$I->see('Not Found');
<?php
// @group optional
$I = new FunctionalTester($scenario);
$I->wantTo('ensure that home page works');
$I->amOnPage(Yii::$app->homeUrl);
......
<?php
// @group mandatory
use tests\codeception\_pages\LoginPage;
$I = new FunctionalTester($scenario);
......
<?php
// @group mandatory
use tests\codeception\_pages\LoginPage;
$I = new FunctionalTester($scenario);
......
<?php
// @group mandatory
$I = new FunctionalTester($scenario);
$I->wantTo('check application versioning');
......
......@@ -15,17 +15,26 @@ class UserTest extends TestCase
parent::setUp();
}
/**
* @group mandatory
*/
public function testUserLogout()
{
$this->assertTrue(\Yii::$app->user->logout());
}
/**
* @group mandatory
*/
public function testUserLogin()
{
$identity = User::findIdentity(1);
$this->assertTrue(\Yii::$app->user->login($identity, 3600));
}
/**
* @group mandatory
*/
public function testNonExistingUserModel()
{
$identity = User::findIdentity(99999);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment