diff --git a/dev/tests/unit/framework/Magento/Test/AbstractFactoryTestCase.php b/dev/tests/unit/framework/Magento/Test/AbstractFactoryTestCase.php
new file mode 100644
index 0000000000000000000000000000000000000000..3727868d8ab7095dca52c3be27706b0f6f548392
--- /dev/null
+++ b/dev/tests/unit/framework/Magento/Test/AbstractFactoryTestCase.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Framework for unit tests containing helper methods
+ *
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ *
+ * Number of fields is necessary because of the number of fields used by multiple layers
+ * of parent classes.
+ *
+ */
+namespace Magento\Test;
+
+abstract class AbstractFactoryTestCase extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\TestFramework\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var string
+     */
+    protected $factoryClassName;
+
+    /**
+     * @var string
+     */
+    protected $instanceClassName;
+
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $objectManagerMock;
+
+    /**
+     * @var object
+     */
+    protected $factory;
+
+    protected function setUp()
+    {
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->objectManagerMock = $this->getMockBuilder('Magento\Framework\ObjectManagerInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->factory = $this->objectManager->getObject(
+            $this->factoryClassName,
+            ['objectManager' => $this->objectManagerMock]
+        );
+    }
+
+    public function testCreate()
+    {
+        $instanceMock = $this->getMockBuilder($this->instanceClassName)
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->objectManagerMock->expects($this->once())
+            ->method('create')
+            ->will($this->returnValue($instanceMock));
+        $this->assertSame($instanceMock, $this->factory->create());
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/AreaTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/AreaTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..bf2f452a45a18a25c4b183457c32aeaeea6fac5c
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/AreaTest.php
@@ -0,0 +1,316 @@
+<?php
+/**
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Framework\App;
+
+/**
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class AreaTest extends \PHPUnit_Framework_TestCase
+{
+    const SCOPE_ID = '1';
+
+    /**
+     * @var \Magento\TestFramework\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var \Magento\Framework\Event\ManagerInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $eventManagerMock;
+
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $objectManagerMock;
+
+    /**
+     * @var \Magento\Framework\App\ObjectManager\ConfigLoader | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $diConfigLoaderMock;
+
+    /**
+     * @var \Magento\Framework\TranslateInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $translatorMock;
+
+    /**
+     * @var \Psr\Log\LoggerInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $loggerMock;
+
+    /**
+     * @var \Magento\Framework\App\DesignInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $designMock;
+
+    /**
+     * @var \Magento\Framework\App\ScopeResolverInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $scopeResolverMock;
+
+    /**
+     * @var \Magento\Framework\View\DesignExceptions | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $designExceptionsMock;
+
+    /**
+     * @var string
+     */
+    protected $areaCode;
+
+    /**
+     * @var Area
+     */
+    protected $object;
+
+    /** @var \Magento\Framework\Phrase\RendererInterface */
+    private $defaultRenderer;
+
+    public function setUp()
+    {
+        $this->defaultRenderer = \Magento\Framework\Phrase::getRenderer();
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->loggerMock = $this->getMockBuilder('Psr\Log\LoggerInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->eventManagerMock = $this->getMockBuilder('Magento\Framework\Event\ManagerInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->translatorMock = $this->getMockBuilder('Magento\Framework\TranslateInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->diConfigLoaderMock = $this->getMockBuilder('Magento\Framework\App\ObjectManager\ConfigLoader')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->objectManagerMock = $this->getMockBuilder('Magento\Framework\ObjectManagerInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->designMock = $this->getMockBuilder('Magento\Framework\App\DesignInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->scopeResolverMock = $this->getMockBuilder('Magento\Framework\App\ScopeResolverInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $scopeMock = $this->getMockBuilder('Magento\Framework\App\ScopeInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $scopeMock->expects($this->any())
+            ->method('getId')
+            ->will($this->returnValue(self::SCOPE_ID));
+        $this->scopeResolverMock->expects($this->any())
+            ->method('getScope')
+            ->will($this->returnValue($scopeMock));
+        $this->designExceptionsMock = $this->getMockBuilder('Magento\Framework\View\DesignExceptions')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->areaCode = Area::AREA_FRONTEND;
+
+        $this->object = $this->objectManager->getObject(
+            'Magento\Framework\App\Area',
+            [
+                'logger' => $this->loggerMock,
+                'objectManager' => $this->objectManagerMock,
+                'eventManager' => $this->eventManagerMock,
+                'translator' => $this->translatorMock,
+                'diConfigLoader' => $this->diConfigLoaderMock,
+                'design' => $this->designMock,
+                'scopeResolver' => $this->scopeResolverMock,
+                'designExceptions' => $this->designExceptionsMock,
+                'areaCode' => $this->areaCode,
+            ]
+        );
+    }
+
+    public function tearDown()
+    {
+        \Magento\Framework\Phrase::setRenderer($this->defaultRenderer);
+    }
+
+    public function testLoadConfig()
+    {
+        $this->verifyLoadConfig();
+        $this->object->load(Area::PART_CONFIG);
+    }
+
+    public function testLoadTranslate()
+    {
+        $this->translatorMock->expects($this->once())
+            ->method('loadData');
+        $renderMock = $this->getMockBuilder('Magento\Framework\Phrase\RendererInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->objectManagerMock->expects($this->once())
+            ->method('get')
+            ->with('Magento\Framework\Phrase\RendererInterface')
+            ->will($this->returnValue($renderMock));
+        $this->object->load(Area::PART_TRANSLATE);
+    }
+
+    public function testLoadDesign()
+    {
+        $designMock = $this->getMockBuilder('Magento\Framework\View\DesignInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->objectManagerMock->expects($this->once())
+            ->method('get')
+            ->with('Magento\Framework\View\DesignInterface')
+            ->will($this->returnValue($designMock));
+        $designMock->expects($this->once())
+            ->method('setArea')
+            ->with($this->areaCode)
+            ->willReturnSelf();
+        $designMock->expects($this->once())
+            ->method('setDefaultDesignTheme');
+        $this->object->load(Area::PART_DESIGN);
+    }
+
+    public function testLoadUnknownPart()
+    {
+        $this->objectManagerMock->expects($this->never())
+            ->method('configure');
+        $this->objectManagerMock->expects($this->never())
+            ->method('get');
+        $this->object->load('unknown part');
+    }
+
+    public function testLoad()
+    {
+        $this->verifyLoadConfig();
+        $this->translatorMock->expects($this->once())
+            ->method('loadData');
+        $renderMock = $this->getMockBuilder('Magento\Framework\Phrase\RendererInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $designMock = $this->getMockBuilder('Magento\Framework\View\DesignInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $designMock->expects($this->once())
+            ->method('setArea')
+            ->with($this->areaCode)
+            ->willReturnSelf();
+        $designMock->expects($this->once())
+            ->method('setDefaultDesignTheme');
+        $this->objectManagerMock->expects($this->exactly(2))
+            ->method('get')
+            ->will($this->returnValueMap(
+                [
+                    ['Magento\Framework\Phrase\RendererInterface', $renderMock],
+                    ['Magento\Framework\View\DesignInterface', $designMock],
+                ]
+            ));
+        $this->object->load();
+    }
+
+    private function verifyLoadConfig()
+    {
+        $configs = ['dummy configs'];
+        $this->diConfigLoaderMock->expects($this->once())
+            ->method('load')
+            ->with($this->areaCode)
+            ->will($this->returnValue($configs));
+        $this->objectManagerMock->expects($this->once())
+            ->method('configure')
+            ->with($configs);
+    }
+
+    public function testDetectDesign()
+    {
+        $this->designExceptionsMock->expects($this->never())
+            ->method('getThemeByRequest');
+        $this->designMock->expects($this->once())
+            ->method('loadChange')
+            ->with(self::SCOPE_ID)
+            ->willReturnSelf();
+        $designMock = $this->getMockBuilder('Magento\Framework\View\DesignInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->objectManagerMock->expects($this->once())
+            ->method('get')
+            ->with('Magento\Framework\View\DesignInterface')
+            ->will($this->returnValue($designMock));
+        $this->designMock->expects($this->once())
+            ->method('changeDesign')
+            ->with($designMock)
+            ->willReturnSelf();
+        $this->object->detectDesign();
+    }
+
+    /**
+     * @param string|bool $value
+     * @param int $callNum
+     * @param int $callNum2
+     * @dataProvider detectDesignByRequestDataProvider
+     */
+    public function testDetectDesignByRequest($value, $callNum, $callNum2)
+    {
+        $this->designExceptionsMock->expects($this->once())
+            ->method('getThemeByRequest')
+            ->will($this->returnValue($value));
+        $designMock = $this->getMockBuilder('Magento\Framework\View\DesignInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $designMock->expects($this->exactly($callNum))
+            ->method('setDesignTheme');
+        $this->objectManagerMock->expects($this->once())
+            ->method('get')
+            ->with('Magento\Framework\View\DesignInterface')
+            ->will($this->returnValue($designMock));
+        $this->designMock->expects($this->exactly($callNum2))
+            ->method('loadChange')
+            ->with(self::SCOPE_ID)
+            ->willReturnSelf();
+        $this->designMock->expects($this->exactly($callNum2))
+            ->method('changeDesign')
+            ->with($designMock)
+            ->willReturnSelf();
+        $requestMock = $this->getMockBuilder('Magento\Framework\App\Request\Http')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->object->detectDesign($requestMock);
+    }
+
+    public function detectDesignByRequestDataProvider()
+    {
+        return [
+            [false, 0, 1],
+            ['theme', 1, 0],
+        ];
+    }
+
+    public function testDetectDesignByRequestWithException()
+    {
+        $exception = new \Exception('exception');
+        $this->designExceptionsMock->expects($this->once())
+            ->method('getThemeByRequest')
+            ->will($this->throwException($exception));
+        $designMock = $this->getMockBuilder('Magento\Framework\View\DesignInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $designMock->expects($this->never())
+            ->method('setDesignTheme');
+        $this->objectManagerMock->expects($this->once())
+            ->method('get')
+            ->with('Magento\Framework\View\DesignInterface')
+            ->will($this->returnValue($designMock));
+        $this->designMock->expects($this->once())
+            ->method('loadChange')
+            ->with(self::SCOPE_ID)
+            ->willReturnSelf();
+        $this->designMock->expects($this->once())
+            ->method('changeDesign')
+            ->with($designMock)
+            ->willReturnSelf();
+        $requestMock = $this->getMockBuilder('Magento\Framework\App\Request\Http')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->loggerMock->expects($this->once())
+            ->method('critical')
+            ->with($exception);
+        $this->object->detectDesign($requestMock);
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Config/BaseFactoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Config/BaseFactoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..f6448f3f96ddd45a7a7b7f26a779cb04d04f73ab
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Config/BaseFactoryTest.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\App\Config;
+
+class BaseFactoryTest extends \Magento\Test\AbstractFactoryTestCase
+{
+    protected function setUp()
+    {
+        $this->instanceClassName = 'Magento\Framework\App\Config\Base';
+        $this->factoryClassName = 'Magento\Framework\App\Config\BaseFactory';
+        parent::setUp();
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Config/Data/BackendModelPoolTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Data/ProcessorFactoryTest.php
similarity index 93%
rename from dev/tests/unit/testsuite/Magento/Framework/App/Config/Data/BackendModelPoolTest.php
rename to dev/tests/unit/testsuite/Magento/Framework/App/Config/Data/ProcessorFactoryTest.php
index 07933f8e00ba7e157ecc565341980d45633ffb47..807f2cf9e59ca758ffa323576e1fb97f1e94b10c 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/App/Config/Data/BackendModelPoolTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Data/ProcessorFactoryTest.php
@@ -5,7 +5,7 @@
  */
 namespace Magento\Framework\App\Config\Data;
 
-class BackendModelPoolTest extends \PHPUnit_Framework_TestCase
+class ProcessorFactoryTest extends \PHPUnit_Framework_TestCase
 {
     /**
      * @var \Magento\Framework\App\Config\Data\ProcessorFactory
@@ -27,7 +27,6 @@ class BackendModelPoolTest extends \PHPUnit_Framework_TestCase
         $this->_objectManager = $this->getMock('Magento\Framework\ObjectManagerInterface');
         $this->_model = new \Magento\Framework\App\Config\Data\ProcessorFactory($this->_objectManager);
         $this->_processorMock = $this->getMockForAbstractClass('Magento\Framework\App\Config\Data\ProcessorInterface');
-        $this->_processorMock->expects($this->any())->method('processValue')->will($this->returnArgument(0));
     }
 
     /**
@@ -54,6 +53,7 @@ class BackendModelPoolTest extends \PHPUnit_Framework_TestCase
     /**
      * @covers \Magento\Framework\App\Config\Data\ProcessorFactory::get
      * @expectedException \InvalidArgumentException
+     * @expectedExceptionMessageRegExp /\w+\\WrongBackendModel is not instance of \w+\\ProcessorInterface/
      */
     public function testGetModelWithWrongInterface()
     {
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Config/DataFactoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Config/DataFactoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..3f578938d546fb7e5426ff968ed96ded17e80785
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Config/DataFactoryTest.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\App\Config;
+
+class DataFactoryTest extends \Magento\Test\AbstractFactoryTestCase
+{
+    protected function setUp()
+    {
+        $this->instanceClassName = 'Magento\Framework\App\Config\Data';
+        $this->factoryClassName = 'Magento\Framework\App\Config\DataFactory';
+        parent::setUp();
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/ReaderTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/ReaderTest.php
index 5193cf725cb9d23f227773cd440fe9c8842f04b5..7fcf4042a15d6c38735c1c7c250551766d6818f6 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/ReaderTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/ReaderTest.php
@@ -9,60 +9,60 @@ use Magento\Framework\Filesystem;
 
 class ReaderTest extends \PHPUnit_Framework_TestCase
 {
+    /**
+     * @var \Magento\TestFramework\Helper\ObjectManager
+     */
+    protected $objectManager;
+
     /**
      * @var \Magento\Framework\App\Config\Initial\Reader
      */
-    protected $_model;
+    protected $model;
 
     /**
-     * @var \Magento\Framework\Config\FileResolverInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\Config\FileResolverInterface | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $_fileResolverMock;
+    protected $fileResolverMock;
 
     /**
-     * @var \Magento\Framework\App\Config\Initial\Converter|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\Config\Initial\Converter | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $_converterMock;
+    protected $converterMock;
 
     /**
      * @var string
      */
-    protected $_filePath;
+    protected $filePath;
+
+    /**
+     * @var \Magento\Framework\Config\ValidationStateInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $validationStateMock;
 
     /**
-     * @var \Magento\Framework\Filesystem\Directory\Read|\PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\Config\Initial\SchemaLocator | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $rootDirectory;
+    protected $schemaLocatorMock;
 
     protected function setUp()
     {
-        $this->_filePath = __DIR__ . '/_files/';
-        $this->_fileResolverMock = $this->getMock('Magento\Framework\Config\FileResolverInterface');
-        $this->_converterMock = $this->getMock('Magento\Framework\App\Config\Initial\Converter');
-        $schemaLocatorMock = $this->getMock(
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->filePath = __DIR__ . '/_files/';
+        $this->fileResolverMock = $this->getMock('Magento\Framework\Config\FileResolverInterface');
+        $this->converterMock = $this->getMock('Magento\Framework\App\Config\Initial\Converter');
+        $this->schemaLocatorMock = $this->getMock(
             'Magento\Framework\App\Config\Initial\SchemaLocator',
             [],
             [],
             '',
             false
         );
-        $validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
-        $validationStateMock->expects($this->once())->method('isValidated')->will($this->returnValue(true));
-        $schemaFile = $this->_filePath . 'config.xsd';
-        $schemaLocatorMock->expects($this->once())->method('getSchema')->will($this->returnValue($schemaFile));
-        $this->rootDirectory = $this->getMock(
-            'Magento\Framework\Filesystem\Directory\Read',
-            ['readFile', 'getRelativePath'],
-            [],
-            '',
-            false
-        );
-        $this->_model = new \Magento\Framework\App\Config\Initial\Reader(
-            $this->_fileResolverMock,
-            $this->_converterMock,
-            $schemaLocatorMock,
-            $validationStateMock
-        );
+        $this->validationStateMock = $this->getMock('Magento\Framework\Config\ValidationStateInterface');
+    }
+
+    public function testConstructor()
+    {
+        $this->createModelAndVerifyConstructor();
     }
 
     /**
@@ -70,18 +70,13 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
      */
     public function testReadNoFiles()
     {
-        $this->_fileResolverMock->expects(
-            $this->at(0)
-        )->method(
-            'get'
-        )->with(
-            'config.xml',
-            'global'
-        )->will(
-            $this->returnValue([])
-        );
+        $this->createModelAndVerifyConstructor();
+        $this->fileResolverMock->expects($this->at(0))
+            ->method('get')
+            ->with('config.xml', 'global')
+            ->will($this->returnValue([]));
 
-        $this->assertEquals([], $this->_model->read());
+        $this->assertEquals([], $this->model->read());
     }
 
     /**
@@ -89,37 +84,67 @@ class ReaderTest extends \PHPUnit_Framework_TestCase
      */
     public function testReadValidConfig()
     {
+        $this->createModelAndVerifyConstructor();
         $testXmlFilesList = [
-            file_get_contents($this->_filePath . 'initial_config1.xml'),
-            file_get_contents($this->_filePath . 'initial_config2.xml'),
+            file_get_contents($this->filePath . 'initial_config1.xml'),
+            file_get_contents($this->filePath . 'initial_config2.xml'),
         ];
         $expectedConfig = ['data' => [], 'metadata' => []];
 
-        $this->_fileResolverMock->expects(
-            $this->at(0)
-        )->method(
-            'get'
-        )->with(
-            'config.xml',
-            'global'
-        )->will(
-            $this->returnValue($testXmlFilesList)
-        );
+        $this->fileResolverMock->expects($this->at(0))
+            ->method('get')
+            ->with('config.xml', 'global')
+            ->will($this->returnValue($testXmlFilesList));
 
-        $this->_converterMock->expects(
-            $this->once()
-        )->method(
-            'convert'
-        )->with(
-            $this->anything()
-        )->will(
-            $this->returnValue($expectedConfig)
-        );
+        $this->converterMock->expects($this->once())
+            ->method('convert')
+            ->with($this->anything())
+            ->will($this->returnValue($expectedConfig));
+
+        $this->assertEquals($expectedConfig, $this->model->read());
+    }
+
+    /**
+     * @covers \Magento\Framework\App\Config\Initial\Reader::read
+     * @expectedException \Magento\Framework\Exception
+     * @expectedExceptionMessageRegExp /Invalid XML in file \w+/
+     */
+    public function testReadInvalidConfig()
+    {
+        $this->createModelAndVerifyConstructor();
+        $testXmlFilesList = [
+            file_get_contents($this->filePath . 'invalid_config.xml'),
+            file_get_contents($this->filePath . 'initial_config2.xml'),
+        ];
+        $expectedConfig = ['data' => [], 'metadata' => []];
+
+        $this->fileResolverMock->expects($this->at(0))
+            ->method('get')
+            ->with('config.xml', 'global')
+            ->will($this->returnValue($testXmlFilesList));
 
-        $this->rootDirectory->expects($this->any())->method('getRelativePath')->will($this->returnArgument(0));
+        $this->converterMock->expects($this->never())
+            ->method('convert')
+            ->with($this->anything())
+            ->will($this->returnValue($expectedConfig));
 
-        $this->rootDirectory->expects($this->any())->method('readFile')->will($this->returnValue('<config></config>'));
+        $this->model->read();
+    }
+
+    private function createModelAndVerifyConstructor()
+    {
+        $this->validationStateMock->expects($this->once())->method('isValidated')->will($this->returnValue(true));
+        $schemaFile = $this->filePath . 'config.xsd';
+        $this->schemaLocatorMock->expects($this->once())->method('getSchema')->will($this->returnValue($schemaFile));
 
-        $this->assertEquals($expectedConfig, $this->_model->read());
+        $this->model = $this->objectManager->getObject(
+            'Magento\Framework\App\Config\Initial\Reader',
+            [
+                'fileResolver' => $this->fileResolverMock,
+                'converter' => $this->converterMock,
+                'schemaLocator' => $this->schemaLocatorMock,
+                'validationState' => $this->validationStateMock
+            ]
+        );
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/SchemaLocatorTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/SchemaLocatorTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..36ed85447054c40c0e7c3723669f3c5d6533f90f
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/SchemaLocatorTest.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\App\Config\Initial;
+
+class SchemaLocatorTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\TestFramework\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $_moduleReaderMock;
+
+    /**
+     * @var \Magento\Framework\App\Config\Initial\SchemaLocator
+     */
+    protected $_model;
+
+    protected function setUp()
+    {
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->_moduleReaderMock = $this->getMock('Magento\Framework\Module\Dir\Reader', [], [], '', false);
+        $this->_moduleReaderMock->expects($this->once())
+            ->method('getModuleDir')
+            ->with('etc', 'moduleName')
+            ->will($this->returnValue('schema_dir'));
+        $this->_model = $this->objectManager->getObject(
+            'Magento\Framework\App\Config\Initial\SchemaLocator',
+            [
+                'moduleReader' => $this->_moduleReaderMock,
+                'moduleName' => 'moduleName',
+            ]
+        );
+    }
+
+    public function testGetSchema()
+    {
+        $this->assertEquals('schema_dir/config.xsd', $this->_model->getSchema());
+    }
+
+    public function testGetPerFileSchema()
+    {
+        $this->assertEquals('schema_dir/config.xsd', $this->_model->getPerFileSchema());
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/_files/invalid_config.xml b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/_files/invalid_config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..07a89760bb4c4ef7a66d1fae4281121d2c34df91
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Initial/_files/invalid_config.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!--
+/**
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+-->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../../../../app/code/Magento/Core/etc/config.xsd">
+    <invalid></invalid>
+</config>
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Config/Storage/WriterTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Storage/WriterTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..21a24fcfafafde4e8606a9c92c578eb01b858c80
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Config/Storage/WriterTest.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\App\Config\Storage;
+
+use Magento\Framework\App\ScopeInterface;
+
+class WriterTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\TestFramework\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var \Magento\Framework\App\Config\Storage\Writer
+     */
+    protected $model;
+
+    /**
+     * @var \Magento\Framework\App\Config\Resource\ConfigInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $resource;
+
+    protected function setUp()
+    {
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->resource = $this->getMockBuilder('Magento\Framework\App\Config\Resource\ConfigInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->model = $this->objectManager->getObject(
+            'Magento\Framework\App\Config\Storage\Writer',
+            ['resource' => $this->resource]
+        );
+    }
+
+    public function testDelete()
+    {
+        $this->resource->expects($this->once())
+            ->method('deleteConfig')
+            ->with('path', ScopeInterface::SCOPE_DEFAULT, 0);
+        $this->model->delete('path');
+    }
+
+    public function testDeleteOptions()
+    {
+        $scope = 'scope';
+        $scopeId = '1';
+        $this->resource->expects($this->once())
+            ->method('deleteConfig')
+            ->with('path', $scope, $scopeId);
+        $this->model->delete('path', $scope, $scopeId);
+    }
+
+    public function testSave()
+    {
+        $this->resource->expects($this->once())
+            ->method('saveConfig')
+            ->with('path', 'value', ScopeInterface::SCOPE_DEFAULT, 0);
+        $this->model->save('path', 'value');
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Config/ValueFactoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Config/ValueFactoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..8ccad2ea3d6b6c1b234019b9fac0b02eb783faa9
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Config/ValueFactoryTest.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\App\Config;
+
+class ValueFactoryTest extends \Magento\Test\AbstractFactoryTestCase
+{
+    protected function setUp()
+    {
+        $this->instanceClassName = 'Magento\Framework\App\Config\ValueInterface';
+        $this->factoryClassName = 'Magento\Framework\App\Config\ValueFactory';
+        parent::setUp();
+    }
+
+    /**
+     * @expectedException \InvalidArgumentException
+     */
+    public function testCreateWithException()
+    {
+        $this->objectManagerMock->expects($this->once())
+            ->method('create')
+            ->will($this->returnValue('somethingElse'));
+        $this->factory->create();
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Http/ContextTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Http/ContextTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..6cf82d0261205abeee96a37ed3c620cd0129b9b0
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Http/ContextTest.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Framework\App\Http;
+
+class ContextTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\TestFramework\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var Context
+     */
+    protected $object;
+
+    public function setUp()
+    {
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->object = $this->objectManager->getObject('Magento\Framework\App\Http\Context');
+    }
+
+    public function testGetValue()
+    {
+        $this->assertNull($this->object->getValue('key'));
+    }
+
+    public function testSetGetValue()
+    {
+        $this->object->setValue('key', 'value', 'default');
+        $this->assertEquals('value', $this->object->getValue('key'));
+    }
+
+    public function testSetUnsetGetValue()
+    {
+        $this->object->setValue('key', 'value', 'default');
+        $this->object->unsValue('key');
+        $this->assertEquals('default', $this->object->getValue('key'));
+    }
+
+    public function testGetData()
+    {
+        $this->object->setValue('key1', 'value1', 'default1');
+        $this->object->setValue('key2', 'value2', 'default2');
+        $this->object->setValue('key3', 'value3', 'value3');
+        $this->object->unsValue('key1');
+        $this->assertEquals(['key2' => 'value2'], $this->object->getData());
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Resource/ConnectionFactoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Resource/ConnectionFactoryTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..74105e5c2d30350344ccee3992b6025c588b3543
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Resource/ConnectionFactoryTest.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\App\Resource;
+
+use Magento\Framework\DB\Adapter\DdlCache;
+
+class ConnectionFactoryTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\TestFramework\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var \Magento\Framework\App\Resource\ConnectionFactory
+     */
+    protected $model;
+
+    /**
+     * @var \Magento\Framework\ObjectManagerInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $objectManagerMock;
+
+    protected function setUp()
+    {
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->objectManagerMock = $this->getMockBuilder('Magento\Framework\ObjectManagerInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->model = $this->objectManager->getObject(
+            'Magento\Framework\App\Resource\ConnectionFactory',
+            ['objectManager' => $this->objectManagerMock]
+        );
+    }
+
+    public function testCreateNull()
+    {
+        $this->objectManagerMock->expects($this->never())
+            ->method('get');
+        $this->assertNull($this->model->create([]));
+        $this->assertNull($this->model->create(['something']));
+        $this->assertNull($this->model->create(['active' => null]));
+    }
+
+    public function testCreate()
+    {
+        $cacheAdapterMock = $this->getMockBuilder('Magento\Framework\Cache\FrontendInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $loggerMock = $this->getMockBuilder('Magento\Framework\DB\LoggerInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $connectionAdapterMock = $this->getMockBuilder('Magento\Framework\App\Resource\ConnectionAdapterInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $adapterInstanceMock = $this->getMockBuilder('Magento\Framework\DB\Adapter\AdapterInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $adapterInstanceMock->expects($this->once())
+            ->method('setCacheAdapter')
+            ->with($cacheAdapterMock)
+            ->willReturnSelf();
+        $connectionAdapterMock->expects($this->once())
+            ->method('getConnection')
+            ->with($loggerMock)
+            ->will($this->returnValue($adapterInstanceMock));
+        $this->objectManagerMock->expects($this->once())
+            ->method('create')
+            ->with('Magento\Framework\App\Resource\ConnectionAdapterInterface')
+            ->will($this->returnValue($connectionAdapterMock));
+        $poolMock = $this->getMockBuilder('Magento\Framework\App\Cache\Type\FrontendPool')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $poolMock->expects($this->once())
+            ->method('get')
+            ->with(DdlCache::TYPE_IDENTIFIER)
+            ->will($this->returnValue($cacheAdapterMock));
+        $this->objectManagerMock->expects($this->any())
+            ->method('get')
+            ->will($this->returnValueMap(
+                [
+                    ['Magento\Framework\DB\LoggerInterface', $loggerMock],
+                    ['Magento\Framework\App\Cache\Type\FrontendPool', $poolMock],
+                ]
+            ));
+        $this->assertSame($adapterInstanceMock, $this->model->create(['active' => true]));
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Response/Http/FileFactoryTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Response/Http/FileFactoryTest.php
index b6989570318e3ee4cfce0b55b685f327c907eed3..d037063ed3a7b616db699510a06fb8c0a15aeb32 100644
--- a/dev/tests/unit/testsuite/Magento/Framework/App/Response/Http/FileFactoryTest.php
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Response/Http/FileFactoryTest.php
@@ -8,71 +8,61 @@ namespace Magento\Framework\App\Response\Http;
 class FileFactoryTest extends \PHPUnit_Framework_TestCase
 {
     /**
-     * @var \Magento\Framework\App\Response\Http\FileFactory
+     * @var \Magento\TestFramework\Helper\ObjectManager
      */
-    protected $_model;
+    protected $objectManager;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \PHPUnit_Framework_MockObject_MockObject | \Magento\Framework\Filesystem
      */
-    protected $_fileSystemMock;
+    protected $fileSystemMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \PHPUnit_Framework_MockObject_MockObject | \Magento\Framework\App\Response\Http
      */
-    protected $_responseMock;
+    protected $responseMock;
 
     /**
-     * @var \Magento\Framework\Filesystem\Directory\WriteInterface
+     * @var \Magento\Framework\Filesystem\Directory\WriteInterface | \PHPUnit_Framework_MockObject_MockObject
      */
-    protected $_dirMock;
+    protected $dirMock;
 
     protected function setUp()
     {
-        $this->_fileSystemMock = $this->getMock(
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->fileSystemMock = $this->getMock(
             'Magento\Framework\Filesystem',
             ['getDirectoryWrite'],
             [],
             '',
             false
         );
-        $this->_dirMock = $this->getMockBuilder(
+        $this->dirMock = $this->getMockBuilder(
             '\Magento\Framework\Filesystem\Directory\Write'
         )->disableOriginalConstructor()->getMock();
 
-        $this->_fileSystemMock->expects(
+        $this->fileSystemMock->expects(
             $this->any()
         )->method(
             'getDirectoryWrite'
         )->withAnyParameters()->will(
-            $this->returnValue($this->_dirMock)
+            $this->returnValue($this->dirMock)
         );
 
-        $this->_fileSystemMock->expects(
+        $this->fileSystemMock->expects(
             $this->any()
         )->method(
             'isFile'
         )->withAnyParameters()->will(
             $this->returnValue(0)
         );
-        $this->_responseMock = $this->getMock(
+        $this->responseMock = $this->getMock(
             'Magento\Framework\App\Response\Http',
-            ['setHeader', 'sendHeaders', '__wakeup'],
+            ['setHeader', 'sendHeaders', 'setHttpResponseCode', 'clearBody', 'setBody', '__wakeup'],
             [],
             '',
             false
         );
-        $this->_responseMock->expects(
-            $this->any()
-        )->method(
-            'setHeader'
-        )->will(
-            $this->returnValue($this->_responseMock)
-        );
-        $this->_model = new \Magento\Framework\App\Response\Http\FileFactory(
-            $this->_responseMock,
-            $this->_fileSystemMock
-        );
     }
 
     /**
@@ -80,7 +70,7 @@ class FileFactoryTest extends \PHPUnit_Framework_TestCase
      */
     public function testCreateIfContentDoesntHaveRequiredKeys()
     {
-        $this->_model->create('fileName', []);
+        $this->getModel()->create('fileName', []);
     }
 
     /**
@@ -92,6 +82,183 @@ class FileFactoryTest extends \PHPUnit_Framework_TestCase
         $file = 'some_file';
         $content = ['type' => 'filename', 'value' => $file];
 
-        $this->_model->create('fileName', $content);
+        $this->responseMock->expects(
+            $this->never()
+        )->method(
+            'setHeader'
+        )->will(
+            $this->returnSelf()
+        );
+        $this->responseMock->expects(
+            $this->never()
+        )->method(
+            'setHttpResponseCode'
+        )->will(
+            $this->returnSelf()
+        );
+        $this->getModel()->create('fileName', $content);
+    }
+
+    public function testCreateArrayContent()
+    {
+        $file = 'some_file';
+        $content = ['type' => 'filename', 'value' => $file];
+
+        $this->dirMock->expects($this->once())
+            ->method('isFile')
+            ->will($this->returnValue(true));
+        $this->dirMock->expects($this->once())
+            ->method('stat')
+            ->will($this->returnValue(['size' => 100]));
+        $this->responseMock->expects($this->exactly(6))
+            ->method('setHeader')
+            ->will($this->returnSelf());
+        $this->responseMock->expects($this->once())
+            ->method('setHttpResponseCode')
+            ->with(200)
+            ->will($this->returnSelf());
+        $this->responseMock->expects($this->once())
+            ->method('sendHeaders')
+            ->will($this->returnSelf());
+
+        $streamMock = $this->getMockBuilder('Magento\Framework\Filesystem\File\WriteInterface')
+            ->disableOriginalConstructor()->getMock();
+        $this->dirMock->expects($this->once())
+            ->method('openFile')
+            ->will($this->returnValue($streamMock));
+        $this->dirMock->expects($this->never())
+            ->method('delete')
+            ->will($this->returnValue($streamMock));
+        $streamMock->expects($this->at(1))
+            ->method('eof')
+            ->will($this->returnValue(false));
+        $streamMock->expects($this->at(2))
+            ->method('eof')
+            ->will($this->returnValue(true));
+        $streamMock->expects($this->once())
+            ->method('read');
+        $streamMock->expects($this->once())
+            ->method('close');
+        $this->getModelMock()->create('fileName', $content);
+    }
+
+    public function testCreateArrayContentRm()
+    {
+        $file = 'some_file';
+        $content = ['type' => 'filename', 'value' => $file, 'rm' => 1];
+
+        $this->dirMock->expects($this->once())
+            ->method('isFile')
+            ->will($this->returnValue(true));
+        $this->dirMock->expects($this->once())
+            ->method('stat')
+            ->will($this->returnValue(['size' => 100]));
+        $this->responseMock->expects($this->exactly(6))
+            ->method('setHeader')
+            ->will($this->returnSelf());
+        $this->responseMock->expects($this->once())
+            ->method('setHttpResponseCode')
+            ->with(200)
+            ->will($this->returnSelf());
+        $this->responseMock->expects($this->once())
+            ->method('sendHeaders')
+            ->will($this->returnSelf());
+
+        $streamMock = $this->getMockBuilder('Magento\Framework\Filesystem\File\WriteInterface')
+            ->disableOriginalConstructor()->getMock();
+        $this->dirMock->expects($this->once())
+            ->method('openFile')
+            ->will($this->returnValue($streamMock));
+        $this->dirMock->expects($this->once())
+            ->method('delete')
+            ->will($this->returnValue($streamMock));
+        $streamMock->expects($this->at(1))
+            ->method('eof')
+            ->will($this->returnValue(false));
+        $streamMock->expects($this->at(2))
+            ->method('eof')
+            ->will($this->returnValue(true));
+        $streamMock->expects($this->once())
+            ->method('read');
+        $streamMock->expects($this->once())
+            ->method('close');
+        $this->getModelMock()->create('fileName', $content);
+    }
+
+    public function testCreateStringContent()
+    {
+        $this->dirMock->expects($this->never())
+            ->method('isFile')
+            ->will($this->returnValue(true));
+        $this->dirMock->expects($this->never())
+            ->method('stat')
+            ->will($this->returnValue(['size' => 100]));
+        $this->responseMock->expects($this->exactly(6))
+            ->method('setHeader')
+            ->will($this->returnSelf());
+        $this->responseMock->expects($this->once())
+            ->method('setHttpResponseCode')
+            ->with(200)
+            ->will($this->returnSelf());
+        $this->responseMock->expects($this->once())
+            ->method('clearBody')
+            ->will($this->returnSelf());
+        $this->responseMock->expects($this->once())
+            ->method('setBody')
+            ->will($this->returnSelf());
+        $this->responseMock->expects($this->never())
+            ->method('sendHeaders')
+            ->will($this->returnSelf());
+
+        $streamMock = $this->getMockBuilder('Magento\Framework\Filesystem\File\WriteInterface')
+            ->disableOriginalConstructor()->getMock();
+        $this->dirMock->expects($this->never())
+            ->method('openFile')
+            ->will($this->returnValue($streamMock));
+        $this->dirMock->expects($this->never())
+            ->method('delete')
+            ->will($this->returnValue($streamMock));
+        $streamMock->expects($this->never())
+            ->method('eof')
+            ->will($this->returnValue(false));
+        $streamMock->expects($this->never())
+            ->method('read');
+        $streamMock->expects($this->never())
+            ->method('close');
+        $this->assertSame($this->responseMock, $this->getModel()->create('fileName', 'content'));
+    }
+
+    /**
+     * Get model
+     *
+     * @return \Magento\Framework\App\Response\Http\FileFactory
+     */
+    private function getModel()
+    {
+        return $this->objectManager->getObject(
+            'Magento\Framework\App\Response\Http\FileFactory',
+            [
+                'response' => $this->responseMock,
+                'filesystem' => $this->fileSystemMock,
+            ]
+        );
+    }
+
+    /**
+     * Get model mock
+     *
+     * @return \Magento\Framework\App\Response\Http\FileFactory | \PHPUnit_Framework_MockObject_MockBuilder
+     */
+    private function getModelMock()
+    {
+        $modelMock = $this->getMock(
+            'Magento\Framework\App\Response\Http\FileFactory',
+            ['callExit'],
+            [
+                'response' => $this->responseMock,
+                'filesystem' => $this->fileSystemMock,
+            ]
+        );
+        return $modelMock;
     }
 }
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Router/ActionList/ReaderTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Router/ActionList/ReaderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..917ddc23414d14b955e458df63f651d1adff087f
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Router/ActionList/ReaderTest.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * RouterList model test class
+ *
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\App\Router\ActionList;
+
+class ReaderTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\TestFramework\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var \Magento\Framework\Module\Dir\Reader| \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $moduleReaderMock;
+
+    /**
+     * @var \Magento\Framework\App\Router\ActionList\Reader
+     */
+    protected $actionListReader;
+
+    public function setUp()
+    {
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->moduleReaderMock = $this->getMockBuilder('Magento\Framework\Module\Dir\Reader')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->actionListReader = $this->objectManager->getObject(
+            'Magento\Framework\App\Router\ActionList\Reader',
+            ['moduleReader' => $this->moduleReaderMock]
+        );
+    }
+
+    /**
+     * @param array $actionFiles
+     * @param array $expected
+     * @dataProvider readDataProvider
+     */
+    public function testRead($actionFiles, $expected)
+    {
+        $this->moduleReaderMock->expects($this->once())
+            ->method('getActionFiles')
+            ->willReturn($actionFiles);
+        $this->assertEquals($expected, $this->actionListReader->read());
+    }
+
+    public function readDataProvider()
+    {
+        return [
+            [[], []],
+            [
+                [
+                    'Magento/Backend/Controller/Adminhtml/Cache.php',
+                    'Magento/Backend/Controller/Adminhtml/Index.php'
+                ],
+                [
+                    'magento\backend\controller\adminhtml\cache' => 'Magento\Backend\Controller\Adminhtml\Cache',
+                    'magento\backend\controller\adminhtml\index' => 'Magento\Backend\Controller\Adminhtml\Index'
+
+                ]
+            ]
+        ];
+    }
+}
diff --git a/dev/tests/unit/testsuite/Magento/Framework/App/Router/ActionListTest.php b/dev/tests/unit/testsuite/Magento/Framework/App/Router/ActionListTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..c31e5e2ac680a08d8fd3130d30536516326d5d22
--- /dev/null
+++ b/dev/tests/unit/testsuite/Magento/Framework/App/Router/ActionListTest.php
@@ -0,0 +1,163 @@
+<?php
+/**
+ * RouterList model test class
+ *
+ * Copyright Š 2015 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Framework\App\Router;
+
+class ActionListTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var \Magento\TestFramework\Helper\ObjectManager
+     */
+    protected $objectManager;
+
+    /**
+     * @var \Magento\Framework\Config\CacheInterface | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $cacheMock;
+
+    /**
+     * @var \Magento\Framework\App\Router\ActionList\Reader | \PHPUnit_Framework_MockObject_MockObject
+     */
+    protected $actionReaderMock;
+
+    /**
+     * @var \Magento\Framework\App\Router\ActionList
+     */
+    protected $actionList;
+
+    public function setUp()
+    {
+        $this->objectManager = new \Magento\TestFramework\Helper\ObjectManager($this);
+        $this->cacheMock = $this->getMockBuilder('Magento\Framework\Config\CacheInterface')
+            ->disableOriginalConstructor()
+            ->getMock();
+        $this->actionReaderMock = $this->getMockBuilder('Magento\Framework\App\Router\ActionList\Reader')
+            ->disableOriginalConstructor()
+            ->getMock();
+    }
+
+    public function testConstructorCachedData()
+    {
+        $this->cacheMock->expects($this->once())
+            ->method('load')
+            ->will($this->returnValue(serialize('data')));
+        $this->cacheMock->expects($this->never())
+            ->method('save');
+        $this->actionReaderMock->expects($this->never())
+            ->method('read');
+        $this->actionList = $this->objectManager->getObject(
+            'Magento\Framework\App\Router\ActionList',
+            [
+                'cache' => $this->cacheMock,
+                'actionReader' => $this->actionReaderMock,
+            ]
+        );
+    }
+
+    public function testConstructorNoCachedData()
+    {
+        $this->cacheMock->expects($this->once())
+            ->method('load')
+            ->will($this->returnValue(false));
+        $this->cacheMock->expects($this->once())
+            ->method('save');
+        $this->actionReaderMock->expects($this->once())
+            ->method('read')
+            ->will($this->returnValue('data'));
+        $this->actionList = $this->objectManager->getObject(
+            'Magento\Framework\App\Router\ActionList',
+            [
+                'cache' => $this->cacheMock,
+                'actionReader' => $this->actionReaderMock,
+            ]
+        );
+    }
+
+    /**
+     * @param string $module
+     * @param string $area
+     * @param string $namespace
+     * @param string $action
+     * @param array $data
+     * @param string|null $expected
+     * @dataProvider getDataProvider
+     */
+    public function testGet($module, $area, $namespace, $action, $data, $expected)
+    {
+
+        $this->cacheMock->expects($this->once())
+            ->method('load')
+            ->will($this->returnValue(false));
+        $this->cacheMock->expects($this->once())
+            ->method('save');
+        $this->actionReaderMock->expects($this->once())
+            ->method('read')
+            ->will($this->returnValue($data));
+        $this->actionList = $this->objectManager->getObject(
+            'Magento\Framework\App\Router\ActionList',
+            [
+                'cache' => $this->cacheMock,
+                'actionReader' => $this->actionReaderMock,
+            ]
+        );
+        $this->assertEquals($expected, $this->actionList->get($module, $area, $namespace, $action));
+    }
+
+    public function getDataProvider()
+    {
+        $mockClassName = 'Mock_Action_Class';
+        $actionClass = $this->getMockClass(
+            'Magento\Framework\App\ActionInterface',
+            ['dispatch', 'getResponse'],
+            [],
+            $mockClassName
+        );
+
+        return [
+            [
+                'Magento_Module',
+                'Area',
+                'Namespace',
+                'Index',
+                ['magento\module\controller\area\namespace\index' => $mockClassName],
+                $actionClass
+            ],
+            [
+                'Magento_Module',
+                '',
+                'Namespace',
+                'Index',
+                ['magento\module\controller\namespace\index' => $mockClassName],
+                $actionClass
+            ],
+            [
+                'Magento_Module',
+                'Area',
+                'Namespace',
+                'Catch',
+                ['magento\module\controller\area\namespace\catchaction' => $mockClassName],
+                $actionClass
+            ],
+            [
+                'Magento_Module',
+                'Area',
+                'Namespace',
+                'Index',
+                ['magento\module\controller\area\namespace\index' => 'Not_Exist_Class'],
+                null
+            ],
+            [
+                'Magento_Module',
+                'Area',
+                'Namespace',
+                'Index',
+                [],
+                null
+            ],
+        ];
+    }
+}
diff --git a/lib/internal/Magento/Framework/App/Config/Data/ProcessorFactory.php b/lib/internal/Magento/Framework/App/Config/Data/ProcessorFactory.php
index e34ec4519cd3b14427430ea17bbcab51c851eb2b..8f473e2a37b2ba3c9cf3a0e707dd43f9bbe70902 100644
--- a/lib/internal/Magento/Framework/App/Config/Data/ProcessorFactory.php
+++ b/lib/internal/Magento/Framework/App/Config/Data/ProcessorFactory.php
@@ -40,7 +40,7 @@ class ProcessorFactory
             $instance = $this->_objectManager->create($model);
             if (!$instance instanceof ProcessorInterface) {
                 throw new \InvalidArgumentException(
-                    $model . ' does not instance of \Magento\Framework\App\Config\Data\ProcessorInterface'
+                    $model . ' is not instance of \Magento\Framework\App\Config\Data\ProcessorInterface'
                 );
             }
             $this->_pool[$model] = $instance;
diff --git a/lib/internal/Magento/Framework/App/Resource/ConnectionFactory.php b/lib/internal/Magento/Framework/App/Resource/ConnectionFactory.php
index 5c370d6cd5a30e0d51af75a5716f8b5d9f90acb8..655ae1f45d8a44acc0fe30f026c82d7abb9a5870 100644
--- a/lib/internal/Magento/Framework/App/Resource/ConnectionFactory.php
+++ b/lib/internal/Magento/Framework/App/Resource/ConnectionFactory.php
@@ -22,9 +22,11 @@ class ConnectionFactory extends ModelConnectionFactory
     public function create(array $connectionConfig)
     {
         $connection = parent::create($connectionConfig);
-        /** @var \Magento\Framework\App\Cache\Type\FrontendPool $pool */
-        $pool = $this->objectManager->get('Magento\Framework\App\Cache\Type\FrontendPool');
-        $connection->setCacheAdapter($pool->get(DdlCache::TYPE_IDENTIFIER));
+        if ($connection) {
+            /** @var \Magento\Framework\App\Cache\Type\FrontendPool $pool */
+            $pool = $this->objectManager->get('Magento\Framework\App\Cache\Type\FrontendPool');
+            $connection->setCacheAdapter($pool->get(DdlCache::TYPE_IDENTIFIER));
+        }
         return $connection;
     }
 }
diff --git a/lib/internal/Magento/Framework/App/Response/Http/FileFactory.php b/lib/internal/Magento/Framework/App/Response/Http/FileFactory.php
index 4ceab8ac5a1a9fcb0ff183a76e2778b9bb49d72e..539448a1baa35360954743e3cf71d2645eab0b7a 100644
--- a/lib/internal/Magento/Framework/App/Response/Http/FileFactory.php
+++ b/lib/internal/Magento/Framework/App/Response/Http/FileFactory.php
@@ -66,6 +66,9 @@ class FileFactory
             if ($content['type'] == 'filename') {
                 $isFile = true;
                 $file = $content['value'];
+                if (!$dir->isFile($file)) {
+                    throw new \Exception(__('File not found'));
+                }
                 $contentLength = $dir->stat($file)['size'];
             }
         }
@@ -100,9 +103,6 @@ class FileFactory
 
         if (!is_null($content)) {
             if ($isFile) {
-                if (!$dir->isFile($file)) {
-                    throw new \Exception(__('File not found'));
-                }
                 $this->_response->sendHeaders();
                 $stream = $dir->openFile($file, 'r');
                 while (!$stream->eof()) {
@@ -113,7 +113,7 @@ class FileFactory
                 if (!empty($content['rm'])) {
                     $dir->delete($file);
                 }
-                exit(0);
+                $this->callExit();
             } else {
                 $this->_response->clearBody();
                 $this->_response->setBody($content);
@@ -121,4 +121,15 @@ class FileFactory
         }
         return $this->_response;
     }
+
+    /**
+     * Call exit
+     *
+     * @return void
+     * @SuppressWarnings(PHPMD.ExitExpression)
+     */
+    protected function callExit()
+    {
+        exit(0);
+    }
 }