diff --git a/extended/code_update/test_image_upload.robot b/extended/code_update/test_image_upload.robot
new file mode 100644
index 0000000..477113a
--- /dev/null
+++ b/extended/code_update/test_image_upload.robot
@@ -0,0 +1,282 @@
+*** Settings ***
+Documentation         Test upload image with both valid and invalid images.
+...                   This test expects there to be bad image tarballs named
+...                   pnor_bad_manifest.tar, pnor_no_image.tar,
+...                   bmc_bad_manifest.tar, and bmc_no_image.tar on the TFTP
+...                   server and in the BAD_IMAGES_DIR_PATH directory.
+...                   Execution Method :
+...                   python -m robot -v OPENBMC_HOST:<hostname>
+...                   -v TFTP_SERVER:<TFTP server IP>
+...                   -v PNOR_TFTP_FILE_NAME:<filename.tar>
+...                   -v BMC_TFTP_FILE_NAME:<filename.tar>
+...                   -v PNOR_IMAGE_FILE_PATH:<path/*.tar>
+...                   -v BMC_IMAGE_FILE_PATH:<path/*.tar>
+...                   -v BAD_IMAGES_DIR_PATH:<path> test_uploadimage.robot
+
+Resource              ../../lib/connection_client.robot
+Resource              ../../lib/rest_client.robot
+Resource              ../../lib/openbmc_ffdc.robot
+Library               Collections
+Library               String
+Library               OperatingSystem
+Library               ../../lib/code_update_utils.py
+
+Test Teardown  Upload Image Teardown
+
+Force Tags  Upload_Test
+
+*** Variables ***
+${timeout}            10
+${QUIET}              ${1}
+
+*** Test Cases ***
+
+Upload Host Image Via REST
+    # Image File Path
+
+    ${PNOR_IMAGE_FILE_PATH}
+
+    [Documentation]  Upload a PNOR image via REST.
+    [Template]  Upload Image Via REST And Verify Success
+    [Tags]  Upload_Host_Image_Via_REST
+
+
+Upload BMC Image Via REST
+    # Image File Path
+
+    ${BMC_IMAGE_FILE_PATH}
+
+    [Documentation]  Upload a BMC image via REST.
+    [Template]  Upload Image Via REST And Verify Success
+    [Tags]  Upload_BMC_Image_Via_REST
+
+
+Upload Host Image Via TFTP
+    # Image File Path
+
+    ${PNOR_TFTP_FILE_NAME}
+
+    [Documentation]  Upload a PNOR image via TFTP.
+    [Template]  Upload Image Via TFTP And Verify Success
+    [Tags]  Upload_Host_Image_Via_TFTP
+
+
+Upload BMC Image Via TFTP
+    # Image File Path
+
+    ${BMC_TFTP_FILE_NAME}
+
+    [Documentation]  Upload a BMC image via TFTP
+    [Template]  Upload Image Via TFTP And Verify Success
+    [Tags]  Upload_BMC_Image_Via_TFTP
+
+
+Upload Host Image With Bad Manifest Via REST
+    # Image File Name
+
+    pnor_bad_manifest.tar
+
+    [Documentation]  Upload a PNOR image with a bad MANIFEST via REST and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via REST And Verify Failure
+    [Tags]  Upload_Host_Image_With_Bad_Manifest_Via_REST
+
+
+Upload Host Image With No Squashfs Via REST
+    # Image File Name
+
+    pnor_no_image.tar
+
+    [Documentation]  Upload a PNOR image with just a MANIFEST file via REST
+    ...              and verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via REST And Verify Failure
+    [Tags]  Upload_Host_Image_With_No_Squashfs_Via_REST
+
+
+Upload BMC Image With Bad Manifest Via REST
+    # Image File Name
+
+    bmc_bad_manifest.tar
+
+    [Documentation]  Upload a BMC image with a bad MANFIEST file via REST and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via REST And Verify Failure
+    [Tags]  Upload_BMC_Image_With_Bad_Manifest_Via_REST
+
+
+Upload BMC Image With No Image Via REST
+    # Image File Name
+
+    bmc_no_image.tar
+
+    [Documentation]  Upload a BMC image with no just a MANIFEST file via REST
+    ...              and verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via REST And Verify Failure
+    [Tags]  Upload_BMC_Image_With_No_Image_Via_REST
+
+
+Upload Host Image With Bad Manifest Via TFTP
+    # Image File Name
+
+    pnor_bad_manifest.tar
+
+    [Documentation]  Upload a PNOR image with a bad MANIFEST file via TFTP and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via TFTP And Verify Failure
+    [Tags]  Upload_Host_Image_With_Bad_Manifest_Via_TFTP
+
+
+Upload Host Image With No Squashfs Via TFTP
+    # Image File Name
+
+    pnor_no_image.tar
+
+    [Documentation]  Upload a PNOR image with just a MANIFEST file via TFTP and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via TFTP And Verify Failure
+    [Tags]  Upload_Host_Image_With_No_Squashfs_Via_TFTP
+
+
+Upload BMC Image With Bad Manifest Via TFTP
+    # Image File Name
+
+    bmc_bad_manifest.tar
+
+    [Documentation]  Upload a BMC image with a bad MANIFEST file via TFTP and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via TFTP And Verify Failure
+    [Tags]  Upload_BMC_Image_With_Bad_Manifest_Via_TFTP
+
+
+Upload BMC Image With No Image Via TFTP
+    # Image File Name
+
+    bmc_no_image.tar
+
+    [Documentation]  Upload a BMC image with just a MANIFEST file via TFTP and
+    ...              verify that the BMC does not unpack it.
+    [Template]  Upload Bad Image Via TFTP And Verify Failure
+    [Tags]  Upload_BMC_Image_With_No_Image_Via_TFTP
+
+
+*** Keywords ***
+
+Upload Image Teardown
+    [Documentation]  Log FFDC if test fails for debugging purposes.
+
+    Open Connection And Log In
+    Execute Command On BMC  rm -rf /tmp/images/*
+
+    Close All Connections
+    FFDC On Test Case Fail
+
+
+Upload Post Request
+    [Arguments]  ${uri}  ${timeout}=10  ${quiet}=${QUIET}  &{kwargs}
+
+    # Description of argument(s):
+    # uri             URI for uploading image via REST.
+    # timeout         Time allocated for the REST command to return status.
+    # quiet           If enabled turns off logging to console.
+    # kwargs          A dictionary that maps each keyword to a value.
+
+    Initialize OpenBMC  ${timeout}  quiet=${quiet}
+    ${base_uri}=  Catenate  SEPARATOR=  ${DBUS_PREFIX}  ${uri}
+    ${headers}=  Create Dictionary  Content-Type=application/octet-stream
+    ...  Accept=application/octet-stream
+    Set To Dictionary  ${kwargs}  headers  ${headers}
+    Run Keyword If  '${quiet}' == '${0}'  Log Request  method=Post
+    ...  base_uri=${base_uri}  args=&{kwargs}
+    ${ret}=  Post Request  openbmc  ${base_uri}  &{kwargs}  timeout=${timeout}
+    Run Keyword If  '${quiet}' == '${0}'  Log Response  ${ret}
+    Should Be Equal As Strings  ${ret.status_code}  ${HTTP_OK}
+
+Get Image Version From TFTP Server
+    [Documentation]  Get the version dfound in the MANIFEST file of
+    ...              an image on the given TFTP server.
+    [Arguments]  ${tftp_image_file_path}
+
+    # Description of argument(s):
+    # tftp_image_file_path  The path to the image on the TFTP server.
+
+    ${stripped_file_path}=  Strip String  ${tftp_image_file_path}  characters=/
+    ${rc}=  OperatingSystem.Run And Return RC
+    ...  curl -s tftp://${TFTP_SERVER}/${stripped_file_path} > tftp_image.tar
+    Should Be Equal As Integers  0  ${rc}
+    ...  msg=Could not download image to check version.
+    ${version}=  Get Version Tar  tftp_image.tar
+    OperatingSystem.Remove File  tftp_image.tar
+    [Return]  ${version}
+
+Upload Image Via REST And Verify Success
+    [Documentation]  Upload an image to the BMC and check that it is unpacked.
+
+    # Upload the given good image to the BMC via REST, and check that the
+    # BMC has unpacked the image and created a valid D-Bus entry for it.
+
+    [Arguments]  ${image_file_path}
+
+    # Description of argument(s):
+    # image_file_path  The path to the image file to upload.
+
+    OperatingSystem.File Should Exist  ${image_file_path}
+    ${image_version}=  Get Version Tar  ${image_file_path}
+    ${image_data}=  OperatingSystem.Get Binary File  ${image_file_path}
+    Upload Image To BMC  /upload/image  data=${image_data}
+    ${ret}  ${version_id}=  Verify Image Upload  ${image_version}
+    Should Be True  ${ret}
+
+Upload Image Via TFTP And Verify Success
+    [Documentation]  Upload an image to the BMC and check that it was unpacked.
+
+    # Upload the given good image to the BMC via TFTP, and check that the
+    # BMC has unpacked the image and created a valid D-Bus entry for it.
+
+    [Arguments]  ${image_file_name}
+
+    # Description of argument(s):
+    # image_file_name  The name of the image file on the TFTP server.
+
+    @{image}=  Create List  ${image_file_name}  ${TFTP_SERVER}
+    ${data}=  Create Dictionary  data=@{image}
+    ${resp}=  OpenBMC Post Request
+    ...  ${SOFTWARE_VERSION_URI}/action/DownloadViaTFTP  data=${data}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+    Sleep  1 minute
+    ${image_version}=  Get Image Version From TFTP Server  ${image_file_name}
+    ${ret}  ${version_id}=  Verify Image Upload  ${image_version}
+    Should Be True  ${ret}
+
+Upload Bad Image Via REST And Verify Failure
+    [Documentation]  Upload the given bad image to the BMC via REST and check
+    ...              that the BMC did not unpack the invalid image.
+    [Arguments]  ${bad_image_file_name}
+
+    # Description of argument(s):
+    # image_file_name  The name of the bad image to upload via REST.
+
+    ${bad_image_file_path}=  OperatingSystem.Join Path  ${BAD_IMAGES_DIR_PATH}
+    ...  ${bad_image_file_name}
+    OperatingSystem.File Should Exist  ${bad_image_file_path}
+    ...  msg=Bad image file ${bad_image_file_name} not found.
+    ${bad_image_version}=  Get Version Tar  ${bad_image_file_path}
+    ${bad_image_data}=  OperatingSystem.Get Binary File  ${bad_image_file_path}
+    Upload Post Request  /upload/image  data=${bad_image_data}
+    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
+
+Upload Bad Image Via TFTP And Verify Failure
+    [Documentation]  Upload the given bad image to the BMC via TFTP and check
+    ...              that the BMC did not unpack the invalid image.
+    [Arguments]  ${bad_image_file_name}
+
+    # Description of argument(s):
+    # image_file_name  The name of the bad image to upload via TFTP.
+
+    @{image}=  Create List  ${bad_image_file_name}  ${TFTP_SERVER}
+    ${data}=  Create Dictionary  data=@{image}
+    ${resp}=  OpenBMC Post Request
+    ...  ${SOFTWARE_VERSION_URI}/action/DownloadViaTFTP  data=${data}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+    ${bad_image_version}=  Get Image Version From TFTP Server
+    ...  ${bad_image_file_name}
+    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
