public static function isValidKey( $key ) {
// this is checked in more detail in UploadStash
- return preg_match( UploadStash::KEY_FORMAT_REGEX, $key );
+ return preg_match( UploadStash::KEY_FORMAT_REGEX, $key ) ? true : false;
}
/**
* @return Boolean
*/
public static function isValidRequest( $request ) {
- return self::isValidKey( $request->getText( 'wpFileKey' ) || $request->getText( 'wpSessionKey' ) );
+ // this passes wpSessionKey to getText() as a default when wpFileKey isn't set.
+ // wpSessionKey has no default which guarantees failure if both are missing
+ // (though that should have been caught earlier)
+ return self::isValidKey( $request->getText( 'wpFileKey', $request->getText( 'wpSessionKey' ) ) );
}
public function initialize( $key, $name = 'upload_file' ) {
* @param $request WebRequest
*/
public function initializeFromRequest( &$request ) {
- $fileKey = $request->getText( 'wpFileKey' ) || $request->getText( 'wpSessionKey' );
+ // sends wpSessionKey as a default when wpFileKey is missing
+ $fileKey = $request->getText( 'wpFileKey', $request->getText( 'wpSessionKey' ) );
+
+ // chooses one of wpDestFile, wpUploadFile, filename in that order.
+ $desiredDestName = $request->getText( 'wpDestFile', $request->getText( 'wpUploadFile', $request->getText( 'filename' ) ) );
- $desiredDestName = $request->getText( 'wpDestFile' );
- if( !$desiredDestName ) {
- $desiredDestName = $request->getText( 'wpUploadFile' ) || $request->getText( 'filename' );
- }
return $this->initialize( $fileKey, $desiredDestName );
}
* There is no need to stash the image twice
*/
public function stashFile( $key = null ) {
- if ( !empty( $this->mLocalFile ) ) {
+ if ( !$this->mLocalFile ) {
return $this->mLocalFile;
}
return parent::stashFile( $key );
$stash->removeFile( $file->getFileKey() );
}
+
+ public function testValidRequest() {
+ $request = new FauxRequest( array( 'wpFileKey' => 'foo') );
+ $this->assertFalse( UploadFromStash::isValidRequest($request), 'Check failure on bad wpFileKey' );
+
+ $request = new FauxRequest( array( 'wpSessionKey' => 'foo') );
+ $this->assertFalse( UploadFromStash::isValidRequest($request), 'Check failure on bad wpSessionKey' );
+
+ $request = new FauxRequest( array( 'wpFileKey' => 'testkey-test.test') );
+ $this->assertTrue( UploadFromStash::isValidRequest($request), 'Check good wpFileKey' );
+
+ $request = new FauxRequest( array( 'wpFileKey' => 'testkey-test.test') );
+ $this->assertTrue( UploadFromStash::isValidRequest($request), 'Check good wpSessionKey' );
+
+ $request = new FauxRequest( array( 'wpFileKey' => 'testkey-test.test', 'wpSessionKey' => 'foo') );
+ $this->assertTrue( UploadFromStash::isValidRequest($request), 'Check key precedence' );
+ }
+
+
public function tearDown() {
parent::tearDown();
- unlink( $this->bug29408File . "." );
-
+ if( file_exists( $this->bug29408File . "." ) ) {
+ unlink( $this->bug29408File . "." );
+ }
+
+ if( file_exists( $this->bug29408File ) ) {
+ unlink( $this->bug29408File );
+ }
}
}