From 617aae6fe13484b71b6508320bcd982f208a91e5 Mon Sep 17 00:00:00 2001 From: lifeng68 Date: Wed, 15 Jul 2020 15:00:58 +0800 Subject: [PATCH] CI: add testcases for auth pull image Signed-off-by: lifeng68 --- CI/test_cases/image_cases/images_list.bash | 19 +++++++++++++++++++ CI/test_cases/image_cases/img_fs_info.bash | 5 ++++- src/daemon/modules/image/oci/oci_pull.c | 8 +++++--- src/utils/cutils/utils_base64.c | 4 ++-- src/utils/cutils/utils_base64.h | 5 ++--- 5 files changed, 32 insertions(+), 9 deletions(-) diff --git a/CI/test_cases/image_cases/images_list.bash b/CI/test_cases/image_cases/images_list.bash index 3bf417c..51c7a1a 100755 --- a/CI/test_cases/image_cases/images_list.bash +++ b/CI/test_cases/image_cases/images_list.bash @@ -26,6 +26,7 @@ function test_image_list() { local ret=0 local image="hello-world" + local image_busybox="busybox" local INVALID_IMAGE="k~k" local test="list images info test => (${FUNCNAME[@]})" @@ -40,9 +41,27 @@ function test_image_list() isula images | grep hello [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++)) + isula pull ${image_busybox} + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image_busybox}" && return ${FAILURE} + + isula images | grep busybox + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image}" && ((ret++)) + count=`isula images --filter "reference=*hello*" | grep hello | wc -l` [[ $count -ne 1 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - missing list image: ${image} with filter" && ((ret++)) + isula images --filter "since=${image}" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to list images with since: ${image}" && ((ret++)) + + isula images --filter "before=${image}" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to list images with before: ${image}" && ((ret++)) + + isula images --filter "since=${image_busybox}" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to list images with since: ${image_busybox}" && ((ret++)) + + isula images --filter "before=${image_busybox}" + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to list images with since: ${image_busybox}" && ((ret++)) + isula rmi ${image} [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to remove image ${image}" && ((ret++)) diff --git a/CI/test_cases/image_cases/img_fs_info.bash b/CI/test_cases/image_cases/img_fs_info.bash index 1ea16b3..6399253 100755 --- a/CI/test_cases/image_cases/img_fs_info.bash +++ b/CI/test_cases/image_cases/img_fs_info.bash @@ -30,7 +30,10 @@ function test_crictl_image() msg_info "${test} starting..." - crictl pull ${image} + crictl pull --creds test:test ${image} + [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} + + crictl pull --auth dGVzdDp0ZXN0 ${image} [[ $? -ne 0 ]] && msg_err "${FUNCNAME[0]}:${LINENO} - failed to pull image: ${image}" && return ${FAILURE} crictl inspecti busybox | grep busybox diff --git a/src/daemon/modules/image/oci/oci_pull.c b/src/daemon/modules/image/oci/oci_pull.c index d0d820f..0249a41 100644 --- a/src/daemon/modules/image/oci/oci_pull.c +++ b/src/daemon/modules/image/oci/oci_pull.c @@ -30,7 +30,7 @@ #include "utils_base64.h" #include "utils_string.h" -static int decode_auth(char *auth, char **username, char **password) +static int decode_auth(const char *auth, char **username, char **password) { int nret = 0; int ret = 0; @@ -111,14 +111,16 @@ static int pull_image(const im_pull_request *request, char **name) ERROR("Out of memory"); goto out; } - options->auth.username = request->username; - options->auth.password = request->password; + if (request->auth != NULL) { ret = decode_auth(request->auth, &options->auth.username, &options->auth.password); if (ret != 0) { ERROR("Decode auth failed"); goto out; } + } else { + options->auth.username = util_strdup_s(request->username); + options->auth.password = util_strdup_s(request->password); } options->skip_tls_verify = conf_get_skip_insecure_verify_flag(); diff --git a/src/utils/cutils/utils_base64.c b/src/utils/cutils/utils_base64.c index 4c5bad8..2897d05 100644 --- a/src/utils/cutils/utils_base64.c +++ b/src/utils/cutils/utils_base64.c @@ -116,7 +116,7 @@ size_t util_base64_encode_len(size_t len) } } -size_t util_base64_decode_len(char *input, size_t len) +size_t util_base64_decode_len(const char *input, size_t len) { size_t padding_count = 0; @@ -135,7 +135,7 @@ size_t util_base64_decode_len(char *input, size_t len) return (strlen(input) / 4 * 3) - padding_count; } -size_t util_base64_decode(char *input, size_t len, unsigned char *out, size_t out_len) +size_t util_base64_decode(const char *input, size_t len, unsigned char *out, size_t out_len) { BIO *base64 = NULL; BIO *io = NULL; diff --git a/src/utils/cutils/utils_base64.h b/src/utils/cutils/utils_base64.h index 649c0af..b6ef739 100644 --- a/src/utils/cutils/utils_base64.h +++ b/src/utils/cutils/utils_base64.h @@ -28,12 +28,11 @@ extern "C" { // note: the output length must include the '\0' and the return size is include the '\0'. size_t util_base64_encode(unsigned char *bytes, size_t len, char *out, size_t out_len); size_t util_base64_encode_len(size_t len); -size_t util_base64_decode(char *input, size_t len, unsigned char *out, size_t out_len); -size_t util_base64_decode_len(char *input, size_t len); +size_t util_base64_decode(const char *input, size_t len, unsigned char *out, size_t out_len); +size_t util_base64_decode_len(const char *input, size_t len); #ifdef __cplusplus } #endif #endif // UTILS_CUTILS_UTILS_BASE64_H - -- GitLab