package com.constellio.sdk.tests; import com.constellio.app.ui.entities.MetadataSchemaVO; import com.constellio.app.ui.entities.MetadataVO; import com.constellio.app.ui.entities.MetadataValueVO; import com.constellio.app.ui.entities.RecordVO.VIEW_MODE; import com.constellio.app.ui.entities.UserVO; import com.constellio.app.ui.pages.base.BaseSessionContext; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.schemas.MetadataValueType; import java.security.Principal; import java.util.*; public class FakeSessionContext extends BaseSessionContext { boolean fake; UserVO user; String collection; Locale locale; Principal userPrincipal; boolean forcedSignOut; List<String> selectedRecordIds; Map<String, Long> selectedRecordSchemaTypeCodes; private static FakeSessionContext current; public FakeSessionContext(UserVO user, String collection) { this.user = user; this.collection = collection; this.locale = Locale.FRENCH; this.selectedRecordIds = new ArrayList<>(); this.selectedRecordSchemaTypeCodes = new HashMap<>(); FakeSessionContext.current = this; this.fake = true; } public FakeSessionContext getCurrent() { return current; } public static SessionContext noUserInCollection(String collection) { return new FakeSessionContext(null, collection); } public static SessionContext noUserNoCollection() { return new FakeSessionContext(null, null); } public static SessionContext adminInCollection(String collection) { UserVO userVO = newUserVO(collection, "admin", "Admin", "Admin", "admin@doculibre.com"); return new FakeSessionContext(userVO, collection); } public static SessionContext sasquatchInCollection(String collection) { UserVO userVO = newUserVO(collection, "sasquatch", "Big", "Foot", "sasquatch@doculibre.com"); return new FakeSessionContext(userVO, collection); } public static SessionContext aliceInCollection(String collection) { UserVO userVO = newUserVO(collection, "alice", "Alice", "Wonderland", "alice.wonderland@doculibre.com"); return new FakeSessionContext(userVO, collection); } public static SessionContext bobInCollection(String collection) { UserVO userVO = newUserVO(collection, "bob", "Bob", "Gratton", "bob.gratton@doculibre.com"); return new FakeSessionContext(userVO, collection); } public static SessionContext chuckNorrisInCollection(String collection) { UserVO userVO = newUserVO(collection, "chuck", "Chuck", "Norris", "chuck.norris@doculibre.com"); return new FakeSessionContext(userVO, collection); } public static SessionContext dakotaInCollection(String collection) { UserVO userVO = newUserVO(collection, "dakota", "Dakota", "L'Indien", "dakota.indien@gmail.com"); return new FakeSessionContext(userVO, collection); } public static SessionContext edouardInCollection(String collection) { UserVO userVO = newUserVO(collection, "edouard", "Édouard", "Lechat", "edouard.lechat@doculibre.com"); return new FakeSessionContext(userVO, collection); } public static SessionContext xavierInCollection(String collection) { UserVO userVO = newUserVO(collection, "charles", "Charles-François", "Xavier", "charlesfrancois.xavier@doculibre.com"); return new FakeSessionContext(userVO, collection); } public static SessionContext gandalfInCollection(String collection) { UserVO userVO = newUserVO(collection, "gandalf", "Gandalf", "Leblanc", "gandalf.leblanc@doculibre.com"); return new FakeSessionContext(userVO, collection); } public static SessionContext forRealUserIncollection(User user) { List<MetadataValueVO> metadataValueVOs = new ArrayList<>(); MetadataSchemaVO userSchema = userSchema(user.getCollection()); metadataValueVOs.add(new MetadataValueVO(userNameMetadata(userSchema), user.getUsername())); metadataValueVOs.add(new MetadataValueVO(firstNameMetadata(userSchema), user.getFirstName())); metadataValueVOs.add(new MetadataValueVO(lastNameMetadata(userSchema), user.getLastName())); metadataValueVOs.add(new MetadataValueVO(emailMetadata(userSchema), user.getEmail())); UserVO userVO = new UserVO(user.getId(), metadataValueVOs, VIEW_MODE.DISPLAY); FakeSessionContext context = new FakeSessionContext(userVO, user.getCollection()); context.fake = false; return context; } private static UserVO newUserVO(String collection, String username, String firstName, String lastName, String email) { List<MetadataValueVO> metadataValueVOs = new ArrayList<>(); MetadataSchemaVO userSchema = userSchema(collection); metadataValueVOs.add(new MetadataValueVO(userNameMetadata(userSchema), username)); metadataValueVOs.add(new MetadataValueVO(firstNameMetadata(userSchema), firstName)); metadataValueVOs.add(new MetadataValueVO(lastNameMetadata(userSchema), lastName)); metadataValueVOs.add(new MetadataValueVO(emailMetadata(userSchema), email)); return new UserVO(username + "Id", metadataValueVOs, VIEW_MODE.DISPLAY); } private static MetadataSchemaVO userSchema(String collection) { Map<Locale, String> labels = new HashMap<>(); labels.put(Locale.FRENCH, "Utilisateur"); labels.put(Locale.ENGLISH, "User"); return new MetadataSchemaVO(User.DEFAULT_SCHEMA, collection, labels); } private static MetadataVO emailMetadata(MetadataSchemaVO userSchema) { Map<Locale, String> labels = new HashMap<>(); labels.put(Locale.FRENCH, "Courriel"); labels.put(Locale.ENGLISH, "Email"); String collection = userSchema.getCollection(); return new MetadataVO(User.EMAIL, MetadataValueType.STRING, collection, userSchema, true, false, false, labels, null, null, null, null, null, null, null, null, false); } private static MetadataVO lastNameMetadata(MetadataSchemaVO userSchema) { Map<Locale, String> labels = new HashMap<>(); labels.put(Locale.FRENCH, "Nom"); labels.put(Locale.ENGLISH, "Last name"); String collection = userSchema.getCollection(); return new MetadataVO(User.LASTNAME, MetadataValueType.STRING, collection, userSchema, true, false, false, labels, null, null, null, null, null, null, null, null, false); } private static MetadataVO firstNameMetadata(MetadataSchemaVO userSchema) { Map<Locale, String> labels = new HashMap<>(); labels.put(Locale.FRENCH, "Prénom"); labels.put(Locale.ENGLISH, "First name"); String collection = userSchema.getCollection(); return new MetadataVO(User.FIRSTNAME, MetadataValueType.STRING, collection, userSchema, true, false, false, labels, null, null, null, null, null, null, null, null, false); } private static MetadataVO userNameMetadata(MetadataSchemaVO userSchema) { Map<Locale, String> labels = new HashMap<>(); labels.put(Locale.FRENCH, "Nom d'utilisateur"); labels.put(Locale.ENGLISH, "Username"); String collection = userSchema.getCollection(); return new MetadataVO(User.USERNAME, MetadataValueType.STRING, collection, userSchema, true, false, false, labels, null, null, null, null, null, null, null, null, false); } @Override public UserVO getCurrentUser() { return user; } @Override public void setCurrentUser(UserVO user) { this.user = user; } @Override public String getCurrentCollection() { return collection; } @Override public void setCurrentCollection(String collection) { this.collection = collection; } @Override public Locale getCurrentLocale() { return locale; } @Override public void setCurrentLocale(Locale locale) { this.locale = locale; } @Override public String getCurrentUserIPAddress() { return "127.0.0.1"; } @Override public Principal getUserPrincipal() { return userPrincipal; } public void setUserPrincipal(Principal userPrincipal) { this.userPrincipal = userPrincipal; } @Override public boolean isForcedSignOut() { return forcedSignOut; } @Override public void setForcedSignOut(boolean forcedSignOut) { this.forcedSignOut = forcedSignOut; } @Override protected List<String> ensureSelectedRecordIds() { return selectedRecordIds; } @Override protected Map<String, Long> ensureSelectedRecordSchemaTypeCodes() { return selectedRecordSchemaTypeCodes; } }