diff --git a/extended/test_uploadimage.py b/extended/test_uploadimage.py
index 44a0963..e4ac71b 100644
--- a/extended/test_uploadimage.py
+++ b/extended/test_uploadimage.py
@@ -171,3 +171,30 @@
         return False
 
 ###############################################################################
+
+
+###############################################################################
+def verify_image_not_in_bmc_uploads_dir(image_version):
+
+    r"""
+    Check that an image with the given version is not unpacked inside of the
+    BMCs image uploads directory. If no image is found, retry every 30 seconds
+    for 3 minutes in case the BMC takes time unpacking the image.
+
+    Description of argument(s):
+    image_version  The version of the image to look for on the BMC.
+    """
+
+    grk.run_key('Open Connection And Log In')
+    upload_dir_path = BuiltIn().get_variable_value("${UPLOAD_DIR_PATH}")
+    for i in range(6):
+        stat, grep_res = grk.run_key('Execute Command On BMC  '
+                + 'ls ' + upload_dir_path + '*/MANIFEST 2>/dev/null '
+                + '| xargs grep -rl "version=' + image_version + '"')
+        image_dir = os.path.dirname(grep_res.split('\n')[0])
+        if '' != image_dir:
+            grk.run_key('Execute Command On BMC  rm -rf ' + image_dir)
+            BuiltIn().fail('Found invalid BMC Image: ' + image_dir)
+        time.sleep(30)
+
+###############################################################################
diff --git a/extended/test_uploadimage.robot b/extended/test_uploadimage.robot
index 46a4829..008596c 100644
--- a/extended/test_uploadimage.robot
+++ b/extended/test_uploadimage.robot
@@ -1,10 +1,14 @@
 *** Settings ***
-Documentation         Test Upload Image
+Documentation         Test upload image with both valid and invalid images.
+...                   This test expects there to be bad image tarballs named
+...                   pnor_bad_manifest.tar and pnor_no_image.tar on the TFTP
+...                   server and in the directory BAD_IMAGES_DIR_PATH.
 ...                   Execution Method :
 ...                   python -m robot -v OPENBMC_HOST:<hostname>
 ...                   -v TFTP_SERVER:<TFTP server IP>
 ...                   -v TFTP_FILE_NAME:<filename.tar>
 ...                   -v IMAGE_FILE_PATH:<path/*.tar> test_uploadimage.robot
+...                   -v BAD_IMAGES_DIR_PATH:<path>
 
 Resource              ../lib/connection_client.robot
 Resource              ../lib/rest_client.robot
@@ -53,6 +57,62 @@
     ${ret}=  Verify Image Upload
     Should Be True  True == ${ret}
 
+Upload Image With Bad Manifest Via REST
+    [Documentation]  Upload an image with a MANIFEST with an invalid
+    ...              purpose via REST and make sure the BMC does not unpack it.
+    [Tags]  Upload_Image_With_Bad_Manifest_Via_REST
+
+    ${bad_image_file_path}=  OperatingSystem.Join Path  ${BAD_IMAGES_DIR_PATH}
+    ...  pnor_bad_manifest.tar
+    OperatingSystem.File Should Exist  ${bad_image_file_path}
+    ...  msg=Invalid PNOR image pnor_bad_manifest.tar 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 Image With Bad Manifest Via TFTP
+    [Documentation]  Upload an image with a MANIFEST with an invalid
+    ...              purpose via TFTP and make sure the BMC does not unpack it.
+    [Tags]  Upload_Image_With_Bad_Manifest_Via_TFTP
+
+    @{image}=  Create List  pnor_bad_manifest.tar  ${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
+    ...  pnor_bad_manifest.tar
+    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
+
+Upload Image With No Squashfs Via REST
+    [Documentation]  Upload an image with no pnor.xz.suashfs file via REST and
+    ...              make sure the BMC does not unpack it.
+    [Tags]  Upload_Image_With_No_Squashfs_Via_REST
+
+    ${bad_image_file_path}=  OperatingSystem.Join Path  ${BAD_IMAGES_DIR_PATH}
+    ...  pnor_no_image.tar
+    OperatingSystem.File Should Exist  ${bad_image_file_path}
+    ...  msg=Invalid PNOR image pnor_no_image.tar 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 Image With No Squashfs Via TFTP
+    [Documentation]  Upload an image with no pnor.xz.suashfs file via TFTP and
+    ...              make sure the BMC does not unpack it.
+    [Tags]  Upload_Image_With_No_Squashfs_Via_TFTP
+
+    @{image}=  Create List  pnor_no_image.tar  ${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
+    ...  pnor_no_image.tar
+    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
+
 *** Keywords ***
 
 Upload Image Teardown
@@ -65,7 +125,7 @@
 Upload Post Request
     [Arguments]  ${uri}  ${timeout}=10  ${quiet}=${QUIET}  &{kwargs}
 
-    # Description of arguments:
+    # 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.
@@ -81,3 +141,22 @@
     ${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]  ${image_file_path}
+
+    # Description of argument(s):
+    # image_file_path  The path to the image on the TFTP server,
+    #                  ommitting a leading /.
+
+    ${rc}=  OperatingSystem.Run And Return RC
+    ...  curl -s tftp://${TFTP_SERVER}/${image_file_path} > bad_image.tar
+    Should Be Equal As Integers  0  ${rc}
+    ...  msg=Could not download image to check version.
+    ${version}=  Get Version Tar  bad_image.tar
+    OperatingSystem.Remove File  bad_image.tar
+    [Return]  ${version}
+
diff --git a/lib/resource.txt b/lib/resource.txt
index d3c3cb1..d457ad6 100755
--- a/lib/resource.txt
+++ b/lib/resource.txt
@@ -51,6 +51,7 @@
 ${TFTP_SERVER}       ${EMPTY}
 ${TFTP_FILE_NAME}    ${EMPTY}
 ${IMAGE_FILE_PATH}   ${EMPTY}
+${BAD_IMAGES_DIR_PATH}    ${EMPTY}
 
 *** Keywords ***
 Get Inventory Schema
diff --git a/tools/generate_argumentfile.sh b/tools/generate_argumentfile.sh
index 0529469..a19aca1 100755
--- a/tools/generate_argumentfile.sh
+++ b/tools/generate_argumentfile.sh
@@ -25,3 +25,4 @@
 echo "--variable TFTP_SERVER:$TFTP_SERVER" >> $ARG_FILE
 echo "--variable TFTP_FILE_NAME:$TFTP_FILE_NAME" >> $ARG_FILE
 echo "--variable IMAGE_FILE_PATH:$IMAGE_FILE_PATH" >> $ARG_FILE
+echo "--variable BAD_IMAGES_DIR_PATH:$BAD_IMAGES_DIR_PATH" >> $ARG_FILE
