1+ from typing import Iterable
2+
3+ from commons .keycloak .abstract_models import KeycloakResource
4+ from commons .keycloak .permissions import KeycloakPermissions
15from commons .keycloak .testing .driver import KeycloakDriver
26from commons .keycloak .users import UserHandler
7+ from django .test import RequestFactory
38from environs import Env
49
510from gql .tests import SnapshotGraphQLTestCase
@@ -26,6 +31,21 @@ def setUpClass(cls):
2631
2732 super (HelmOverridesTests , cls ).setUpClass ()
2833
34+ def generate_kc_permissions_for_resources (self , resources : Iterable [KeycloakResource ]):
35+ token = {"authorization" : {"permissions" : []}}
36+ for resource in resources :
37+ scopes = resource .resource_handler ().get_available_scopes (resource ._meta .model_name )
38+ rsid = resource .id
39+ rsname = resource .get_keycloak_name ()
40+ token ["authorization" ]["permissions" ].append ({"scopes" : scopes , "rsid" : str (rsid ), "rsname" : rsname })
41+ return token
42+
43+ def get_kc_permission_context (self , resources ):
44+ token = self .generate_kc_permissions_for_resources (resources )
45+ request = RequestFactory ().get ("/graphql" )
46+ request .permissions = KeycloakPermissions (token ["authorization" ]["permissions" ])
47+ return request
48+
2949 def test_create_helm_overrides (self ):
3050 obj = EnvironmentFactory .create (title = "Title" )
3151 query = """
@@ -35,7 +55,13 @@ def test_create_helm_overrides(self):
3555 }
3656 }
3757 """
38- result = self .client .execute (query , variables = {"environmentId" : str (obj .id ), "overrides" : "test: 1" })
58+ request = self .get_kc_permission_context ([obj .deck .project ])
59+ request .kcuser = {"uuid" : self .user_id }
60+ result = self .client .execute (
61+ query ,
62+ variables = {"environmentId" : str (obj .id ), "overrides" : "test: 1" },
63+ context = request ,
64+ )
3965 self .assertMatchSnapshot (result )
4066
4167 def test_query_helm_overrides (self ):
0 commit comments