name: OpenSTAManager CI

on:
  workflow_dispatch

jobs:
  tests:
    runs-on: ubuntu-18.10
    
    strategy:
      matrix:
        python-version: [3.9]
        php-version: ['7.4']
        
    steps:
    - uses: actions/checkout@v2

#    - name: Set up PHP ${{ matrix.php-version }}
#      uses: shivammathur/setup-php@v2
#      with:
#        php-version: ${{ matrix.php-version }}
#        extensions: zip, mbstring, pdo_mysql, mysql, dom, xsl, openssl, intl, curl, soap, gd
 
    - name: Setup PHP
      run: |
        sudo apt install libapache2-mod-php7.4
        sudo sed -i 's,^post_max_size =.*$,post_max_size = 32M,' /etc/php/7.4/apache2/php.ini
        sudo sed -i 's,^upload_max_filesize =.*$,upload_max_filesize = 32M,' /etc/php/7.4/apache2/php.ini
      
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
        
    - name: Install SeleniumBase
      uses: actions/checkout@v2
      with:
        repository: seleniumbase/SeleniumBase
        path: selenium-base
  
    - name: Configure SeleniumBase
      run: |
        cd selenium-base
        python setup.py install

    - name: Install Chrome and Firefox
      run: |
        sudo apt install google-chrome-stable
        sudo apt-get install firefox

    - name: Check the console scripts interface
      run: |
        seleniumbase
        sbase

    - name: Install chromedriver and geckodriver (Firefox Webdriver)
      run: |
        seleniumbase install chromedriver
        seleniumbase install geckodriver

    - name: Make sure pytest is working
      run: |
        echo "def test_1(): pass" > nothing.py
        pytest nothing.py

    - name: Make sure nosetests is working
      run: |
        echo "def test_2(): pass" > nothing2.py
        nosetests nothing2.py
    
    - name: Cache Composer packages
      id: composer-cache
      uses: actions/cache@v2
      with:
        path: vendor
        key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
        restore-keys: |
          ${{ runner.os }}-php-

    - name: Install Composer dependencies
      run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist

    - name: Use NPM and Node.js
      uses: actions/setup-node@v2
      with:
        node-version: '14'
    - name: Install NPM and compile assets
      run: |
        yarn install
        npm run build-OSM


    - name: Copy OSM to www root
      run: |
        sudo cp -R /home/runner/work/openstamanager/openstamanager /var/www/html/
        sudo chmod -R 0777 /var/www/html/openstamanager
        sudo rm /var/www/html/openstamanager/.htaccess
        
    - name: Check out test repository
      uses: actions/checkout@v2
      with:
        repository: devcode-it/openstamanager-tests
        path: python-tests

    - name: Install Python dependencies
      run: |
        cd python-tests/
        python -m pip install --upgrade pip
        python -m pip install pytest
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
      
    - name: Restart apache
      run: sudo service apache2 restart
      
    - name: Restart MySQL
      run: sudo service mysql restart

    - name: Init test configuration
      run: |
        curl http://localhost/openstamanager/
        sudo cat /var/log/apache2/access.log
        cd python-tests/
        echo -ne "{\n    \"login\": {\n        \"password\": \"adminadmin\",\n        \"username\": \"admin\"\n    },\n    \"database\": {\n        \"host\": \"localhost\",\n        \"user\": \"root\",\n        \"pass\": \"root\",\n        \"name\": \"osm\"\n    },\n    \"server\": \"http://localhost/openstamanager/\",\n    \"browser\": \"chrome\",\n    \"headless\": true\n}" > config.json
        #pytest Init.py
    
    - name: Execute tests
      run: |
        cd python-tests/
        python -m unittest discover tests -p '*.py'
