/** * Test that removeCookie does not remove non-mp cookies * * @runInSeparateProcess * @covers Mixpanel\DataStorage\Cookie::storeState * @covers Mixpanel\DataStorage\Cookie::setHeader * @covers Mixpanel\DataStorage\Cookie::getState * @covers Mixpanel\DataStorage\Cookie::getStorageKey * @covers Mixpanel\DataStorage\Cookie::getLifetime * @covers Mixpanel\DataStorage\Cookie::getCookiePath * @covers Mixpanel\DataStorage\Cookie::getCookieDomain * @covers Mixpanel\DataStorage\Cookie::getHeaderList * @covers Mixpanel\DataStorage\Cookie::removeHeader * @covers Mixpanel\DataStorage\Cookie::removeCookie */ public function testRemoveCookieDoesNotRemoveNonMpCookies() { $setHeader = new ReflectionMethod('Mixpanel\\DataStorage\\Cookie', 'setHeader'); $setHeader->setAccessible(true); $setHeader->invoke($this->cookie, 'Set-Cookie: some=cookie'); $this->cookie->set('key', 'value'); $this->assertEquals($this->cookie, $this->cookie->storeState()); $this->cookie->set('foo', 'bar'); $this->cookie->set('mix', 'panel'); $this->assertEquals($this->cookie, $this->cookie->storeState()); $getHeaderList = new ReflectionMethod('Mixpanel\\DataStorage\\Cookie', 'getHeaderList'); $getHeaderList->setAccessible(true); $headers = $getHeaderList->invoke($this->cookie); $mpCookies = 0; $nonMpCookies = 0; foreach ($headers as $header) { if (preg_match('#^Set-Cookie:\\s*' . preg_quote($this->cookieName) . '=#', $header)) { $mpCookies++; } else { if (preg_match('#^Set-Cookie:#', $header)) { $nonMpCookies++; } } } $this->assertSame(1, $mpCookies); $this->assertSame(1, $nonMpCookies); }