4
4
using System . Net . Http ;
5
5
using System . Text . Json ;
6
6
using System . Threading . Tasks ;
7
+ using Altinn . Studio . Designer . Models . Dto ;
7
8
using Altinn . Studio . Designer . RepositoryClient . Model ;
8
9
using Designer . Tests . Fixtures ;
9
10
using Designer . Tests . Utils ;
@@ -14,8 +15,9 @@ namespace Designer.Tests.GiteaIntegrationTests
14
15
{
15
16
public class UserControllerGiteaIntegrationTests : GiteaIntegrationTestsBase < UserControllerGiteaIntegrationTests >
16
17
{
17
-
18
- public UserControllerGiteaIntegrationTests ( GiteaWebAppApplicationFactoryFixture < Program > factory , GiteaFixture giteaFixture , SharedDesignerHttpClientProvider sharedDesignerHttpClientProvider ) : base ( factory , giteaFixture , sharedDesignerHttpClientProvider )
18
+ public UserControllerGiteaIntegrationTests ( GiteaWebAppApplicationFactoryFixture < Program > factory ,
19
+ GiteaFixture giteaFixture , SharedDesignerHttpClientProvider sharedDesignerHttpClientProvider ) : base (
20
+ factory , giteaFixture , sharedDesignerHttpClientProvider )
19
21
{
20
22
}
21
23
@@ -31,10 +33,8 @@ public async Task GetCurrentUser_ShouldReturnOk(string expectedUserName, string
31
33
response . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
32
34
response . Headers . First ( h => h . Key == "Set-Cookie" ) . Value . Should ( ) . Contain ( e => e . Contains ( "XSRF-TOKEN" ) ) ;
33
35
string content = await response . Content . ReadAsStringAsync ( ) ;
34
- var user = JsonSerializer . Deserialize < User > ( content , new JsonSerializerOptions
35
- {
36
- PropertyNameCaseInsensitive = true
37
- } ) ;
36
+ var user = JsonSerializer . Deserialize < User > ( content ,
37
+ new JsonSerializerOptions { PropertyNameCaseInsensitive = true } ) ;
38
38
39
39
user . Login . Should ( ) . Be ( expectedUserName ) ;
40
40
user . Email . Should ( ) . Be ( expectedEmail ) ;
@@ -62,16 +62,40 @@ public async Task StarredEndpoints_ShouldBehaveAsExpected(string org)
62
62
string targetRepo = TestDataHelper . GenerateTestRepoName ( ) ;
63
63
await CreateAppUsingDesigner ( org , targetRepo ) ;
64
64
65
- using var putStarredResponse = await HttpClient . PutAsync ( $ "designer/api/user/starred/{ org } /{ targetRepo } ", null ) ;
65
+ using var putStarredResponse =
66
+ await HttpClient . PutAsync ( $ "designer/api/user/starred/{ org } /{ targetRepo } ", null ) ;
66
67
putStarredResponse . StatusCode . Should ( ) . Be ( HttpStatusCode . NoContent ) ;
67
68
await GetAndVerifyStarredRepos ( targetRepo ) ;
68
69
69
- using var deleteStarredResponse = await HttpClient . DeleteAsync ( $ "designer/api/user/starred/{ org } /{ targetRepo } ") ;
70
+ using var deleteStarredResponse =
71
+ await HttpClient . DeleteAsync ( $ "designer/api/user/starred/{ org } /{ targetRepo } ") ;
70
72
deleteStarredResponse . StatusCode . Should ( ) . Be ( HttpStatusCode . NoContent ) ;
71
73
72
74
await GetAndVerifyStarredRepos ( ) ;
73
75
}
74
76
77
+ [ Theory ]
78
+ [ InlineData ( GiteaConstants . TestOrgUsername , true ) ]
79
+ [ InlineData ( "OtherOrg" , false ) ]
80
+ public async Task HasAccessToCreateRepository_ShouldReturnCorrectPermissions ( string org , bool expectedCanCreate )
81
+ {
82
+ string requestUrl = $ "designer/api/user/org-permissions/{ org } ";
83
+
84
+ using var response = await HttpClient . GetAsync ( requestUrl ) ;
85
+
86
+ response . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
87
+ string content = await response . Content . ReadAsStringAsync ( ) ;
88
+ var deserializeOptions = new JsonSerializerOptions
89
+ {
90
+ PropertyNamingPolicy = JsonNamingPolicy . CamelCase ,
91
+ } ;
92
+
93
+ var userOrgPermission = JsonSerializer . Deserialize < Team > ( content , deserializeOptions ) ;
94
+
95
+ userOrgPermission . Should ( ) . NotBeNull ( ) ;
96
+ userOrgPermission . CanCreateOrgRepo . Should ( ) . Be ( expectedCanCreate ) ;
97
+ }
98
+
75
99
private async Task GetAndVerifyStarredRepos ( params string [ ] expectedStarredRepos )
76
100
{
77
101
using var response = await HttpClient . GetAsync ( "designer/api/user/starred" ) ;
@@ -83,6 +107,5 @@ private async Task GetAndVerifyStarredRepos(params string[] expectedStarredRepos
83
107
content . Should ( ) . Contain ( r => r . Name == expectedStarredRepo ) ;
84
108
}
85
109
}
86
-
87
110
}
88
111
}
0 commit comments