diff --git a/access-functions.php b/access-functions.php index 0014007..10d541e 100644 --- a/access-functions.php +++ b/access-functions.php @@ -67,15 +67,17 @@ function snapwp_helper_get_env_variables() { return $token; } - $upload_dir = wp_get_upload_dir(); + // Ensure the upload path has a leading slash for consistency. + $upload_dir = wp_get_upload_dir(); + $upload_path = '/' . ltrim( str_replace( ABSPATH, '', $upload_dir['basedir'] ), '/' ); return [ 'NODE_TLS_REJECT_UNAUTHORIZED' => '', 'NEXT_PUBLIC_URL' => '', - 'NEXT_PUBLIC_WORDPRESS_URL' => get_home_url(), + 'NEXT_PUBLIC_WORDPRESS_URL' => untrailingslashit( get_home_url() ), 'NEXT_PUBLIC_GRAPHQL_ENDPOINT' => graphql_get_endpoint(), - 'NEXT_PUBLIC_WORDPRESS_UPLOADS_PATH' => str_replace( ABSPATH, '', $upload_dir['basedir'] ), - 'NEXT_PUBLIC_WORDPRESS_REST_URL_PREFIX' => rest_get_url_prefix(), + 'NEXT_PUBLIC_WORDPRESS_UPLOADS_PATH' => $upload_path, + 'NEXT_PUBLIC_WORDPRESS_REST_URL_PREFIX' => '/' . rest_get_url_prefix(), 'INTROSPECTION_TOKEN' => $token, ]; } diff --git a/src/Modules/EnvGenerator/VariableRegistry.php b/src/Modules/EnvGenerator/VariableRegistry.php index aa9977a..c8a7ac1 100644 --- a/src/Modules/EnvGenerator/VariableRegistry.php +++ b/src/Modules/EnvGenerator/VariableRegistry.php @@ -36,17 +36,17 @@ class VariableRegistry { ], 'NEXT_PUBLIC_GRAPHQL_ENDPOINT' => [ 'description' => 'The WordPress GraphQL endpoint', - 'default' => 'graphql', - 'required' => false, + 'default' => 'index.php?graphql', + 'required' => true, ], 'NEXT_PUBLIC_WORDPRESS_UPLOADS_PATH' => [ 'description' => 'The WordPress Uploads directory path', - 'default' => 'wp-content/uploads', + 'default' => '/wp-content/uploads', 'required' => false, ], 'NEXT_PUBLIC_WORDPRESS_REST_URL_PREFIX' => [ 'description' => 'The WordPress REST URL Prefix', - 'default' => 'wp-json', + 'default' => '/wp-json', 'required' => false, ], 'INTROSPECTION_TOKEN' => [ diff --git a/tests/Integration/GeneratorTest.php b/tests/Integration/GeneratorTest.php index 259fdce..19a2c2a 100644 --- a/tests/Integration/GeneratorTest.php +++ b/tests/Integration/GeneratorTest.php @@ -139,38 +139,10 @@ public function testDefaultValuesForEnvContent(): void { NEXT_PUBLIC_GRAPHQL_ENDPOINT=/test_endpoint # The WordPress Uploads directory path -# NEXT_PUBLIC_WORDPRESS_UPLOADS_PATH=wp-content/uploads +# NEXT_PUBLIC_WORDPRESS_UPLOADS_PATH=/wp-content/uploads # The WordPress REST URL Prefix -# NEXT_PUBLIC_WORDPRESS_REST_URL_PREFIX=wp-json'; - - $this->assertSame( $expectedContent, $content ); - - // CASE : For GRAPHQL_ENDPOINT, Generator should use the default value of the variable. - $values = [ - 'NODE_TLS_REJECT_UNAUTHORIZED' => '', - 'NEXT_PUBLIC_URL' => 'http://localhost:3000', - 'NEXT_PUBLIC_WORDPRESS_URL' => 'https://headless-demo.local', - 'NEXT_PUBLIC_GRAPHQL_ENDPOINT' => '', - ]; - - $generator = new Generator( $values, $registry ); - - // Generate the .env content. - $content = $generator->generate(); - - $expectedContent = ' -# Enable if connecting to a self-signed cert -# NODE_TLS_REJECT_UNAUTHORIZED=0 - -# The headless frontend domain URL -# NEXT_PUBLIC_URL=http://localhost:3000 - -# The WordPress "frontend" domain URL -NEXT_PUBLIC_WORDPRESS_URL=https://headless-demo.local - -# The WordPress GraphQL endpoint -# NEXT_PUBLIC_GRAPHQL_ENDPOINT=graphql'; +# NEXT_PUBLIC_WORDPRESS_REST_URL_PREFIX=/wp-json'; $this->assertSame( $expectedContent, $content ); } diff --git a/tests/Integration/RestControllerTest.php b/tests/Integration/RestControllerTest.php index 68c033a..1d5d8fa 100644 --- a/tests/Integration/RestControllerTest.php +++ b/tests/Integration/RestControllerTest.php @@ -88,7 +88,7 @@ public function testGenerateEnvEndpoint(): void { $this->assertNotEmpty( $actual_data['content'] ); $search = '\n'; $replace = ''; - $expected = "\n# Enable if connecting to a self-signed cert\n# NODE_TLS_REJECT_UNAUTHORIZED=0\n\n# The headless frontend domain URL\n# NEXT_PUBLIC_URL=http://localhost:3000\n\n# The WordPress \"frontend\" domain URL\nNEXT_PUBLIC_WORDPRESS_URL=" . get_home_url() . "\n\n# The WordPress GraphQL endpoint\n# NEXT_PUBLIC_GRAPHQL_ENDPOINT=" . graphql_get_endpoint() . "\n\n# The WordPress Uploads directory path\n# NEXT_PUBLIC_WORDPRESS_UPLOADS_PATH=" . str_replace( ABSPATH, '', wp_get_upload_dir()['basedir'] ) . "\n\n# The WordPress REST URL Prefix\n# NEXT_PUBLIC_WORDPRESS_REST_URL_PREFIX=" . rest_get_url_prefix() . "\n\n# Token used for authenticating GraphQL introspection queries\nINTROSPECTION_TOKEN=" . IntrospectionToken::get_token(); + $expected = "\n# Enable if connecting to a self-signed cert\n# NODE_TLS_REJECT_UNAUTHORIZED=0\n\n# The headless frontend domain URL\n# NEXT_PUBLIC_URL=http://localhost:3000\n\n# The WordPress \"frontend\" domain URL\nNEXT_PUBLIC_WORDPRESS_URL=" . get_home_url() . "\n\n# The WordPress GraphQL endpoint\nNEXT_PUBLIC_GRAPHQL_ENDPOINT=" . graphql_get_endpoint() . "\n\n# The WordPress Uploads directory path\n# NEXT_PUBLIC_WORDPRESS_UPLOADS_PATH=/" . str_replace( ABSPATH, '', wp_get_upload_dir()['basedir'] ) . "\n\n# The WordPress REST URL Prefix\n# NEXT_PUBLIC_WORDPRESS_REST_URL_PREFIX=/" . rest_get_url_prefix() . "\n\n# Token used for authenticating GraphQL introspection queries\nINTROSPECTION_TOKEN=" . IntrospectionToken::get_token(); $this->assertEquals( $expected, str_replace( $search, $replace, $actual_data['content'] ) );