/** * @covers ::setCache */ public function testSetCacheBuildIdMismatch() { $form_build_id = 'the_form_build_id'; $form = ['#form_id' => 'the_form_id', '#build_id' => 'stale_form_build_id']; $form_state = new FormState(); $this->formCacheStore->expects($this->never())->method('setWithExpire'); $this->formStateCacheStore->expects($this->never())->method('setWithExpire'); $this->logger->expects($this->once())->method('error')->with('Form build-id mismatch detected while attempting to store a form in the cache.'); $this->formCache->setCache($form_build_id, $form, $form_state); }
/** * @covers ::setCache */ public function testSetCacheImmutableForm() { $form_build_id = 'the_form_build_id'; $form = ['#form_id' => 'the_form_id']; $form_state = new FormState(); $this->formCacheStore->expects($this->once())->method('setWithExpire')->with($form_build_id, $form, $this->isType('int')); $form_state_data = $form_state->getCacheableArray(); $form_state_data['build_info']['safe_strings'] = []; // Ensure that the form is marked immutable. $form_state_data['build_info']['immutable'] = TRUE; $this->formStateCacheStore->expects($this->once())->method('setWithExpire')->with($form_build_id, $form_state_data, $this->isType('int')); // Rebuild the FormCache with a config factory that will return a config // object with the internal page cache enabled. $this->configFactory = $this->getConfigFactoryStub(['system.performance' => ['cache.page.use_internal' => TRUE]]); $this->formCache = $this->getMockBuilder('Drupal\\Core\\Form\\FormCache')->setConstructorArgs([$this->keyValueExpirableFactory, $this->moduleHandler, $this->account, $this->csrfToken, $this->logger, $this->configFactory, $this->requestStack, $this->requestPolicy])->setMethods(['isPageCacheable'])->getMock(); $this->formCache->expects($this->once())->method('isPageCacheable')->willReturn(TRUE); $this->formCache->setCache($form_build_id, $form, $form_state); }