Skip to content

Commit b766ee5

Browse files
committed
Don't test what we don't own
1 parent ef94a25 commit b766ee5

File tree

5 files changed

+88
-224
lines changed

5 files changed

+88
-224
lines changed

src/FirebaseProject.php

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616

1717
class FirebaseProject
1818
{
19-
protected Factory $factory;
20-
21-
protected array $config;
22-
2319
protected ?AppCheck $appCheck = null;
2420

2521
protected ?Auth $auth = null;
@@ -36,11 +32,11 @@ class FirebaseProject
3632

3733
protected ?Storage $storage = null;
3834

39-
public function __construct(Factory $factory, array $config)
40-
{
41-
$this->factory = $factory;
42-
$this->config = $config;
43-
}
35+
public function __construct(
36+
protected Factory $factory,
37+
protected ?string $dynamicLinksDefaultDomain,
38+
protected ?string $firestoreDatabase
39+
) {}
4440

4541
public function appCheck(): AppCheck
4642
{
@@ -72,7 +68,7 @@ public function database(): Database
7268
public function dynamicLinks(): DynamicLinks
7369
{
7470
if (! $this->dynamicLinks) {
75-
$this->dynamicLinks = $this->factory->createDynamicLinksService($this->config['dynamic_links']['default_domain'] ?? null);
71+
$this->dynamicLinks = $this->factory->createDynamicLinksService($this->dynamicLinksDefaultDomain);
7672
}
7773

7874
return $this->dynamicLinks;
@@ -81,7 +77,7 @@ public function dynamicLinks(): DynamicLinks
8177
public function firestore(): Firestore
8278
{
8379
if (! $this->firestore) {
84-
$this->firestore = $this->factory->createFirestore();
80+
$this->firestore = $this->factory->createFirestore($this->firestoreDatabase);
8581
}
8682

8783
return $this->firestore; // @codeCoverageIgnore

src/FirebaseProjectManager.php

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,37 @@
44

55
namespace Kreait\Laravel\Firebase;
66

7-
use Illuminate\Contracts\Container\Container;
7+
use Illuminate\Contracts\Config\Repository as ConfigRepository;
88
use Illuminate\Contracts\Foundation\Application;
99
use Kreait\Firebase\Exception\InvalidArgumentException;
1010
use Kreait\Firebase\Factory;
1111
use Kreait\Firebase\Http\HttpClientOptions;
1212
use Psr\SimpleCache\CacheInterface;
1313
use Symfony\Component\Cache\Adapter\Psr16Adapter;
1414

15+
use function str_contains;
16+
use function str_starts_with;
17+
1518
class FirebaseProjectManager
1619
{
17-
/** @var Application */
18-
protected $app;
19-
2020
/** @var FirebaseProject[] */
2121
protected array $projects = [];
2222

23-
public function __construct(Container $app)
24-
{
25-
$this->app = $app;
26-
}
23+
public function __construct(
24+
protected Application $app,
25+
protected ConfigRepository $config,
26+
) {}
2727

2828
public function project(?string $name = null): FirebaseProject
2929
{
3030
$name = $name ?? $this->getDefaultProject();
3131

32-
if (! isset($this->projects[$name])) {
33-
$this->projects[$name] = $this->configure($name);
34-
}
35-
36-
return $this->projects[$name];
32+
return $this->projects[$name] ??= $this->configure($name);
3733
}
3834

3935
protected function configuration(string $name): array
4036
{
41-
$config = $this->app->config->get('firebase.projects.'.$name);
37+
$config = $this->config->get('firebase.projects.'.$name);
4238

4339
if (! $config) {
4440
throw new InvalidArgumentException("Firebase project [{$name}] not configured.");
@@ -49,9 +45,9 @@ protected function configuration(string $name): array
4945

5046
protected function resolveJsonCredentials(string $credentials): string
5147
{
52-
$isJsonString = \str_starts_with($credentials, '{');
53-
$isAbsoluteLinuxPath = \str_starts_with($credentials, '/');
54-
$isAbsoluteWindowsPath = \str_contains($credentials, ':\\');
48+
$isJsonString = str_starts_with($credentials, '{');
49+
$isAbsoluteLinuxPath = str_starts_with($credentials, '/');
50+
$isAbsoluteWindowsPath = str_contains($credentials, ':\\');
5551

5652
$isRelativePath = ! $isJsonString && ! $isAbsoluteLinuxPath && ! $isAbsoluteWindowsPath;
5753

@@ -60,7 +56,7 @@ protected function resolveJsonCredentials(string $credentials): string
6056

6157
protected function configure(string $name): FirebaseProject
6258
{
63-
$factory = new Factory;
59+
$factory = $this->app->make(Factory::class);
6460

6561
$config = $this->configuration($name);
6662

@@ -84,10 +80,6 @@ protected function configure(string $name): FirebaseProject
8480
$factory = $factory->withDatabaseAuthVariableOverride($authVariableOverride);
8581
}
8682

87-
if ($firestoreDatabase = $config['firestore']['database'] ?? null) {
88-
$factory = $factory->withFirestoreDatabase($firestoreDatabase);
89-
}
90-
9183
if ($defaultStorageBucket = $config['storage']['default_bucket'] ?? null) {
9284
$factory = $factory->withDefaultStorageBucket($defaultStorageBucket);
9385
}
@@ -134,17 +126,21 @@ protected function configure(string $name): FirebaseProject
134126

135127
$factory = $factory->withHttpClientOptions($options);
136128

137-
return new FirebaseProject($factory, $config);
129+
return new FirebaseProject(
130+
$factory,
131+
$config['dynamic_links']['default_domain'] ?? null,
132+
$config['firestore']['database'] ?? null,
133+
);
138134
}
139135

140136
public function getDefaultProject(): string
141137
{
142-
return $this->app->config->get('firebase.default');
138+
return $this->config->get('firebase.default');
143139
}
144140

145141
public function setDefaultProject(string $name): void
146142
{
147-
$this->app->config->set('firebase.default', $name);
143+
$this->config->set('firebase.default', $name);
148144
}
149145

150146
public function __call($method, $parameters)

src/ServiceProvider.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ private function registerComponents(): void
5959

6060
private function registerManager(): void
6161
{
62-
$this->app->singleton(FirebaseProjectManager::class, static fn (Container $app) => new FirebaseProjectManager($app));
62+
$this->app->singleton(FirebaseProjectManager::class);
6363
$this->app->alias(FirebaseProjectManager::class, 'firebase.manager');
6464
}
6565
}

0 commit comments

Comments
 (0)