TransWikia.com

How to generate the COOKIEHASH from JavaScript

WordPress Development Asked by Zeth on October 26, 2020


The overarching question

How do I get the contents of the PHP-variable: COOKIEHASH inside a Cypress-test.


I’m writing some Cypress-test for WordPress, and in order to set the cookies to log in a user in WordPress using Cypress, then I need the contents of the COOKIEHASH-variable.

For those not familiar with the COOKIEHASH, go to a WordPress-installation and put in this code anywhere:

echo '<pre>';
print_r(COOKIEHASH);
echo '</pre>';
die();

And then you’ll see it. It looks something like this: a8b94154380982c3284a467b8aa224c6.

When I run my Cypress-tests for the first time, then I don’t know what that hash is, so I don’t know which cookies to set.

So currently I log in manually, go to cookies in my browser and get the hash. Which is quite the manual operation for automated tests. 🙂


My attempts / thoughts

  1. It looks like an MD5-hash. But I can’t recreate the cookie-hash with an JS MD5-function. It doesn’t correspond. I haven’t tried that many MD5-JS-functions, it should be said.

If I hash zeth.dk, then the js-md5-hash gives me: 8aa4b9bbc2a9e946b670fd8372a3081a
and I can see in my cookies that the hash is: b7d8d5a26884619e3b3b4481ba778642

  1. I considered making an API-endpoint (in my functions.php), that returns the cookie-hash. But this just feels wrong, making my code to backflips like this.

One Answer

By default it's the MD5 hash of the site URL:

    $siteurl = get_site_option( 'siteurl' );
    if ( $siteurl ) {
        define( 'COOKIEHASH', md5( $siteurl ) );
    }

This includes the scheme but not a trailing slash, so in your example you'd need the hash of https://zeth.dk.

You can also override this by defining COOKIEHASH in wp-config.php with some other value.

Correct answer by Rup on October 26, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP