diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php index 3b58551a..9e61e928 100644 --- a/app/Http/Controllers/SearchController.php +++ b/app/Http/Controllers/SearchController.php @@ -18,16 +18,23 @@ class SearchController extends Controller $requestprovider = $request->input('provider'); $query = $request->input('q'); + // Validate the presence and non-emptiness of the query parameter + if (!$query || trim($query) === '') { + abort(400, 'Missing or empty query parameter'); + } + $provider = Search::providerDetails($requestprovider); + if (!$provider || !isset($provider->type)) { + abort(404, 'Invalid provider'); + } + if ($provider->type == 'standard') { return redirect($provider->url.'?'.$provider->query.'='.urlencode($query)); } elseif ($provider->type == 'external') { $class = new $provider->class; - //print_r($provider); return $class->getResults($query, $provider); } - //print_r($provider); - } + abort(404, 'Provider type not supported');} } diff --git a/database/seeders/UsersSeeder.php b/database/seeders/UsersSeeder.php index 1c729a27..2ece6f65 100755 --- a/database/seeders/UsersSeeder.php +++ b/database/seeders/UsersSeeder.php @@ -18,6 +18,7 @@ class UsersSeeder extends Seeder $user->username = 'admin'; $user->email = 'admin@test.com'; $user->password = null; + $user->public_front = 0; // Default value for public_front $user->save(); $user_id = $user->id; diff --git a/resources/views/users/form.blade.php b/resources/views/users/form.blade.php index be6cecce..511480b0 100644 --- a/resources/views/users/form.blade.php +++ b/resources/views/users/form.blade.php @@ -45,13 +45,13 @@
- {{ html()->password('password', array('class' => 'form-control'))->attributes(null) }} + {{ html()->password('password', array('class' => 'form-control'))->attributes([]) }}
- {{ html()->password('password_confirmation', array('class' => 'form-control'))->attributes(null) }} + {{ html()->password('password_confirmation', array('class' => 'form-control'))->attributes([]) }}
diff --git a/tests/Feature/ImportTest.php b/tests/Feature/ImportTest.php new file mode 100644 index 00000000..0a7d4925 --- /dev/null +++ b/tests/Feature/ImportTest.php @@ -0,0 +1,19 @@ +get(route('items.import')); + + $response->assertStatus(200); + $response->assertSee('Import'); + } +} \ No newline at end of file diff --git a/tests/Feature/SearchTest.php b/tests/Feature/SearchTest.php new file mode 100644 index 00000000..af72419a --- /dev/null +++ b/tests/Feature/SearchTest.php @@ -0,0 +1,53 @@ +get(route('search', ['provider' => $provider, 'q' => $query])); + + $response->assertStatus(302); + + $expectedUrl = 'https://www.google.com/search?q=' . urlencode($query); + $response->assertRedirect($expectedUrl); + } + + public function test_search_page_with_invalid_provider(): void + { + $provider = 'invalid_provider'; // Invalid provider + $query = 'test'; // Example search term + + $response = $this->get(route('search', ['provider' => $provider, 'q' => $query])); + + $response->assertStatus(404); // Assert that the response status is 404 + } + + public function test_search_page_without_query_parameter(): void + { + $provider = 'google'; // Example provider + + $response = $this->get(route('search', ['provider' => $provider])); + + $response->assertStatus(400); // Assert that the response status is 400 (Bad Request) + } + + public function test_search_page_with_empty_query(): void + { + $provider = 'google'; // Example provider + $query = ''; // Empty search term + + $response = $this->get(route('search', ['provider' => $provider, 'q' => $query])); + + $response->assertStatus(400); // Assert that the response status is 400 (Bad Request) + } +} \ No newline at end of file diff --git a/tests/Feature/UserEditTest.php b/tests/Feature/UserEditTest.php new file mode 100644 index 00000000..7d8e49d4 --- /dev/null +++ b/tests/Feature/UserEditTest.php @@ -0,0 +1,52 @@ +seed(); + + $user = User::factory()->create(); + + $response = $this->get(route('users.edit', $user->id)); + + $response->assertStatus(200); + $response->assertSee($user->username); // Verify username is displayed + $response->assertSee(__('app.user.email')); // Verify email field is present + } + + public function test_user_can_be_updated(): void + { + $this->seed(); + + $user = User::factory()->create([ + 'username' => 'oldusername', + 'email' => 'oldemail@example.com', + ]); + + $data = [ + 'username' => 'newusername', + 'email' => 'newemail@example.com', + 'password' => 'newpassword', + 'password_confirmation' => 'newpassword', + 'public_front' => 1, // Include public_front in the test data + ]; + + $response = $this->patch(route('users.update', $user->id), $data); + + $response->assertRedirect(route('dash')); + $this->assertDatabaseHas('users', [ + 'id' => $user->id, + 'username' => 'newusername', + 'email' => 'newemail@example.com', + ]); + } +} \ No newline at end of file