public function setUp()
 {
     $md = new MetadataStorage(new PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']));
     $md->initDatabase();
     $tempFile = tempnam(sys_get_temp_dir(), '');
     if (file_exists($tempFile)) {
         @unlink($tempFile);
     }
     mkdir($tempFile);
     $this->tempFile = $tempFile;
     $document = new DocumentStorage($tempFile);
     $this->r = new RemoteStorage($md, $document);
 }
 public function getFolder(Path $p, array $ifNoneMatch = null)
 {
     if (null !== $ifNoneMatch && in_array($this->md->getVersion($p), $ifNoneMatch)) {
         throw new RemoteStorageException('folder not modified');
     }
     $f = array('@context' => 'http://remotestorage.io/spec/folder-description', 'items' => $this->d->getFolder($p));
     foreach ($f['items'] as $name => $meta) {
         $f['items'][$name]['ETag'] = $this->md->getVersion(new Path($p->getFolderPath() . $name));
         // if item is a folder we don't want Content-Type
         if (strrpos($name, '/') !== strlen($name) - 1) {
             $f['items'][$name]['Content-Type'] = $this->md->getContentType(new Path($p->getFolderPath() . $name));
         }
     }
     return Json::encode($f, JSON_FORCE_OBJECT);
 }
 public function setUp()
 {
     $ioStub = $this->getMockBuilder('fkooman\\IO\\IO')->getMock();
     $ioStub->method('getRandom')->will($this->onConsecutiveCalls(2, 3, 5, 7));
     $db = new PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']);
     $md = new MetadataStorage($db, '', $ioStub);
     $md->initDatabase();
     $tempFile = tempnam(sys_get_temp_dir(), '');
     if (file_exists($tempFile)) {
         @unlink($tempFile);
     }
     mkdir($tempFile);
     $this->tempFile = $tempFile;
     $document = new DocumentStorage($tempFile);
     $remoteStorage = new RemoteStorage($md, $document);
     $approvalManagementStorage = new ApprovalManagementStorage($db);
     $userAuth = new TestAuthentication();
     $apiAuth = new BearerAuthentication(new TestTokenValidator());
     $authenticationPlugin = new AuthenticationPlugin();
     $authenticationPlugin->register($userAuth, 'user');
     $authenticationPlugin->register($apiAuth, 'api');
     $this->r = new RemoteStorageService($remoteStorage, $approvalManagementStorage, new TestTemplateManager(), new RemoteStorageClientStorage(), new RemoteStorageResourceServer(), new TestApproval(), new TestAuthorizationCode(), new TestAccessToken(), array('server_mode' => 'production'), $ioStub);
     $this->r->getPluginRegistry()->registerDefaultPlugin($authenticationPlugin);
 }
Example #4
0
     // sqlite
     if (!file_exists(substr($dbDsn, 7))) {
         // sqlite file does not exist
         $initDb = true;
     }
 }
 $db = new PDO($dbDsn, $configReader->v('Db', 'username', false), $configReader->v('Db', 'password', false));
 // only enable templateCache when in production mode
 if ('development' !== $serverMode) {
     $templateCache = $configReader->v('templateCache', false, sprintf('%s/data/tpl', dirname(__DIR__)));
 } else {
     $templateCache = null;
 }
 $templateManager = new TwigTemplateManager(array(dirname(__DIR__) . '/views', dirname(__DIR__) . '/config/views'), $templateCache);
 $templateManager->setDefault(array('rootFolder' => $request->getUrl()->getRoot(), 'serverMode' => $serverMode));
 $md = new MetadataStorage($db);
 $approvalStorage = new PdoApprovalStorage($db);
 $authorizationCodeStorage = new PdoAuthorizationCodeStorage($db);
 $accessTokenStorage = new PdoAccessTokenStorage($db);
 if ($initDb) {
     $md->initDatabase();
     $approvalStorage->initDatabase();
     $authorizationCodeStorage->initDatabase();
     $accessTokenStorage->initDatabase();
 }
 $remoteStorage = new RemoteStorage($md, $document);
 $session = new Session('php-remote-storage', array('secure' => 'development' !== $serverMode));
 $userAuth = new FormAuthentication(function ($userId) use($configReader) {
     $userList = $configReader->v('Users');
     if (null === $userList || !array_key_exists($userId, $userList)) {
         return false;
Example #5
0
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
require_once dirname(__DIR__) . '/vendor/autoload.php';
use fkooman\Config\YamlFile;
use fkooman\Config\Reader;
use fkooman\RemoteStorage\MetadataStorage;
use fkooman\OAuth\Storage\PdoAccessTokenStorage;
use fkooman\OAuth\Storage\PdoAuthorizationCodeStorage;
use fkooman\OAuth\Storage\PdoApprovalStorage;
try {
    $configReader = new Reader(new YamlFile(dirname(__DIR__) . '/config/server.yaml'));
    $db = new PDO($configReader->v('Db', 'dsn', false, sprintf('sqlite:%s/data/rs.sqlite', dirname(__DIR__))), $configReader->v('Db', 'username', false), $configReader->v('Db', 'password', false));
    $metadataStorage = new MetadataStorage($db);
    $metadataStorage->initDatabase();
    $approvalStorage = new PdoApprovalStorage($db);
    $approvalStorage->initDatabase();
    $authorizationCodeStorage = new PdoAuthorizationCodeStorage($db);
    $authorizationCodeStorage->initDatabase();
    $accessTokenStorage = new PdoAccessTokenStorage($db);
    $accessTokenStorage->initDatabase();
} catch (Exception $e) {
    echo $e->getMessage() . PHP_EOL;
    exit(1);
}