10 use Magento\Analytics\Model\FileInfoFactory;
23 private $fileInfoManagerMock;
28 private $fileInfoFactoryMock;
33 private $filesystemMock;
38 private $fileInfoMock;
43 private $directoryMock;
48 private $encodedContextMock;
53 private $objectManagerHelper;
58 private $fileRecorder;
63 private $fileSubdirectoryPath =
'analytics_subdir/';
68 private $encodedFileName =
'filename.tgz';
75 $this->fileInfoManagerMock = $this->getMockBuilder(FileInfoManager::class)
76 ->disableOriginalConstructor()
79 $this->fileInfoFactoryMock = $this->getMockBuilder(FileInfoFactory::class)
80 ->setMethods([
'create'])
81 ->disableOriginalConstructor()
84 $this->filesystemMock = $this->getMockBuilder(Filesystem::class)
85 ->disableOriginalConstructor()
88 $this->fileInfoMock = $this->getMockBuilder(FileInfo::class)
89 ->disableOriginalConstructor()
92 $this->directoryMock = $this->getMockBuilder(WriteInterface::class)
93 ->disableOriginalConstructor()
96 $this->encodedContextMock = $this->getMockBuilder(EncodedContext::class)
97 ->disableOriginalConstructor()
100 $this->objectManagerHelper =
new ObjectManagerHelper($this);
102 $this->fileRecorder = $this->objectManagerHelper->getObject(
105 'fileInfoManager' => $this->fileInfoManagerMock,
106 'fileInfoFactory' => $this->fileInfoFactoryMock,
107 'filesystem' => $this->filesystemMock,
108 'fileSubdirectoryPath' => $this->fileSubdirectoryPath,
109 'encodedFileName' => $this->encodedFileName,
120 $content = openssl_random_pseudo_bytes(200);
122 $this->filesystemMock
123 ->expects($this->once())
124 ->method(
'getDirectoryWrite')
126 ->willReturn($this->directoryMock);
128 $this->encodedContextMock
129 ->expects($this->once())
130 ->method(
'getContent')
135 $fileRelativePathPattern =
'#' . preg_quote($this->fileSubdirectoryPath,
'#')
136 .
'.{' . $hashLength .
'}/' . preg_quote($this->encodedFileName,
'#') .
'#';
138 ->expects($this->once())
139 ->method(
'writeFile')
140 ->with($this->matchesRegularExpression($fileRelativePathPattern),
$content)
141 ->willReturn($this->directoryMock);
143 $this->fileInfoManagerMock
144 ->expects($this->once())
147 ->willReturn($this->fileInfoMock);
149 $this->encodedContextMock
150 ->expects($this->once())
151 ->method(
'getInitializationVector')
153 ->willReturn(
'init_vector***');
156 $this->fileInfoFactoryMock
157 ->expects($this->once())
159 ->with($this->callback(
160 function ($parameters) {
161 return !empty($parameters[
'path']) && (
'init_vector***' === $parameters[
'initializationVector']);
164 ->willReturn($this->fileInfoMock);
165 $this->fileInfoManagerMock
166 ->expects($this->once())
168 ->with($this->fileInfoMock);
172 ->expects($this->exactly($pathToExistingFile ? 3 : 1))
175 ->willReturn($pathToExistingFile);
179 ->expects($this->once())
181 ->with($pathToExistingFile);
184 ->expects($this->exactly(2))
187 [$pathToExistingFile],
192 $this->assertTrue($this->fileRecorder->recordNewFile($this->encodedContextMock));
201 'File doesn\'t exist' => [
''],
202 'Existing file into subdirectory' => [
'dir_name/file.txt'],
203 'Existing file doesn\'t into subdirectory' => [
'file.txt'],
elseif(isset( $params[ 'redirect_parent']))
testRecordNewFile($pathToExistingFile)
recordNewFileDataProvider()