blueocean-plugin/blueocean-rest-impl/src/test/java/io/jenkins/blueocean/service/embedded/ProfileApiTest.java

332 lines
11 KiB
Java

package io.jenkins.blueocean.service.embedded;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import hudson.model.FreeStyleProject;
import hudson.model.Project;
import hudson.model.User;
import hudson.tasks.Mailer;
import jenkins.model.Jenkins;
import org.junit.Assert;
import org.junit.Test;
import org.jvnet.hudson.test.MockFolder;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* @author Vivek Pandey
*/
public class ProfileApiTest extends BaseTest{
@Test
public void getUserTest() throws Exception {
User system = j.jenkins.getUser("SYSTEM");
get("/users/", List.class);
Map response = get("/users/"+system.getId());
Assert.assertEquals(system.getId(), response.get("id"));
Assert.assertEquals(system.getFullName(), response.get("fullName"));
}
//UX-159
@Test
public void postCrumbTest() throws Exception {
User system = j.jenkins.getUser("SYSTEM");
Map response = post("/users/"+system.getId()+"/", Collections.emptyMap());
Assert.assertEquals(system.getId(), response.get("id"));
Assert.assertEquals(system.getFullName(), response.get("fullName"));
}
//UX-159
@Test
public void postCrumbFailTest() throws Exception {
User system = j.jenkins.getUser("SYSTEM");
post("/users/"+system.getId()+"/", "", "text/plain", 403);
}
//UX-159
@Test
public void putMimeTest() throws Exception {
User system = j.jenkins.getUser("SYSTEM");
Map response = put("/users/"+system.getId()+"/", Collections.emptyMap());
Assert.assertEquals(system.getId(), response.get("id"));
Assert.assertEquals(system.getFullName(), response.get("fullName"));
}
@Test
public void putMimeFailTest() throws Exception {
User system = j.jenkins.getUser("SYSTEM");
put("/users/"+system.getId(), "","text/plain", 415);
}
//UX-159
@Test
public void patchMimeTest() throws Exception {
User system = j.jenkins.getUser("SYSTEM");
Map response = patch("/users/"+system.getId()+"/", Collections.emptyMap());
Assert.assertEquals(system.getId(), response.get("id"));
Assert.assertEquals(system.getFullName(), response.get("fullName"));
}
@Test
public void patchMimeFailTest() throws Exception {
User system = j.jenkins.getUser("SYSTEM");
new RequestBuilder(baseUrl)
.contentType("text/plain")
.status(415)
.patch("/users/"+system.getId())
.build(Map.class);
}
@Test
public void getUserDetailsTest() throws Exception {
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
hudson.model.User alice = j.jenkins.getUser("alice");
alice.setFullName("Alice Cooper");
alice.addProperty(new Mailer.UserProperty("alice@jenkins-ci.org"));
hudson.model.User bob = j.jenkins.getUser("bob");
bob.setFullName("Bob Smith");
bob.addProperty(new Mailer.UserProperty("bob@jenkins-ci.org"));
//Call is made as anonymous user, email should be null
Map response = get("/users/"+alice.getId());
Assert.assertEquals(alice.getId(), response.get("id"));
Assert.assertEquals(alice.getFullName(), response.get("fullName"));
Assert.assertNull(response.get("email"));
//make a request on bob's behalf to get alice's user details, should get null email
Map r = new RequestBuilder(baseUrl)
.status(200)
.jwtToken(getJwtToken(j.jenkins,"bob", "bob"))
.get("/users/"+alice.getId()).build(Map.class);
Assert.assertEquals(alice.getId(), r.get("id"));
Assert.assertEquals(alice.getFullName(), r.get("fullName"));
Assert.assertTrue(bob.hasPermission(Jenkins.ADMINISTER));
//bob is admin so can see alice email
Assert.assertEquals("alice@jenkins-ci.org",r.get("email"));
r = new RequestBuilder(baseUrl)
.status(200)
.jwtToken(getJwtToken(j.jenkins,"alice", "alice"))
.get("/users/"+alice.getId()).build(Map.class);
Assert.assertEquals(alice.getId(), r.get("id"));
Assert.assertEquals(alice.getFullName(), r.get("fullName"));
Assert.assertEquals("alice@jenkins-ci.org",r.get("email"));
}
@Test
public void createUserFavouriteTest() throws Exception {
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
hudson.model.User user = j.jenkins.getUser("alice");
user.setFullName("Alice Cooper");
Project p = j.createFreeStyleProject("pipeline1");
String token = getJwtToken(j.jenkins,"alice", "alice");
Map map = new RequestBuilder(baseUrl)
.put("/organizations/jenkins/pipelines/pipeline1/favorite")
.jwtToken(token)
.data(ImmutableMap.of("favorite", true))
.build(Map.class);
validatePipeline(p, (Map) map.get("item"));
List l = new RequestBuilder(baseUrl)
.get("/users/"+user.getId()+"/favorites/")
.jwtToken(token)
.build(List.class);
Assert.assertEquals(1, l.size());
Map pipeline = (Map)((Map)l.get(0)).get("item");
validatePipeline(p, pipeline);
String href = getHrefFromLinks((Map)l.get(0),"self");
Assert.assertEquals("/blue/rest/organizations/jenkins/pipelines/pipeline1/favorite/", href);
map = new RequestBuilder(baseUrl)
.put(href.substring("/blue/rest".length()))
.jwtToken(token)
.data(ImmutableMap.of("favorite", false))
.build(Map.class);
validatePipeline(p, (Map) map.get("item"));
l = new RequestBuilder(baseUrl)
.get("/users/"+user.getId()+"/favorites/")
.jwtToken(token)
.build(List.class);
Assert.assertEquals(0, l.size());
new RequestBuilder(baseUrl)
.get("/users/"+user.getId()+"/favorites/")
.jwtToken(getJwtToken(j.jenkins,"bob","bob"))
.status(403)
.build(String.class);
}
@Test
public void createUserFavouriteFolderTest() throws Exception {
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
hudson.model.User user = j.jenkins.getUser("alice");
user.setFullName("Alice Cooper");
MockFolder folder1 = j.createFolder("folder1");
Project p = folder1.createProject(FreeStyleProject.class, "pipeline1");
String token = getJwtToken(j.jenkins,"alice", "alice");
Map map = new RequestBuilder(baseUrl)
.put("/organizations/jenkins/pipelines/folder1/pipelines/pipeline1/favorite/")
.jwtToken(token)
.data(ImmutableMap.of("favorite", true))
.build(Map.class);
validatePipeline(p, (Map) map.get("item"));
List l = new RequestBuilder(baseUrl)
.get("/users/"+user.getId()+"/favorites/")
.jwtToken(token)
.build(List.class);
Assert.assertEquals(1, l.size());
Map pipeline = (Map)((Map)l.get(0)).get("item");
validatePipeline(p, pipeline);
String href = getHrefFromLinks((Map)l.get(0),"self");
Assert.assertEquals("/blue/rest/organizations/jenkins/pipelines/folder1/pipelines/pipeline1/favorite/", href);
map = new RequestBuilder(baseUrl)
.put(href.substring("/blue/rest".length()))
.jwtToken(token)
.data(ImmutableMap.of("favorite", false))
.build(Map.class);
validatePipeline(p, (Map) map.get("item"));
l = new RequestBuilder(baseUrl)
.get("/users/"+user.getId()+"/favorites/")
.jwtToken(token)
.build(List.class);
Assert.assertEquals(0, l.size());
map = new RequestBuilder(baseUrl)
.put("/organizations/jenkins/pipelines/folder1/favorite/")
.jwtToken(token)
.data(ImmutableMap.of("favorite", true))
.build(Map.class);
validateFolder(folder1, (Map) map.get("item"));
l = new RequestBuilder(baseUrl)
.get("/users/"+user.getId()+"/favorites/")
.jwtToken(token)
.build(List.class);
Assert.assertEquals(1, l.size());
Map folder = (Map)((Map)l.get(0)).get("item");
validateFolder(folder1, folder);
href = getHrefFromLinks((Map)l.get(0),"self");
Assert.assertEquals("/blue/rest/organizations/jenkins/pipelines/folder1/favorite/", href);
map = new RequestBuilder(baseUrl)
.put(href.substring("/blue/rest".length()))
.jwtToken(token)
.data(ImmutableMap.of("favorite", false))
.build(Map.class);
validateFolder(folder1, (Map) map.get("item"));
l = new RequestBuilder(baseUrl)
.get("/users/"+user.getId()+"/favorites/")
.jwtToken(token)
.build(List.class);
Assert.assertEquals(0, l.size());
new RequestBuilder(baseUrl)
.get("/users/"+user.getId()+"/favorites/")
.jwtToken(getJwtToken(j.jenkins,"bob","bob"))
.status(403)
.build(String.class);
}
@Test
public void getOrganizationTest(){
get("/organizations/", List.class);
// Assert.assertEquals("jenkins", response.get("name"));
}
@Test
public void FindUsersTest() throws Exception {
List<String> names = ImmutableList.of("alice", "bob");
j.jenkins.getUser(names.get(0));
j.jenkins.getUser(names.get(1));
List response = get("/search?q=type:user;organization:jenkins", List.class);
for(Object r: response){
Map org = (Map) r;
Assert.assertTrue(names.contains((String)org.get("id")));
Assert.assertTrue(names.contains((String)org.get("fullName")));
}
}
@Test
public void getAuthenticatedUser() throws Exception {
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
hudson.model.User user = j.jenkins.getUser("alice");
user.setFullName("Alice Cooper");
user.addProperty(new Mailer.UserProperty("alice@jenkins-ci.org"));
String token = getJwtToken(j.jenkins,"alice", "alice");
Map u = new RequestBuilder(baseUrl)
.get("/organizations/jenkins/user/")
.jwtToken(token)
.status(200)
.build(Map.class);
Assert.assertEquals(user.getFullName(), u.get("fullName"));
Assert.assertEquals("alice@jenkins-ci.org", u.get("email"));
Assert.assertEquals(user.getId(), u.get("id"));
}
@Test
public void getAuthenticatedUserShouldFail() throws Exception {
j.jenkins.setSecurityRealm(j.createDummySecurityRealm());
hudson.model.User user = j.jenkins.getUser("alice");
user.setFullName("Alice Cooper");
user.addProperty(new Mailer.UserProperty("alice@jenkins-ci.org"));
hudson.model.User user1 = j.jenkins.getUser("bob");
user1.setFullName("Bob Cooper");
user1.addProperty(new Mailer.UserProperty("bob@jenkins-ci.org"));
Map u = new RequestBuilder(baseUrl)
.get("/organizations/jenkins/user/")
.build(Map.class);
Assert.assertEquals("anonymous",u.get("id"));
}
}