use of jetbrains.buildServer.users.SUser in project teamcity-rest by JetBrains.
the class UserRequest method updateUser.
@PUT
@Path("/{userLocator}")
@Consumes({ "application/xml", "application/json" })
@Produces({ "application/xml", "application/json" })
@ApiOperation(value = "Update user matching the locator.", nickname = "replaceUser")
public User updateUser(@ApiParam(format = LocatorName.USER) @PathParam("userLocator") String userLocator, User userData, @QueryParam("fields") String fields) {
SUser user = myUserFinder.getItem(userLocator, true);
myDataUpdater.modify(user, userData, myBeanContext.getServiceLocator());
return new User(user, new Fields(fields), myBeanContext);
}
use of jetbrains.buildServer.users.SUser in project teamcity-rest by JetBrains.
the class UserRequest method deleteToken.
@DELETE
@Path("/{userLocator}/tokens/{name}")
@ApiOperation(value = "Remove an authentication token from the matching user.", nickname = "deleteUserToken")
public void deleteToken(@ApiParam(format = LocatorName.USER) @PathParam("userLocator") String userLocator, @PathParam("name") @NotNull final String name, @Context @NotNull final BeanContext beanContext) {
if (TeamCityProperties.getBooleanOrTrue(UserFinder.REST_CHECK_ADDITIONAL_PERMISSIONS_ON_USERS_AND_GROUPS)) {
myUserFinder.checkViewAllUsersPermission();
}
final TokenAuthenticationModel tokenAuthenticationModel = myBeanContext.getSingletonService(TokenAuthenticationModel.class);
SUser user = myUserFinder.getItem(userLocator, true);
try {
tokenAuthenticationModel.deleteToken(user.getId(), name);
} catch (AuthenticationTokenStorage.DeletionException e) {
throw new NotFoundException(e.getMessage());
}
}
use of jetbrains.buildServer.users.SUser in project teamcity-rest by JetBrains.
the class UserRequestTest method testPermissionsSecurity.
@Test
public void testPermissionsSecurity() throws Throwable {
myFixture.getServerSettings().setPerProjectPermissionsEnabled(true);
ProjectEx project1 = createProject("project1", "project1");
ProjectEx project2 = createProject("project2", "project2");
SUser user1 = createUser("user1");
SUser user2 = createUser("user2");
user2.addRole(RoleScope.globalScope(), getTestRoles().createRole(Permission.RUN_BUILD, Permission.AUTHORIZE_AGENT));
user2.addRole(RoleScope.projectScope(project2.getProjectId()), getTestRoles().createRole(Permission.VIEW_PROJECT));
user2.addRole(RoleScope.projectScope(project1.getProjectId()), getTestRoles().createRole(Permission.VIEW_PROJECT, Permission.REORDER_BUILD_QUEUE));
myFixture.getSecurityContext().runAs(user1, () -> {
checkException(AuthorizationFailedException.class, () -> myRequest.getPermissions("id:" + user2.getId(), null, null), "getting permissions of another user");
});
SUser user3 = createUser("user3");
user3.addRole(RoleScope.globalScope(), getTestRoles().createRole(Permission.VIEW_USER_PROFILE, Permission.VIEW_ALL_USERS));
user3.addRole(RoleScope.projectScope(project2.getProjectId()), getTestRoles().createRole(Permission.VIEW_PROJECT));
myFixture.getSecurityContext().runAs(user3, () -> {
PermissionAssignments permissions = myRequest.getPermissions("id:" + user2.getId(), null, null);
String message = describe(permissions);
assertTrue(message, permissions.myPermissionAssignments.stream().anyMatch(pa -> Permission.AUTHORIZE_AGENT.name().toLowerCase().toLowerCase().equals(pa.permission.id) && pa.project == null));
assertTrue(message, permissions.myPermissionAssignments.stream().anyMatch(pa -> Permission.REORDER_BUILD_QUEUE.name().toLowerCase().equals(pa.permission.id) && pa.project == null));
assertTrue(message, permissions.myPermissionAssignments.stream().anyMatch(pa -> Permission.RUN_BUILD.name().toLowerCase().equals(pa.permission.id) && pa.project == null));
assertTrue(message, permissions.myPermissionAssignments.stream().anyMatch(pa -> Permission.VIEW_PROJECT.name().toLowerCase().equals(pa.permission.id) && project2.getExternalId().equals(pa.project.id)));
assertTrue(message, permissions.myPermissionAssignments.stream().noneMatch(pa -> Permission.VIEW_PROJECT.name().toLowerCase().equals(pa.permission.id) && project1.getExternalId().equals(pa.project.id)));
});
getUserModelEx().getGuestUser().addRole(RoleScope.projectScope(project2.getProjectId()), getTestRoles().createRole(Permission.RUN_BUILD));
myFixture.getSecurityContext().runAs(getUserModelEx().getGuestUser(), () -> {
PermissionAssignments permissions = myRequest.getPermissions("current", null, null);
assertTrue(describe(permissions), permissions.myPermissionAssignments.stream().anyMatch(pa -> Permission.RUN_BUILD.name().toLowerCase().equals(pa.permission.id) && project2.getExternalId().equals(pa.project.id)));
checkException(AuthorizationFailedException.class, () -> myRequest.getPermissions("id:" + user2.getId(), null, null), "getting permissions of another user");
});
myFixture.getSecurityContext().runAs(getUserModelEx().getSuperUser(), () -> {
PermissionAssignments permissions = myRequest.getPermissions("current", null, null);
assertTrue(describe(permissions), permissions.myPermissionAssignments.stream().anyMatch(pa -> Permission.EDIT_PROJECT.name().toLowerCase().equals(pa.permission.id) && pa.project == null));
permissions = myRequest.getPermissions("id:" + user2.getId(), null, null);
assertTrue(describe(permissions), permissions.myPermissionAssignments.stream().anyMatch(pa -> Permission.VIEW_PROJECT.name().toLowerCase().equals(pa.permission.id) && project1.getExternalId().equals(pa.project.id)));
assertTrue(describe(permissions), permissions.myPermissionAssignments.stream().anyMatch(pa -> Permission.AUTHORIZE_AGENT.name().toLowerCase().equals(pa.permission.id) && pa.project == null));
});
}
use of jetbrains.buildServer.users.SUser in project teamcity-rest by JetBrains.
the class UserRequestTest method testUnauthorizedUsersList.
@Test
@TestFor(issues = { "TW-44842" })
void testUnauthorizedUsersList() throws Throwable {
final SUser user1 = createUser("user1");
final SUser user2 = createUser("user2");
SecurityContextImpl securityContext = myFixture.getSecurityContext();
user2.addRole(RoleScope.globalScope(), getProjectAdminRole());
securityContext.runAs(user2, new SecurityContextEx.RunAsAction() {
@Override
public void run() throws Throwable {
User result = myRequest.serveUser("id:" + user1.getId(), "$long,groups(group(users(user)))");
assertNotNull(result);
assertNotNull(result.getGroups());
assertNotNull(result.getGroups().groups);
assertEquals(1, result.getGroups().groups.size());
assertNotNull(result.getGroups().groups.get(0).users);
assertNotNull(result.getGroups().groups.get(0).users.users);
}
});
securityContext.runAs(user1, new SecurityContextEx.RunAsAction() {
@Override
public void run() throws Throwable {
User result = myRequest.serveUser("username:user1", "$long,groups(group)");
assertNotNull(result);
assertNotNull(result.getGroups());
assertNotNull(result.getGroups().groups);
assertEquals(1, result.getGroups().groups.size());
}
});
securityContext.runAs(user1, new SecurityContextEx.RunAsAction() {
@Override
public void run() throws Throwable {
User result = myRequest.serveUser("username:user1", "$long,groups(group(users(user)))");
assertNotNull(result);
assertNotNull(result.getGroups());
assertNotNull(result.getGroups().groups);
assertEquals(1, result.getGroups().groups.size());
// on getting users, AuthorizationFailedException is thrown so users are not included
assertNull(result.getGroups().groups.get(0).users);
}
});
}
use of jetbrains.buildServer.users.SUser in project teamcity-rest by JetBrains.
the class MuteRequestTest method test_severalMutes.
@Test
public void test_severalMutes() {
final ProjectEx project = createProject("Project", "Project");
final BuildTypeEx bt1 = project.createBuildType("bt1");
final BuildTypeEx bt2 = project.createBuildType("bt2");
final ProjectEx project2 = createProject("Project2", "Project2");
final BuildTypeEx bt22 = project.createBuildType("bt3");
createBuild(bt1, new String[0], new String[] { "test1", "test2", "test3" });
createBuild(bt22, new String[0], new String[] { "test1", "test2", "test3", "test4" });
final STest test1 = myFixture.getTestManager().createTest(new TestName("test1"), project.getProjectId());
final STest test2 = myFixture.getTestManager().createTest(new TestName("test2"), project.getProjectId());
SUser user = createUser("user");
myMutingService.muteTestsInBuildTypes(user, null, false, null, Arrays.asList(bt1, bt2), Arrays.asList(test1, test2), false);
myMutingService.muteTestsInProject(user, null, false, null, project2, Arrays.asList(test1));
int mute1Id, mute2Id;
{
Mutes mutes = myRequest.getMutes(null, null, null, null);
assertEquals(Integer.valueOf(2), mutes.count);
assertEquals(2, mutes.items.size());
mute1Id = mutes.items.get(0).id;
assertNull(mutes.items.get(0).scope.project);
assertNotNull(mutes.items.get(0).scope.buildTypes);
assertEquals(2, mutes.items.get(0).scope.buildTypes.buildTypes.size());
assertTrue(mutes.items.get(0).scope.buildTypes.buildTypes.stream().anyMatch(buildType -> bt1.getExternalId().equals(buildType.getId())));
assertTrue(mutes.items.get(0).scope.buildTypes.buildTypes.stream().anyMatch(buildType -> bt2.getExternalId().equals(buildType.getId())));
assertNull(mutes.items.get(0).target.problems);
assertEquals(2, mutes.items.get(0).target.tests.items.size());
assertTrue(mutes.items.get(0).target.tests.items.stream().anyMatch(test -> String.valueOf(test1.getTestNameId()).equals(test.id)));
assertTrue(mutes.items.get(0).target.tests.items.stream().anyMatch(test -> String.valueOf(test2.getTestNameId()).equals(test.id)));
mute2Id = mutes.items.get(1).id;
assertNull(mutes.items.get(1).scope.buildTypes);
assertNotNull(mutes.items.get(1).scope.project);
assertEquals(project2.getExternalId(), mutes.items.get(1).scope.project.id);
assertNull(mutes.items.get(1).target.problems);
assertEquals(1, mutes.items.get(1).target.tests.items.size());
assertTrue(mutes.items.get(1).target.tests.items.stream().anyMatch(test -> String.valueOf(test1.getTestNameId()).equals(test.id)));
}
{
setInternalProperty(Mutes.REST_MUTES_ACTUAL_STATE, "true");
Mutes mutes = myRequest.getMutes("id:" + mute2Id, "$long,mute(target(tests(test(mutes(mute(target(tests(test($long))),scope(buildTypes(buildType($long)))))))))", null, null);
assertEquals(2, mutes.items.get(0).target.tests.items.get(0).mutes.items.size());
assertEquals(2, mutes.items.get(0).target.tests.items.get(0).mutes.items.get(0).target.tests.items.size());
assertEquals(2, mutes.items.get(0).target.tests.items.get(0).mutes.items.get(0).scope.buildTypes.buildTypes.size());
}
}
Aggregations