#!/bin/bash

source /var/onap_tests/_test_base
source /var/onap/vvp

covered_functions=(
"clone_all_vvp_repos" "compile_all_vvp_repos" "get_vvp_images" "install_vvp"
)

# test_clone_all_vvp_repos() - Verify the cloning of VNFSDK source repo.
function test_clone_all_vvp_repos {
    clone_repos "vvp"

    asserts_file_exist ${src_folders[vvp]}/cms/pom.xml
    asserts_file_exist ${src_folders[vvp]}/devkit/LICENSE.TXT
    asserts_file_exist ${src_folders[vvp]}/engagementmgr/pom.xml
    asserts_file_exist ${src_folders[vvp]}/gitlab/pom.xml
    asserts_file_exist ${src_folders[vvp]}/image-scanner/pom.xml
    asserts_file_exist ${src_folders[vvp]}/jenkins/pom.xml
    asserts_file_exist ${src_folders[vvp]}/portal/pom.xml
    asserts_file_exist ${src_folders[vvp]}/postgresql/pom.xml
    asserts_file_exist ${src_folders[vvp]}/test-engine/pom.xml
    asserts_file_exist ${src_folders[vvp]}/validation-scripts/LICENSE.txt
}

# test_compile_all_vvp_repos () - Verify if VNFSDK source repo compiles correctly.
function test_compile_all_vvp_repos {
    clone_repos "vvp"
    compile_repos "vvp"

   # asserts_file_exist ${src_folders[vvp]}/
}

# test_get_vvp_images() - Verify that the VNFSDK images are created or retrieved
function test_get_vvp_images {
    clone_repos "vvp"
    get_vvp_images

    #asserts_image refrepo:latest
}

# test_install_vvp() - Verify that VNFSDK docker images are running.
function test_install_vvp {
    clone_repos "vvp"
    get_vvp_images
    install_vvp

    #asserts_image_running refrepo:1.0-STAGING-latest
}

if [ "$1" != '*' ]; then
    unset covered_functions
    covered_functions=$1
fi
main "${covered_functions[@]}"
