name: scp files
on: [push]
jobs:

  testing:
    name: test scp action
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v3

    - name: copy file via ssh password
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        source: "tests/a.txt,tests/b.txt"
        target: "test"

    - name: copy file via ssh key
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        source: "tests/a.txt,tests/b.txt"
        target: "test"

    - name: remove the specified number of leading path elements
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        source: "tests/a.txt,tests/b.txt"
        target: "foobar"
        strip_components: 1

    - name: ssh key with passphrase
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.SSH2 }}
        passphrase: ${{ secrets.PASSPHRASE }}
        port: ${{ secrets.PORT }}
        source: "tests/a.txt,tests/b.txt"
        target: "test"

    - name: use insecure cipher
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.SSH2 }}
        passphrase: ${{ secrets.PASSPHRASE }}
        port: ${{ secrets.PORT }}
        source: "tests/a.txt,tests/b.txt"
        target: "test"
        use_insecure_cipher: true

    - name: correct key but wrong password
      uses: appleboy/scp-action@7af00892de6f8397c5c3393cfb3b32ae7f91b94b
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        password: abcdefg
        port: ${{ secrets.PORT }}
        source: "tests/a.txt,tests/b.txt"
        target: "test"

    - name: correct password but wrong key
      uses: appleboy/scp-action@7af00892de6f8397c5c3393cfb3b32ae7f91b94b
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: abcdefg
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        source: "tests/a.txt,tests/b.txt"
        target: "test"

  deploy:
    name: test deploy artifact
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v3

    - run: echo hello > world.txt

    - uses: actions/upload-artifact@v3
      with:
        name: my-artifact
        path: world.txt

    - uses: actions/download-artifact@v3
      with:
        name: my-artifact
        path: distfiles

    - name: copy file to server
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        source: distfiles/*
        target: test

  changes:
    name: test changed-files
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v3

    - name: Get changed files
      id: changed-files
      uses: tj-actions/changed-files@v36
      with:
        since_last_remote_commit: true
        separator: ","

    - name: copy file to server
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        source: ${{ steps.changed-files.outputs.all_changed_files }}
        target: test

  target:
    name: test target folder
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v3

    - name: copy file to server
      uses: ./
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        source: tests/a.txt,tests/b.txt
        target: foobar foobar   1234

  multipleHost:
    name: test Multiple Host
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v3

    - name: copy file to server
      uses: ./
      with:
        host: ${{ secrets.HOST }}:${{ secrets.PORT }},${{ secrets.HOST }}:${{ secrets.PORT }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: 1024
        source: tests/a.txt,tests/b.txt
        target: foobar