name: Windows CSharp Build Test

on:
  push:
    branches: [ 'master', 'main', 'release/**' ]
  pull_request:
    branches: [ '*' ]

jobs:
  build:

    if: github.repository_owner == 'wolfssl'
    runs-on: windows-latest

    # This should be a safe limit for the tests to run.
    timeout-minutes: 6

    env:
      # Path to the solution file relative to the root of the project.
      SOLUTION_FILE_PATH: wolfssl\wrapper\CSharp\wolfSSL_CSharp.sln

      # Configuration type to build.
      # You can convert this to a build matrix if you need coverage of multiple configuration types.
      # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
      BUILD_CONFIGURATION: Debug
      BUILD_PLATFORM: x64

    steps:
        - name: Pull wolfssl
          uses: actions/checkout@master
          with:
            repository: wolfssl/wolfssl
            path: wolfssl

        - name: Create FIPS stub files (autogen)
          working-directory: wolfssl
          run: |
            echo $null >> wolfcrypt\src\fips.c
            echo $null >> wolfcrypt\src\fips_test.c
            echo $null >> wolfcrypt\src\wolfcrypt_first.c
            echo $null >> wolfcrypt\src\wolfcrypt_last.c

        - name: Add MSBuild to PATH
          uses: microsoft/setup-msbuild@v1

        - name: Build
          working-directory: ${{env.GITHUB_WORKSPACE}}
          # Add additional options to the MSBuild command line here (like platform or verbosity level).
          # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
          run: msbuild /m /p:PlatformToolset=v142 /p:Platform=${{env.BUILD_PLATFORM}} /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}}

        - name: Run wolfCrypt test
          working-directory: ${{env.GITHUB_WORKSPACE}}wolfssl\wrapper\CSharp\Debug\x64\
          run: ./wolfCrypt-test.exe

        - name: Run wolfSSL client/server example
          working-directory: ${{env.GITHUB_WORKSPACE}}wolfssl\wrapper\CSharp\Debug\x64\
          run: ./wolfSSL-TLS-Server.exe && sleep 1 & ./wolfSSL-TLS-Client.exe