1
0
Fork 0
mirror of https://github.com/archtechx/tenancy.git synced 2026-02-05 13:34:04 +00:00
Commit graph

380 commits

Author SHA1 Message Date
lukinovec
741af3929c Add test for granting permissions to new Postgres users 2023-06-14 09:40:55 +02:00
lukinovec
fa43d8ae1d Rename RLSModel to RlsModel, fix global scope test 2023-06-07 13:55:43 +02:00
lukinovec
d0d38cef26 Update RLS tests (test both the config and the interface) 2023-06-07 09:41:22 +02:00
lukinovec
4175ac07bd Rework model discovery 2023-06-06 15:46:50 +02:00
lukinovec
7d44322b7e Rename test file, update tests 2023-06-05 16:35:50 +02:00
lukinovec
7c7680baf6 Make PostgresRLSBootstrapper a singleton 2023-06-05 12:02:41 +02:00
lukinovec
5754f8bdc4 Get central connection name from the config 2023-06-05 10:08:48 +02:00
lukinovec
12b36f407d Rename bootstrapper, improve docblock 2023-06-01 10:26:39 +02:00
lukinovec
3738d2885c Revert beforeEach cleanup (tests fail in CI) 2023-05-31 14:02:54 +02:00
lukinovec
b964aa90d3 Improve code style, beforeEach cleanup 2023-05-31 13:58:25 +02:00
lukinovec
3ef1c38414 Delete single-call DB transactions 2023-05-31 07:38:43 +02:00
lukinovec
8ccc27e8c3 Rename bootstrapper 2023-05-29 11:15:38 +02:00
lukinovec
28efc0ca97 Update model docblocks 2023-05-29 09:55:59 +02:00
lukinovec
1f9a344f33 Make the (Scoped)Comment model distinction clearer 2023-05-24 15:12:35 +02:00
lukinovec
47fe86c21e Use DB transactions 2023-05-24 14:57:06 +02:00
lukinovec
57df6e2b30 Delete setting database.connections.pgsql config in TestsCase 2023-05-24 10:38:12 +02:00
lukinovec
d60062131a Complete todo cleanup 2023-05-23 10:30:47 +02:00
lukinovec
aec8d50b7d Set default credentials 2023-05-23 09:57:24 +02:00
lukinovec
c4b1d1c6c4 Update configuring Postgres credentials in TestCase 2023-05-22 17:00:40 +02:00
lukinovec
a46b26800f Add docblocks to single-db models, add return types to relationship methods 2023-05-22 15:01:49 +02:00
lukinovec
fcb54cbe8e Delete the UUID-specific logic, make RLS possible with non-UUID primary keys 2023-05-10 15:36:07 +02:00
lukinovec
90a0343223 Simplify UUID models 2023-05-10 13:07:08 +02:00
lukinovec
974950c300 Clean up 2023-05-10 12:49:53 +02:00
lukinovec
99fc1e3f87 Add return types to relationship methods 2023-05-10 12:47:51 +02:00
lukinovec
0f921c1362 Fix Postgres test 2023-05-10 12:27:28 +02:00
lukinovec
fb042a0671 Use models with UUID in the tests (wip) 2023-05-10 11:21:43 +02:00
lukinovec
17d779e130 Scope queries using Postgres RLS (WIP) 2023-05-09 16:07:06 +02:00
lukinovec
eb7baa5360 Skip RLS test (RLS is WIP) 2023-04-28 14:28:20 +02:00
lukinovec
ce7ddbf401 Complete scaffolded RLS test 2023-04-28 14:27:29 +02:00
lukinovec
0a2415319b Improve RLS policies test, move setup things to beforeEach, scaffold test for scoping queries 2023-04-27 18:06:11 +02:00
lukinovec
dc81b0ec20 Move classes to separate files 2023-04-27 18:01:37 +02:00
lukinovec
a5d004132c Delete temp action, improve tests 2023-04-27 13:47:56 +02:00
lukinovec
b66773da80 Try conditionally creating tenants table 2023-04-27 13:08:24 +02:00
lukinovec
e169cf49fa Create and drop schema in tests 2023-04-26 18:10:19 +02:00
lukinovec
034c284303 wip 2023-04-26 15:34:27 +02:00
lukinovec
562d507482 Test if policies get created correctly using action 2023-04-26 15:25:50 +02:00
lukinovec
910da724e4 WIP 2023-04-26 14:02:18 +02:00
lukinovec
e15eb01c7f WIP 2023-04-26 13:58:52 +02:00
lukinovec
add92b99cc Fixing test WIP 2023-04-26 13:54:56 +02:00
lukinovec
800af2d818 Try fixing the CI issue 2023-04-26 13:11:37 +02:00
lukinovec
331df8e239 Update Postgres tests 2023-04-26 12:42:19 +02:00
lukinovec
4ceb7c82e1 Add test for creating RLS policies for tables 2023-04-25 18:00:44 +02:00
lukinovec
9f4079e774 Revert extra changes in docker-compose 2023-04-25 14:46:27 +02:00
lukinovec
7f1f594809 Merge branch 'master' of github.com:archtechx/tenancy into add-postgres-rls-support 2023-04-25 14:25:01 +02:00
lukinovec
18b47fb4d0 Change Postgres port 2023-04-25 14:20:55 +02:00
lukinovec
e4aeccb2b0 Make postgres work in tests 2023-04-25 12:33:56 +02:00
lukinovec
ae25e25715 Fix job & test 2023-04-25 12:33:29 +02:00
lukinovec
4eab27e1f0 Add Postgres to db connections and docker-compose 2023-04-24 17:04:09 +02:00
lukinovec
dd4013c998 Add Postgres tests 2023-04-24 16:58:31 +02:00
Abrar Ahmad
bd9bbe8b41
Cache prefix mode for separating tenant caches (#1014)
* cache prefix

* prefix cache bootstrapper and tests

* remove comment

* DI app

* cache prefix base from config

* Create PrefixCacheBootstrapperTest.php

* remove `null` check

* fix phpstan error

* Update PrefixCacheTenancyBootstrapper.php

* Update PrefixCacheBootstrapperTest.php

* add comments

* Update PrefixCacheTenancyBootstrapper.php

* Update PrefixCacheBootstrapperTest.php

* Update config.php

* test names grammar

* user `getTenantKey` method

* assert tenants' data is accessible using the prefix from the central context

* remove unused line

* use proper DI

* build prefix using original prefix

* fix prefix test according to prefix changes

* fix test

* CacheManager dependency injection test

* CacheService class as singleton

* introduce second tenant in test

* use Repository in service class DI

* Update CacheAction.php

* Rename CacheAction to CacheService

* Update prefix bootstrapper and test (`setStore()` in CacheManager and Repository needed)

* Add macro

* Fix code style (php-cs-fixer)

* Simplify cache store refreshing

* Make Tenancy override CacheManager

* Update CacheManager, add refreshStore()

* Fix code style (php-cs-fixer)

* Uncomment cache tagging

* Revert condition in CacheManager to avoid excessive nesting

* Move `Cache::macro()` to a slightly more appropriate place

* Fix code style (php-cs-fixer)

* Use better class for the macro

* Toggle cache tags

* Make CacheManager::$addTags default to `true`

* Add changes to PR to Laravel

* Fix code style (php-cs-fixer)

* Revert changes, add comment

* Add test

* Make `$cache` non-nullable

Co-authored-by: Samuel Štancl <samuel@archte.ch>

* Add and test `nonTenantCacheDrivers`

* Add nonTenantCacheDrivers check

* Test that the prefix stays the same

* Change nonTenantCacheDrivers to tenantCacheStores

* Remove redundant CacheManager extend() call

* Make 'redis' the only tenant cache store in beforeEach, test that tenantCacheStores works

* Remove unused import, change word

* Make CacheService a singleton in a test

* Update test name

* Remove group('prefix')

* Rename CacheManagerService

* Improve specific cache store in a service test

* Improve comment

* Improve tests

* Use my Laravel fork

* Fix code style (php-cs-fixer)

* Downgrade Laravel

* Upgrade Laravel

* Hint Repository implementation instead of contract

* Fix types

* Fix code style (php-cs-fixer)

* Fix test

* Use Laravel fork in ci.yml

* use dev-master before our changes are released in L10

* remove laravel fork from repositories

* use 10.x-dev instead of master

* remove L9 support

* 10.x-dev (fix conflict resolution)

* use the laravel version from the ci matrix for the phpstan job as well

* Revert "use the laravel version from the ci matrix for the phpstan job as well"

This reverts commit 5f3079d2ff.

* Test that non-default stores get prefixed too

* Use new Laravel release, remove L9 support

* Complete L9 support removal

* Specify 10.1.1 as the minimal Laravel version in ci.yml

* Use 10.x-dev

* Prefix all cache stores specified in `$tenantCacheStores`

* Update Laravel

* Use tmpfs in docker-compose

* Add customizing cache store prefixes

* Test cache prefixing customization

* Fix code style (php-cs-fixer)

* Update ci.yml

* Delete tmpfs from docker-compose.yml (there were no benefits)

* Use default prefix generator inline, delete the 'default' key logic

* Fix original prefix logic

* Update tests

* Delete CacheTenancyBootstrapper

* Reset static properties in afterEach

* Use `$this->config` instead of `config()`

* Disable cache tagging by default, add CacheTagBootstrapper

* Fix code style (php-cs-fixer)

* Rename bootstrapper

* Improve CacheManager

* Move logic from separate method to __call

* Make original prefixes customizable

* Add info in comment

* Add defaultPrefix property

* Use `$this->app` instead of `app()`

* Rename bootstrapper

* Fix code style (php-cs-fixer)

* Use a single original prefix

* Update prefix generator logic + tests

* Correct `$addTags` reset in a test

* Update cache tests so that both prefixing and tagging is covered

* Simplify cache tests

* Delete afterEach

* Small testing improvements

* Set `cache.default` in beforeEach

* Update cache prefixing and tests

* Add assertion

* Refactor assertion

* Refactor assertions

* Delete TTL from cache put calls

* Add re-initialization cache assertion

* Assert that cache is null from the beginning

* Merge the tenantCacheStores tests

* Fix formatting

* Improve test name

* Improve tests

* Add cache manager config key

* Fix code style (php-cs-fixer)

* Update defaulting test

* Add todo

* Update comments

* Extract duplicate assertions into a closure

* Update comment

* Add assertions + comment

* Delete redundant config put calls

* Use `tenancy.cache.manager` config instead of `Stancl\Tenancy\CacheManager`

* Change setting to assertion, add comment

* Inline variable & config key assignment

* Delete `cache.default` assertion

* Override cache manager only in CacheTagsBootstrapper

* Fix code style (php-cs-fixer)

* Prefix both drivers by default, add assertions for the second driver where missing

* Clean up global state (static properties) in before/afterEach

* Add docblock to tags bootstrapper

* Delete extra dependency

* Add `illuminate/support` dependency back

* Use `$addTags` approach again

* Fix code style (php-cs-fixer)

* Revert "Fix code style (php-cs-fixer)"

This reverts commit ea805fa231.

* Revert "Use `$addTags` approach again"

This reverts commit 8f5a4e4eb6.

* Add commented CacheTagsBootstrapper with info to the bootstrappers config

* Delete legacy bootstrapper from the bootstrappers config, add info to the bootstrapper's docblock

* Delete "?" from `tenant()?->getTenantKey()

* call generatePrefix() on $bootstrapper

* misc improvements

---------

Co-authored-by: lukinovec <lukinovec@gmail.com>
Co-authored-by: PHP CS Fixer <phpcsfixer@example.com>
Co-authored-by: Samuel Štancl <samuel@archte.ch>
Co-authored-by: Samuel Štancl <samuel.stancl@gmail.com>
2023-04-24 16:25:51 +02:00