diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..c1e40ed --- /dev/null +++ b/.drone.yml @@ -0,0 +1,73 @@ +workspace: + base: /test + path: oe_registration + +services: + web: + image: fpfis/httpd-php-ci:${PHP_VERSION} + environment: + - DOCUMENT_ROOT=/test/oe_registration + mysql: + image: percona/percona-server:5.6 + environment: + - MYSQL_ALLOW_EMPTY_PASSWORD=yes + +pipeline: + composer-install: + group: prepare + image: fpfis/httpd-php-ci:${PHP_VERSION} + volumes: + - /cache:/cache + commands: + - composer install --ansi --no-suggest --no-progress + + composer-update-lowest: + group: post-prepare + image: fpfis/httpd-php-ci:${PHP_VERSION} + volumes: + - /cache:/cache + commands: + # @todo remove "composer install" step once the following issue is fixed. + # @link https://webgate.ec.europa.eu/CITnet/jira/browse/OPENEUROPA-1234 + - composer update --prefer-lowest --prefer-stable --ansi --no-suggest --no-progress + when: + matrix: + COMPOSER_BOUNDARY: lowest + + site-install: + image: fpfis/httpd-php-ci:${PHP_VERSION} + commands: + - ./vendor/bin/run drupal:site-install + + grumphp: + group: test + image: fpfis/httpd-php-ci:${PHP_VERSION} + commands: + - ./vendor/bin/grumphp run + + phpunit: + group: test + image: fpfis/httpd-php-ci:${PHP_VERSION} + commands: + - ./vendor/bin/phpunit + + behat: + group: test + image: fpfis/httpd-php-ci:${PHP_VERSION} + commands: + - ./vendor/bin/behat --strict + + debug: + image: fpfis/httpd-php-ci:${PHP_VERSION} + commands: + - ./vendor/bin/drush ws --count 500 + when: + status: failure + +matrix: + COMPOSER_BOUNDARY: + - lowest + - highest + PHP_VERSION: + - 7.2 + - 7.3 diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..686c443 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# Drupal editor configuration normalization +# @see http://editorconfig.org/ + +# This is the top-most .editorconfig file; do not search in parent directories. +root = true + +# All files. +[*] +end_of_line = LF +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[composer.{json,lock}] +indent_size = 4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e5155b6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +.DS_Store +.idea +behat.yml +build +composer.lock +docker-compose.*.yml +grumphp.yml +node_modules +npm-debug.log +package-lock.json +phpunit.xml +runner.yml +vendor +yarn.lock +/.gitattributes \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0ef0693 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,53 @@ +# Change Log + +## [0.2.1](https://github.com/openeuropa/drupal-module-template/tree/0.2.1) (2019-06-20) +[Full Changelog](https://github.com/openeuropa/drupal-module-template/compare/0.2.0...0.2.1) + +**Merged pull requests:** + +- OPENEUROPA-627: Add debug section to drone. [\#32](https://github.com/openeuropa/drupal-module-template/pull/32) ([dxvargas](https://github.com/dxvargas)) +- Removing Drupal console. [\#31](https://github.com/openeuropa/drupal-module-template/pull/31) ([upchuk](https://github.com/upchuk)) +- OPENEUROPA-1932: Update drone and composer files. [\#29](https://github.com/openeuropa/drupal-module-template/pull/29) ([voidtek](https://github.com/voidtek)) + +## [0.2.0](https://github.com/openeuropa/drupal-module-template/tree/0.2.0) (2019-05-06) +[Full Changelog](https://github.com/openeuropa/drupal-module-template/compare/0.1.0...0.2.0) + +**Closed issues:** + +- Baseline speed of behat tests [\#10](https://github.com/openeuropa/drupal-module-template/issues/10) + +**Merged pull requests:** + +- OPENEUROPA-1813: Create release 0.2.0. [\#28](https://github.com/openeuropa/drupal-module-template/pull/28) ([voidtek](https://github.com/voidtek)) +- OPENEUROPA-1813: Upgrading to 8.7. [\#27](https://github.com/openeuropa/drupal-module-template/pull/27) ([upchuk](https://github.com/upchuk)) + +## [0.1.0](https://github.com/openeuropa/drupal-module-template/tree/0.1.0) (2019-02-26) +**Closed issues:** + +- Missing extension in .editorconfig [\#20](https://github.com/openeuropa/drupal-module-template/issues/20) +- Fix command to rename drupal\_module\_template.info.yml [\#12](https://github.com/openeuropa/drupal-module-template/issues/12) +- Command `sed -i` fails on OSX [\#9](https://github.com/openeuropa/drupal-module-template/issues/9) + +**Merged pull requests:** + +- OPENEUROPA-1630: Update drupal-module-template with latest practices [\#25](https://github.com/openeuropa/drupal-module-template/pull/25) ([dxvargas](https://github.com/dxvargas)) +- OPENEUROPA-1609: Add ajax\_timeout setting for behat. [\#24](https://github.com/openeuropa/drupal-module-template/pull/24) ([nagyad](https://github.com/nagyad)) +- OPENEUROPA-1609 Fix behat.yml.dist to use drupal-extension properly. [\#23](https://github.com/openeuropa/drupal-module-template/pull/23) ([nagyad](https://github.com/nagyad)) +- OPENEUROPA-1520: Use drupal core. [\#22](https://github.com/openeuropa/drupal-module-template/pull/22) ([imanoleguskiza](https://github.com/imanoleguskiza)) +- OPENEUROPA-1533: Add --strict flag for behat tests. [\#21](https://github.com/openeuropa/drupal-module-template/pull/21) ([sergepavle](https://github.com/sergepavle)) +- OPENEUROPA-1322: Use the proper Docker way of overriding docker-composer.yml file. [\#19](https://github.com/openeuropa/drupal-module-template/pull/19) ([drupol](https://github.com/drupol)) +- OPENEUROPA-1326: Use patched core from drupal-core-require. [\#18](https://github.com/openeuropa/drupal-module-template/pull/18) ([dxvargas](https://github.com/dxvargas)) +- OPENEUROPA-1302: Added site profile and themeing to runner. [\#17](https://github.com/openeuropa/drupal-module-template/pull/17) ([richardcanoe](https://github.com/richardcanoe)) +- OPENEUROPA-1302: Update with latest practices. [\#16](https://github.com/openeuropa/drupal-module-template/pull/16) ([dxvargas](https://github.com/dxvargas)) +- List of repositories in composer manifest should be an array [\#15](https://github.com/openeuropa/drupal-module-template/pull/15) ([pfrenssen](https://github.com/pfrenssen)) +- OPENEUROPA-31: Fix file name in script \(issue \#12\). [\#13](https://github.com/openeuropa/drupal-module-template/pull/13) ([dxvargas](https://github.com/dxvargas)) +- OPENEUROPA-721: Update code-review and grump.yml.dist file. [\#11](https://github.com/openeuropa/drupal-module-template/pull/11) ([imanoleguskiza](https://github.com/imanoleguskiza)) +- OPENEUROPA-369: Make sure that all OpenEuropa projects are released under EUPL-1.2 [\#8](https://github.com/openeuropa/drupal-module-template/pull/8) ([drupol](https://github.com/drupol)) +- OPENEUROPA-582: Port CI to Drone. [\#7](https://github.com/openeuropa/drupal-module-template/pull/7) ([voidtek](https://github.com/voidtek)) +- OPENEUROPA-623: Update to Phpunit 6. [\#6](https://github.com/openeuropa/drupal-module-template/pull/6) ([imanoleguskiza](https://github.com/imanoleguskiza)) +- OPENEUROPA-207: Drupal Module template creation. [\#3](https://github.com/openeuropa/drupal-module-template/pull/3) ([voidtek](https://github.com/voidtek)) +- OPENEUROPA-207: Initiate packagist. [\#2](https://github.com/openeuropa/drupal-module-template/pull/2) ([voidtek](https://github.com/voidtek)) + + + +\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file diff --git a/LICENCE.txt b/LICENCE.txt new file mode 100644 index 0000000..6d8cea4 --- /dev/null +++ b/LICENCE.txt @@ -0,0 +1,190 @@ +EUROPEAN UNION PUBLIC LICENCE v. 1.2 +EUPL © the European Union 2007, 2016 + +This European Union Public Licence (the ‘EUPL’) applies to the Work (as defined below) which is provided under the +terms of this Licence. Any use of the Work, other than as authorised under this Licence is prohibited (to the extent such +use is covered by a right of the copyright holder of the Work). +The Work is provided under the terms of this Licence when the Licensor (as defined below) has placed the following +notice immediately following the copyright notice for the Work: + Licensed under the EUPL +or has expressed by any other means his willingness to license under the EUPL. + +1.Definitions +In this Licence, the following terms have the following meaning: +— ‘The Licence’:this Licence. +— ‘The Original Work’:the work or software distributed or communicated by the Licensor under this Licence, available +as Source Code and also as Executable Code as the case may be. +— ‘Derivative Works’:the works or software that could be created by the Licensee, based upon the Original Work or +modifications thereof. This Licence does not define the extent of modification or dependence on the Original Work +required in order to classify a work as a Derivative Work; this extent is determined by copyright law applicable in +the country mentioned in Article 15. +— ‘The Work’:the Original Work or its Derivative Works. +— ‘The Source Code’:the human-readable form of the Work which is the most convenient for people to study and +modify. +— ‘The Executable Code’:any code which has generally been compiled and which is meant to be interpreted by +a computer as a program. +— ‘The Licensor’:the natural or legal person that distributes or communicates the Work under the Licence. +— ‘Contributor(s)’:any natural or legal person who modifies the Work under the Licence, or otherwise contributes to +the creation of a Derivative Work. +— ‘The Licensee’ or ‘You’:any natural or legal person who makes any usage of the Work under the terms of the +Licence. +— ‘Distribution’ or ‘Communication’:any act of selling, giving, lending, renting, distributing, communicating, +transmitting, or otherwise making available, online or offline, copies of the Work or providing access to its essential +functionalities at the disposal of any other natural or legal person. + +2.Scope of the rights granted by the Licence +The Licensor hereby grants You a worldwide, royalty-free, non-exclusive, sublicensable licence to do the following, for +the duration of copyright vested in the Original Work: +— use the Work in any circumstance and for all usage, +— reproduce the Work, +— modify the Work, and make Derivative Works based upon the Work, +— communicate to the public, including the right to make available or display the Work or copies thereof to the public +and perform publicly, as the case may be, the Work, +— distribute the Work or copies thereof, +— lend and rent the Work or copies thereof, +— sublicense rights in the Work or copies thereof. +Those rights can be exercised on any media, supports and formats, whether now known or later invented, as far as the +applicable law permits so. +In the countries where moral rights apply, the Licensor waives his right to exercise his moral right to the extent allowed +by law in order to make effective the licence of the economic rights here above listed. +The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to any patents held by the Licensor, to the +extent necessary to make use of the rights granted on the Work under this Licence. + +3.Communication of the Source Code +The Licensor may provide the Work either in its Source Code form, or as Executable Code. If the Work is provided as +Executable Code, the Licensor provides in addition a machine-readable copy of the Source Code of the Work along with +each copy of the Work that the Licensor distributes or indicates, in a notice following the copyright notice attached to +the Work, a repository where the Source Code is easily and freely accessible for as long as the Licensor continues to +distribute or communicate the Work. + +4.Limitations on copyright +Nothing in this Licence is intended to deprive the Licensee of the benefits from any exception or limitation to the +exclusive rights of the rights owners in the Work, of the exhaustion of those rights or of other applicable limitations +thereto. + +5.Obligations of the Licensee +The grant of the rights mentioned above is subject to some restrictions and obligations imposed on the Licensee. Those +obligations are the following: + +Attribution right: The Licensee shall keep intact all copyright, patent or trademarks notices and all notices that refer to +the Licence and to the disclaimer of warranties. The Licensee must include a copy of such notices and a copy of the +Licence with every copy of the Work he/she distributes or communicates. The Licensee must cause any Derivative Work +to carry prominent notices stating that the Work has been modified and the date of modification. + +Copyleft clause: If the Licensee distributes or communicates copies of the Original Works or Derivative Works, this +Distribution or Communication will be done under the terms of this Licence or of a later version of this Licence unless +the Original Work is expressly distributed only under this version of the Licence — for example by communicating +‘EUPL v. 1.2 only’. The Licensee (becoming Licensor) cannot offer or impose any additional terms or conditions on the +Work or Derivative Work that alter or restrict the terms of the Licence. + +Compatibility clause: If the Licensee Distributes or Communicates Derivative Works or copies thereof based upon both +the Work and another work licensed under a Compatible Licence, this Distribution or Communication can be done +under the terms of this Compatible Licence. For the sake of this clause, ‘Compatible Licence’ refers to the licences listed +in the appendix attached to this Licence. Should the Licensee's obligations under the Compatible Licence conflict with +his/her obligations under this Licence, the obligations of the Compatible Licence shall prevail. + +Provision of Source Code: When distributing or communicating copies of the Work, the Licensee will provide +a machine-readable copy of the Source Code or indicate a repository where this Source will be easily and freely available +for as long as the Licensee continues to distribute or communicate the Work. +Legal Protection: This Licence does not grant permission to use the trade names, trademarks, service marks, or names +of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and +reproducing the content of the copyright notice. + +6.Chain of Authorship +The original Licensor warrants that the copyright in the Original Work granted hereunder is owned by him/her or +licensed to him/her and that he/she has the power and authority to grant the Licence. +Each Contributor warrants that the copyright in the modifications he/she brings to the Work are owned by him/her or +licensed to him/her and that he/she has the power and authority to grant the Licence. +Each time You accept the Licence, the original Licensor and subsequent Contributors grant You a licence to their contributions +to the Work, under the terms of this Licence. + +7.Disclaimer of Warranty +The Work is a work in progress, which is continuously improved by numerous Contributors. It is not a finished work +and may therefore contain defects or ‘bugs’ inherent to this type of development. +For the above reason, the Work is provided under the Licence on an ‘as is’ basis and without warranties of any kind +concerning the Work, including without limitation merchantability, fitness for a particular purpose, absence of defects or +errors, accuracy, non-infringement of intellectual property rights other than copyright as stated in Article 6 of this +Licence. +This disclaimer of warranty is an essential part of the Licence and a condition for the grant of any rights to the Work. + +8.Disclaimer of Liability +Except in the cases of wilful misconduct or damages directly caused to natural persons, the Licensor will in no event be +liable for any direct or indirect, material or moral, damages of any kind, arising out of the Licence or of the use of the +Work, including without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, loss +of data or any commercial damage, even if the Licensor has been advised of the possibility of such damage. However, +the Licensor will be liable under statutory product liability laws as far such laws apply to the Work. + +9.Additional agreements +While distributing the Work, You may choose to conclude an additional agreement, defining obligations or services +consistent with this Licence. However, if accepting obligations, You may act only on your own behalf and on your sole +responsibility, not on behalf of the original Licensor or any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against such Contributor by +the fact You have accepted any warranty or additional liability. + +10.Acceptance of the Licence +The provisions of this Licence can be accepted by clicking on an icon ‘I agree’ placed under the bottom of a window +displaying the text of this Licence or by affirming consent in any other similar way, in accordance with the rules of +applicable law. Clicking on that icon indicates your clear and irrevocable acceptance of this Licence and all of its terms +and conditions. +Similarly, you irrevocably accept this Licence and all of its terms and conditions by exercising any rights granted to You +by Article 2 of this Licence, such as the use of the Work, the creation by You of a Derivative Work or the Distribution +or Communication by You of the Work or copies thereof. + +11.Information to the public +In case of any Distribution or Communication of the Work by means of electronic communication by You (for example, +by offering to download the Work from a remote location) the distribution channel or media (for example, a website) +must at least provide to the public the information requested by the applicable law regarding the Licensor, the Licence +and the way it may be accessible, concluded, stored and reproduced by the Licensee. + +12.Termination of the Licence +The Licence and the rights granted hereunder will terminate automatically upon any breach by the Licensee of the terms +of the Licence. +Such a termination will not terminate the licences of any person who has received the Work from the Licensee under +the Licence, provided such persons remain in full compliance with the Licence. + +13.Miscellaneous +Without prejudice of Article 9 above, the Licence represents the complete agreement between the Parties as to the +Work. +If any provision of the Licence is invalid or unenforceable under applicable law, this will not affect the validity or +enforceability of the Licence as a whole. Such provision will be construed or reformed so as necessary to make it valid +and enforceable. +The European Commission may publish other linguistic versions or new versions of this Licence or updated versions of +the Appendix, so far this is required and reasonable, without reducing the scope of the rights granted by the Licence. +New versions of the Licence will be published with a unique version number. +All linguistic versions of this Licence, approved by the European Commission, have identical value. Parties can take +advantage of the linguistic version of their choice. + +14.Jurisdiction +Without prejudice to specific agreement between parties, +— any litigation resulting from the interpretation of this License, arising between the European Union institutions, +bodies, offices or agencies, as a Licensor, and any Licensee, will be subject to the jurisdiction of the Court of Justice +of the European Union, as laid down in article 272 of the Treaty on the Functioning of the European Union, +— any litigation arising between other parties and resulting from the interpretation of this License, will be subject to +the exclusive jurisdiction of the competent court where the Licensor resides or conducts its primary business. + +15.Applicable Law +Without prejudice to specific agreement between parties, +— this Licence shall be governed by the law of the European Union Member State where the Licensor has his seat, +resides or has his registered office, +— this licence shall be governed by Belgian law if the Licensor has no seat, residence or registered office inside +a European Union Member State. + + + Appendix + +‘Compatible Licences’ according to Article 5 EUPL are: +— GNU General Public License (GPL) v. 2, v. 3 +— GNU Affero General Public License (AGPL) v. 3 +— Open Software License (OSL) v. 2.1, v. 3.0 +— Eclipse Public License (EPL) v. 1.0 +— CeCILL v. 2.0, v. 2.1 +— Mozilla Public Licence (MPL) v. 2 +— GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3 +— Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for works other than software +— European Union Public Licence (EUPL) v. 1.1, v. 1.2 +— Québec Free and Open-Source Licence — Reciprocity (LiLiQ-R) or Strong Reciprocity (LiLiQ-R+). + +The European Commission may update this Appendix to later versions of the above licences without producing +a new version of the EUPL, as long as they provide the rights granted in Article 2 of this Licence and protect the +covered Source Code from exclusive appropriation. +All other changes or additions to this Appendix require the production of a new EUPL version. diff --git a/README.md b/README.md new file mode 100644 index 0000000..77d37ed --- /dev/null +++ b/README.md @@ -0,0 +1,101 @@ +# OpenEuropa Registration + +The OpenEuropa Registration provides integration with the oe_authentication module. + +## Development setup + +You can build the development site by running the following steps: + +* Install the Composer dependencies: + +```bash +composer install +``` + +A post command hook (`drupal:site-setup`) is triggered automatically after `composer install`. +It will make sure that the necessary symlinks are properly setup in the development site. +It will also perform token substitution in development configuration files such as `behat.yml.dist`. + +* Install test site by running: + +```bash +./vendor/bin/run drupal:site-install +``` + +The development site web root should be available in the `build` directory. + +### Using Docker Compose + +Alternatively, you can build a development site using [Docker](https://www.docker.com/get-docker) and +[Docker Compose](https://docs.docker.com/compose/) with the provided configuration. + +Docker provides the necessary services and tools such as a web server and a database server to get the site running, +regardless of your local host configuration. + +#### Requirements: + +- [Docker](https://www.docker.com/get-docker) +- [Docker Compose](https://docs.docker.com/compose/) + +#### Configuration + +By default, Docker Compose reads two files, a `docker-compose.yml` and an optional `docker-compose.override.yml` file. +By convention, the `docker-compose.yml` contains your base configuration and it's provided by default. +The override file, as its name implies, can contain configuration overrides for existing services or entirely new +services. +If a service is defined in both files, Docker Compose merges the configurations. + +Find more information on Docker Compose extension mechanism on [the official Docker Compose documentation](https://docs.docker.com/compose/extends/). + +#### Usage + +To start, run: + +```bash +docker-compose up +``` + +It's advised to not daemonize `docker-compose` so you can turn it off (`CTRL+C`) quickly when you're done working. +However, if you'd like to daemonize it, you have to add the flag `-d`: + +```bash +docker-compose up -d +``` + +Then: + +```bash +docker-compose exec web composer install +docker-compose exec web ./vendor/bin/run drupal:site-install +``` + +Using default configuration, the development site files should be available in the `build` directory and the development site +should be available at: [http://127.0.0.1:8080/build](http://127.0.0.1:8080/build). + +#### Running the tests + +To run the grumphp checks: + +```bash +docker-compose exec web ./vendor/bin/grumphp run +``` + +To run the phpunit tests: + +```bash +docker-compose exec web ./vendor/bin/phpunit +``` + +To run the behat tests: + +```bash +docker-compose exec web ./vendor/bin/behat +``` + +## Contributing + +Please read [the full documentation](https://github.com/openeuropa/openeuropa) for details on our code of conduct, and the process for submitting pull requests to us. + +## Versioning + +We use [SemVer](http://semver.org/) for versioning. For the available versions, see the [tags on this repository](https://github.com/openeuropa/oe_registration/tags). diff --git a/behat.yml.dist b/behat.yml.dist new file mode 100644 index 0000000..5a7a88e --- /dev/null +++ b/behat.yml.dist @@ -0,0 +1,21 @@ +default: + suites: + default: + paths: + - %paths.base%/tests/features + contexts: + - Drupal\DrupalExtension\Context\MinkContext + - Drupal\DrupalExtension\Context\DrupalContext + extensions: + Drupal\MinkExtension: + goutte: ~ + selenium2: ~ + ajax_timeout: 10 + javascript_session: selenium2 + base_url: "${drupal.base_url}" + Drupal\DrupalExtension: + api_driver: "drupal" + drupal: + drupal_root: "${drupal.root}" + formatters: + progress: ~ diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..8ba3940 --- /dev/null +++ b/composer.json @@ -0,0 +1,64 @@ +{ + "name": "openeuropa/oe_registration", + "description": "OpenEuropa Drupal module template.", + "type": "drupal-module", + "license": "EUPL-1.2", + "minimum-stability": "dev", + "prefer-stable": true, + "require": { + "php": ">=7.2", + "drupal/core": "^8.7", + "openeuropa/oe_authentication": "^1.3" + }, + "require-dev": { + "composer/installers": "~1.5", + "drupal/core-composer-scaffold": "^8.8", + "drupal/config_devel": "~1.2", + "drupal/drupal-extension": "~4.0", + "drush/drush": "~9.0@stable", + "guzzlehttp/guzzle": "~6.3", + "openeuropa/code-review": "~1.0.0-beta2", + "openeuropa/drupal-core-require-dev": "^8.7", + "openeuropa/task-runner": "~1.0.0-beta5", + "phpunit/phpunit": "~6.0" + }, + "scripts": { + "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold", + "post-install-cmd": "./vendor/bin/run drupal:site-setup", + "post-update-cmd": "./vendor/bin/run drupal:site-setup" + }, + "repositories": [ + { + "type": "composer", + "url": "https://packages.drupal.org/8" + } + ], + "autoload": { + "psr-4": { + "Drupal\\oe_registration\\": "./src/" + } + }, + "autoload-dev": { + "psr-4": { + "Drupal\\Tests\\oe_registration\\": "./tests/" + } + }, + "extra": { + "composer-exit-on-patch-failure": true, + "enable-patching": true, + "drupal-scaffold": { + "locations": { + "web-root": "./build" + } + }, + "installer-paths": { + "build/core": ["type:drupal-core"], + "build/profiles/contrib/{$name}": ["type:drupal-profile"], + "build/modules/contrib/{$name}": ["type:drupal-module"], + "build/themes/contrib/{$name}": ["type:drupal-theme"] + } + }, + "config": { + "sort-packages": true + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7a02cb4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,34 @@ +version: '2' +services: + web: + image: fpfis/httpd-php-dev:7.3 + working_dir: /var/www/html + ports: + - 8080:8080 + volumes: + - .:/var/www/html # Non Mac users. + # - nfsmount:/var/www/html # Mac Users with the nfsmount volume. + environment: + XDEBUG_CONFIG: "remote_enable=1 remote_host=10.254.254.254 remote_port=9000 idekey=PHPSTORM remote_autostart=1" + PHP_IDE_CONFIG: "serverName=Docker" + # For Xdebug setup, run this command in the terminal: + # For Mac users: sudo ifconfig en0 alias 10.254.254.254 255.255.255.0 + # For Linux users: sudo ip addr add 10.254.254.254/32 dev lo label lo:1 + mysql: + image: percona/percona-server:5.6 + environment: + MYSQL_ALLOW_EMPTY_PASSWORD: "yes" + # ports: + # - 3306:3306 + +#### Mac users: uncomment the "volumes" key to enable the NFS file sharing. You can find more information about Docker for Mac here: https://github.com/openeuropa/openeuropa/blob/master/docs/starting/tooling.md#using-docker-on-macos + +#volumes: +# nfsmount: +# driver: local +# driver_opts: +# type: nfs +# o: addr=host.docker.internal,rw,nolock,hard,nointr,nfsvers=3 +# device: ":${PWD}/" + +#### End Mac users. diff --git a/grumphp.yml.dist b/grumphp.yml.dist new file mode 100644 index 0000000..ec725bc --- /dev/null +++ b/grumphp.yml.dist @@ -0,0 +1,14 @@ +imports: + - { resource: vendor/openeuropa/code-review/dist/drupal-conventions.yml } +parameters: + tasks.phpcs.ignore_patterns: + - build/ + - node_modules/ + - vendor/ + tasks.phpcs.triggered_by: + - inc + - install + - module + - php + - theme + - yml diff --git a/oe_registration.info.yml b/oe_registration.info.yml new file mode 100644 index 0000000..6abc5f0 --- /dev/null +++ b/oe_registration.info.yml @@ -0,0 +1,8 @@ +name: OpenEuropa Registration +description: OpenEuropa Registration. +package: OpenEuropa + +type: module +core_version_requirement: ^8 || ^9 +dependencies: + - openeuropa:oe_authentication diff --git a/oe_registration.module b/oe_registration.module new file mode 100644 index 0000000..764b385 --- /dev/null +++ b/oe_registration.module @@ -0,0 +1,8 @@ + + + + + + + + + + + + ./tests/ + + + diff --git a/runner.yml.dist b/runner.yml.dist new file mode 100644 index 0000000..aa7ac29 --- /dev/null +++ b/runner.yml.dist @@ -0,0 +1,43 @@ +drupal: + root: "build" + base_url: "http://web:8080/build" + site: + name: "OpenEuropa" + profile: "minimal" + database: + host: "mysql" + port: "3306" + name: "oe_registration" + user: "root" + password: "" + post_install: + # Prepare the instance. + - "./vendor/bin/drush en toolbar -y" + - "./vendor/bin/drush theme:enable bartik -y" + - "./vendor/bin/drush theme:enable seven -y" + - "./vendor/bin/drush config-set system.theme default bartik -y" + - "./vendor/bin/drush config-set system.theme admin seven -y" + - "./vendor/bin/drush config-set node.settings use_admin_theme 1 -y" + # Enable the modules. + - "./vendor/bin/drush en config_devel -y" + - "./vendor/bin/drush en oe_registration -y" + - "./vendor/bin/drush cr" + settings: + settings: + file_scan_ignore_directories: + - "node_modules" + - "bower_components" + - "vendor" + - "${drupal.root}" + +commands: + drupal:site-setup: + - { task: "symlink", from: "../../..", to: "${drupal.root}/modules/custom/oe_registration" } + - { task: "run", command: "drupal:drush-setup" } + - { task: "run", command: "drupal:settings-setup" } + - { task: "run", command: "setup:phpunit" } + - { task: "run", command: "setup:behat" } + setup:phpunit: + - { task: "process", source: "phpunit.xml.dist", destination: "phpunit.xml" } + setup:behat: + - { task: "process", source: "behat.yml.dist", destination: "behat.yml" } diff --git a/tests/features/bootstrap/FeatureContext.php b/tests/features/bootstrap/FeatureContext.php new file mode 100644 index 0000000..d22ef0a --- /dev/null +++ b/tests/features/bootstrap/FeatureContext.php @@ -0,0 +1,11 @@ +