@@ -43,6 +43,12 @@ async function setupDataSourceWithClientTags(page: Page, clientTags: string) {
4343 await page . getByTestId ( 'data-testid Data source settings page Save and Test button' ) . click ( ) ;
4444}
4545
46+ async function setupDataSourceWithRole ( page : Page , role : string ) {
47+ await page . getByTestId ( 'data-testid Datasource HTTP settings url' ) . fill ( 'http://trino:8080' ) ;
48+ await page . locator ( 'div' ) . filter ( { hasText : / ^ R o l e $ / } ) . locator ( 'input' ) . fill ( role ) ;
49+ await page . getByTestId ( 'data-testid Data source settings page Save and Test button' ) . click ( ) ;
50+ }
51+
4652async function runQueryAndCheckResults ( page : Page ) {
4753 await page . getByLabel ( EXPORT_DATA ) . click ( ) ;
4854 await page . getByTestId ( 'data-testid TimePicker Open Button' ) . click ( ) ;
@@ -91,3 +97,34 @@ test('test with client tags', async ({ page }) => {
9197 await setupDataSourceWithClientTags ( page , 'tag1,tag2,tag3' ) ;
9298 await runQueryAndCheckResults ( page ) ;
9399} ) ;
100+
101+ test ( 'test with role' , async ( { page } ) => {
102+ await login ( page ) ;
103+ await goToTrinoSettings ( page ) ;
104+ await setupDataSourceWithRole ( page , 'hive=ROLE{admin}' ) ;
105+ await runRoleQuery ( page ) ;
106+ await expect ( page . getByTestId ( 'data-testid table body' ) ) . toContainText ( / .* a d m i n .* / ) ;
107+
108+ } ) ;
109+
110+ test ( 'test without role' , async ( { page } ) => {
111+ await login ( page ) ;
112+ await goToTrinoSettings ( page ) ;
113+ await setupDataSourceWithRole ( page , '' ) ;
114+ await runRoleQuery ( page ) ;
115+ await expect ( page . getByText ( / A c c e s s D e n i e d : C a n n o t s h o w r o l e s / ) ) . toBeVisible ( ) ;
116+ } ) ;
117+
118+ async function runRoleQuery ( page : Page ) {
119+ await page . getByLabel ( EXPORT_DATA ) . click ( ) ;
120+ await page . locator ( 'div' ) . filter ( { hasText : / ^ F o r m a t a s C h o o s e $ / } ) . locator ( 'svg' ) . click ( ) ;
121+ await page . getByRole ( 'option' , { name : 'Table' } ) . click ( ) ;
122+ await setQuery ( page , 'SHOW ROLES FROM hive' )
123+ await page . getByTestId ( 'data-testid Code editor container' ) . click ( ) ;
124+ await page . getByTestId ( 'data-testid RefreshPicker run button' ) . click ( ) ;
125+ }
126+
127+ async function setQuery ( page : Page , query : string ) {
128+ await page . getByTestId ( 'data-testid Code editor container' ) . click ( { clickCount : 4 } ) ;
129+ await page . keyboard . type ( query ) ;
130+ }
0 commit comments