Author: solomax
Date: Fri Jan 20 16:45:00 2017
New Revision: 1779645
URL: http://svn.apache.org/viewvc?rev=1779645&view=rev
Log:
[OPENMEETINGS-1533] appointment with meeting-meetingmembers saved via service
Modified:
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
Modified:
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
Fri Jan 20 16:45:00 2017
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRoot
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.user.UserDTO;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.user.User;
import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
@@ -46,7 +47,13 @@ public class MeetingMemberDTO implements
public MeetingMember get(UserDao userDao) {
MeetingMember mm = new MeetingMember();
mm.setId(id);
- mm.setUser(user.get(userDao));
+ if (user.getId() != null) {
+ mm.setUser(userDao.get(user.getId()));
+ } else {
+ mm.setUser(user.get(userDao));
+ mm.getUser().setType(User.Type.contact);
+ mm.getUser().getRights().clear();
+ }
return mm;
}
Modified:
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
Fri Jan 20 16:45:00 2017
@@ -379,6 +379,10 @@ public class RoomDTO implements Serializ
return r;
}
+ public static JSONObject json(RoomDTO r) {
+ return new JSONObject(r).put("type", r.getType().name());
+ }
+
@Override
public String toString() {
return new JSONObject(this).toString();
Modified:
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
Fri Jan 20 16:45:00 2017
@@ -213,7 +213,18 @@ public class UserDTO implements Serializ
u.timeZoneId = o.optString("timeZoneId");
u.externalId = o.optString("externalId");
u.externalType = o.optString("externalType");
- u.type = Type.valueOf(o.optString("type"));
+ String t = o.optString("type", null);
+ u.type = t == null ? null : Type.valueOf(t);
return u;
}
+
+ public static JSONObject json(UserDTO u) {
+ JSONObject o = new JSONObject(u)
+ .put("type", u.getType().name());
+ JSONArray rr = new JSONArray();
+ for (Right r : u.getRights()) {
+ rr.put(r.name());
+ }
+ return o.put("rights", rr);
+ }
}
Modified:
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
Fri Jan 20 16:45:00 2017
@@ -28,9 +28,8 @@ import org.apache.wicket.util.tester.Wic
import org.junit.After;
public class AbstractWicketTester extends AbstractJUnitDefaults {
-
protected WicketTester tester;
-
+
@Override
public void setUp() throws Exception {
super.setUp();
@@ -46,11 +45,11 @@ public class AbstractWicketTester extend
}
assertTrue("Web session is not signed in for user: " + (login
!= null ? login : username), WebSession.get().isSignedIn());
}
-
+
@After
public void tearDown() {
if (tester != null) {
- //can be null in case exception on initialization
+ //can be null in case exception on initialization
tester.destroy();
}
}
Modified:
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
Fri Jan 20 16:45:00 2017
@@ -18,11 +18,16 @@
*/
package org.apache.openmeetings.test.webservice;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Date;
import java.util.UUID;
+import javax.ws.rs.core.Form;
+import javax.ws.rs.core.Response;
+
import org.apache.openmeetings.db.dao.room.RoomDao;
import org.apache.openmeetings.db.dao.user.GroupDao;
import org.apache.openmeetings.db.dto.basic.ServiceResult;
@@ -31,6 +36,9 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.db.entity.user.GroupUser;
import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.webservice.util.AppointmentParamConverter;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -65,4 +73,152 @@ public class TestCalendarService extends
public void testGetByPublicRoom() throws Exception {
actualTest(roomDao.get(5L)); //default public restricted room
}
+
+ private static JSONObject createAppointment() {
+ return new JSONObject()
+ .put("title", "test")
+ .put("start", "2017-01-20T20:30:03+0300")
+ .put("end", "2017-01-20T21:30:03+0300")
+ .put("description", "Ð ÑÑÑкий ТеÑÑ")
+ .put("reminder", "none")
+ .put("room", new JSONObject()
+ .put("name", "test24")
+ .put("comment", "appointment test room")
+ .put("type", "conference")
+ .put("numberOfPartizipants", 15)
+ .put("appointment", true)
+ .put("isPublic", false)
+ .put("demo", false)
+ .put("closed", false)
+ .put("externalId", 10)
+ .put("externalType", "HuntingLabCMS")
+ .put("redirectUrl", "")
+ .put("moderated", true)
+ .put("allowUserQuestions", true)
+ .put("allowRecording", false)
+ .put("waitForRecording", false)
+ .put("audioOnly", true)
+ .put("topBarHidden", false)
+ .put("chatHidden", false)
+ .put("activitiesHidden", false)
+ .put("filesExplorerHidden", false)
+ .put("actionsMenuHidden", false)
+ .put("screenSharingHidden", false)
+ .put("whiteboardHidden", false))
+ .put("languageId", 9)
+ .put("passwordProtected", false)
+ .put("connectedEvent", false)
+ .put("reminderEmailSend", false);
+ }
+
+ @Test
+ public void testCreate() throws Exception {
+ JSONObject o = createAppointment();
+
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = createUser(u);
+ ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ }
+
+ @Test
+ public void testDelete() {
+ ServiceResult sr = login();
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/" + Long.MAX_VALUE) //non-existent ID
+ .query("sid", sr.getMessage())
+ .delete();
+
+ assertNotEquals("Call should NOT be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ }
+
+ @Test
+ public void testCreateWithOmMm() throws Exception {
+ JSONObject o = createAppointment()
+ .put("meetingMembers", new JSONArray()
+ .put(new
JSONObject().put("user", new JSONObject()
+ .put("id",
1))));
+
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = createUser(u);
+ ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ }
+
+ @Test
+ public void testCreateWithMm() throws Exception {
+ JSONObject o = createAppointment()
+ .put("meetingMembers", new JSONArray()
+ .put(new
JSONObject().put("user", new JSONObject()
+
.put("firstname", "Jhon 1")
+
.put("lastname", "Doe")
+ .put("Address",
new JSONObject().put("email", "[email protected]"))
+ ))
+ .put(new
JSONObject().put("user", new JSONObject()
+
.put("firstname", "Jhon 2")
+
.put("lastname", "Doe")
+ .put("Address",
new JSONObject().put("email", "[email protected]"))
+ ))
+ );
+
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = createUser(u);
+ ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ assertEquals("DTO should have 2 attendees", 2,
dto.getMeetingMembers().size());
+
+ //try to change MM list
+ JSONObject o1 = AppointmentParamConverter.json(dto)
+ .put("meetingMembers", new JSONArray()
+ .put(new
JSONObject().put("user", new JSONObject()
+ .put("id",
1))));
+
+ resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o1.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ assertEquals("DTO should have 1 attendees", 1,
dto.getMeetingMembers().size());
+ }
}
Modified:
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
Fri Jan 20 16:45:00 2017
@@ -18,8 +18,10 @@
*/
package org.apache.openmeetings.test.webservice;
+import static
org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.Response;
@@ -28,9 +30,22 @@ import org.apache.openmeetings.db.dto.ba
import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
import org.apache.openmeetings.db.dto.room.RoomOptionsDTO;
import org.apache.openmeetings.db.dto.user.ExternalUserDTO;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.string.StringValue;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.After;
import org.junit.Test;
public class TestUserService extends AbstractWebServiceTest {
+ protected WicketTester tester;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ tester = getWicketTester();
+ assertNotNull("Web session should not be null",
WebSession.get());
+ }
+
@Test
public void loginTest() {
ServiceResult r = login();
@@ -58,5 +73,17 @@ public class TestUserService extends Abs
assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
ServiceResult r1 = resp.readEntity(ServiceResult.class);
assertEquals("OM Call should be successful", r1.getType(),
Type.SUCCESS.name());
+
+ WebSession ws = WebSession.get();
+ ws.checkHashes(StringValue.valueOf(r1.getMessage()),
StringValue.valueOf(""));
+ assertTrue("Login via secure hash should be successful",
ws.isSignedIn());
+ }
+
+ @After
+ public void tearDown() {
+ if (tester != null) {
+ //can be null in case exception on initialization
+ tester.destroy();
+ }
}
}
Modified:
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
Fri Jan 20 16:45:00 2017
@@ -293,7 +293,9 @@ public class CalendarWebService {
Long userId = sessionDao.check(sid);
log.debug("save userId:" + userId);
User u = userDao.get(userId);
- if (!AuthLevelUtil.hasWebServiceLevel(u.getRights()) &&
appointment.getOwner() != null)
+ if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
+ && appointment.getOwner() != null
+ &&
!appointment.getOwner().getId().equals(u.getId()))
{
//TODO maybe additional checks are required
log.error("USER/Room modification as SOAP");
Modified:
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
(original)
+++
openmeetings/application/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
Fri Jan 20 16:45:00 2017
@@ -20,6 +20,8 @@ package org.apache.openmeetings.webservi
import static
org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
+import java.util.Date;
+
import javax.ws.rs.ext.ParamConverter;
import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
@@ -47,7 +49,8 @@ public class AppointmentParamConverter i
a.setInserted(DateParamConverter.get(o.optString("inserted")));
a.setUpdated(DateParamConverter.get(o.optString("updated")));
a.setDeleted(o.optBoolean("inserted"));
- a.setReminder(Reminder.valueOf(o.optString("reminder")));
+ String r = o.optString("reminder", null);
+ a.setReminder(r == null ? null : Reminder.valueOf(r));
a.setRoom(RoomDTO.get(o.optJSONObject("room")));
a.setIcalId(o.optString("icalId"));
JSONArray mm = o.optJSONArray("meetingMembers");
@@ -64,13 +67,20 @@ public class AppointmentParamConverter i
return a;
}
- @Override
- public String toString(AppointmentDTO val) {
- return new JSONObject(this)
+ public static JSONObject json(AppointmentDTO val) {
+ Date i = val.getInserted(), u = val.getUpdated();
+ return new JSONObject(val)
+ .put("owner", UserDTO.json(val.getOwner()))
+ .put("room", RoomDTO.json(val.getRoom()))
+ .put("reminder", val.getReminder() == null ?
null : val.getReminder().name())
.put("start",
ISO8601_FULL_FORMAT.format(val.getStart()))
.put("end",
ISO8601_FULL_FORMAT.format(val.getEnd()))
- .put("inserted",
ISO8601_FULL_FORMAT.format(val.getInserted()))
- .put("updated",
ISO8601_FULL_FORMAT.format(val.getUpdated()))
- .toString();
+ .put("inserted", i == null ? null :
ISO8601_FULL_FORMAT.format(i))
+ .put("updated", u == null ? null :
ISO8601_FULL_FORMAT.format(u));
+ }
+
+ @Override
+ public String toString(AppointmentDTO val) {
+ return json(val).toString();
}
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
Fri Jan 20 16:45:00 2017
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRoot
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.user.UserDTO;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.user.User;
import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
@@ -46,7 +47,13 @@ public class MeetingMemberDTO implements
public MeetingMember get(UserDao userDao) {
MeetingMember mm = new MeetingMember();
mm.setId(id);
- mm.setUser(user.get(userDao));
+ if (user.getId() != null) {
+ mm.setUser(userDao.get(user.getId()));
+ } else {
+ mm.setUser(user.get(userDao));
+ mm.getUser().setType(User.Type.contact);
+ mm.getUser().getRights().clear();
+ }
return mm;
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
Fri Jan 20 16:45:00 2017
@@ -19,7 +19,6 @@
package org.apache.openmeetings.db.dto.room;
import static org.apache.openmeetings.db.dto.room.RoomOptionsDTO.optInt;
-import static org.apache.openmeetings.db.dto.room.RoomOptionsDTO.optLong;
import java.io.Serializable;
import java.util.ArrayList;
@@ -58,7 +57,7 @@ public class RoomDTO implements Serializ
private boolean allowRecording;
private boolean waitForRecording;
private boolean audioOnly;
- private Set<RoomElement> hiddenElements;
+ private Set<RoomElement> hiddenElements = new HashSet<>();
public RoomDTO() {}
@@ -318,6 +317,15 @@ public class RoomDTO implements Serializ
return r;
}
+ public static JSONObject json(RoomDTO r) {
+ JSONArray rr = new JSONArray();
+ for (RoomElement h : r.getHiddenElements()) {
+ rr.put(h.name());
+ }
+ return new JSONObject(r).put("hiddenElements", rr)
+ .put("type", r.getType().name());
+ }
+
@Override
public String toString() {
return new JSONObject(this).toString();
Modified:
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
Fri Jan 20 16:45:00 2017
@@ -213,7 +213,18 @@ public class UserDTO implements Serializ
u.timeZoneId = o.optString("timeZoneId");
u.externalId = o.optString("externalId");
u.externalType = o.optString("externalType");
- u.type = Type.valueOf(o.optString("type"));
+ String t = o.optString("type", null);
+ u.type = t == null ? null : Type.valueOf(t);
return u;
}
+
+ public static JSONObject json(UserDTO u) {
+ JSONObject o = new JSONObject(u)
+ .put("type", u.getType().name());
+ JSONArray rr = new JSONArray();
+ for (Right r : u.getRights()) {
+ rr.put(r.name());
+ }
+ return o.put("rights", rr);
+ }
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
Fri Jan 20 16:45:00 2017
@@ -28,9 +28,8 @@ import org.apache.wicket.util.tester.Wic
import org.junit.After;
public class AbstractWicketTester extends AbstractJUnitDefaults {
-
protected WicketTester tester;
-
+
@Override
public void setUp() throws Exception {
super.setUp();
@@ -46,11 +45,11 @@ public class AbstractWicketTester extend
}
assertTrue("Web session is not signed in for user: " + (login
!= null ? login : username), WebSession.get().isSignedIn());
}
-
+
@After
public void tearDown() {
if (tester != null) {
- //can be null in case exception on initialization
+ //can be null in case exception on initialization
tester.destroy();
}
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
Fri Jan 20 16:45:00 2017
@@ -18,11 +18,16 @@
*/
package org.apache.openmeetings.test.webservice;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Date;
import java.util.UUID;
+import javax.ws.rs.core.Form;
+import javax.ws.rs.core.Response;
+
import org.apache.openmeetings.db.dao.room.RoomDao;
import org.apache.openmeetings.db.dao.user.GroupDao;
import org.apache.openmeetings.db.dto.basic.ServiceResult;
@@ -31,6 +36,9 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.db.entity.user.GroupUser;
import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.webservice.util.AppointmentParamConverter;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -65,4 +73,152 @@ public class TestCalendarService extends
public void testGetByPublicRoom() throws Exception {
actualTest(roomDao.get(5L)); //default public restricted room
}
+
+ private static JSONObject createAppointment() {
+ return new JSONObject()
+ .put("title", "test")
+ .put("start", "2017-01-20T20:30:03+0300")
+ .put("end", "2017-01-20T21:30:03+0300")
+ .put("description", "Ð ÑÑÑкий ТеÑÑ")
+ .put("reminder", "none")
+ .put("room", new JSONObject()
+ .put("name", "test24")
+ .put("comment", "appointment test room")
+ .put("type", "conference")
+ .put("numberOfPartizipants", 15)
+ .put("appointment", true)
+ .put("isPublic", false)
+ .put("demo", false)
+ .put("closed", false)
+ .put("externalId", 10)
+ .put("externalType", "HuntingLabCMS")
+ .put("redirectUrl", "")
+ .put("moderated", true)
+ .put("allowUserQuestions", true)
+ .put("allowRecording", false)
+ .put("waitForRecording", false)
+ .put("audioOnly", true)
+ .put("topBarHidden", false)
+ .put("chatHidden", false)
+ .put("activitiesHidden", false)
+ .put("filesExplorerHidden", false)
+ .put("actionsMenuHidden", false)
+ .put("screenSharingHidden", false)
+ .put("whiteboardHidden", false))
+ .put("languageId", 9)
+ .put("passwordProtected", false)
+ .put("connectedEvent", false)
+ .put("reminderEmailSend", false);
+ }
+
+ @Test
+ public void testCreate() throws Exception {
+ JSONObject o = createAppointment();
+
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = createUser(u);
+ ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ }
+
+ @Test
+ public void testDelete() {
+ ServiceResult sr = login();
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/" + Long.MAX_VALUE) //non-existent ID
+ .query("sid", sr.getMessage())
+ .delete();
+
+ assertNotEquals("Call should NOT be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ }
+
+ @Test
+ public void testCreateWithOmMm() throws Exception {
+ JSONObject o = createAppointment()
+ .put("meetingMembers", new JSONArray()
+ .put(new
JSONObject().put("user", new JSONObject()
+ .put("id",
1))));
+
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = createUser(u);
+ ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ }
+
+ @Test
+ public void testCreateWithMm() throws Exception {
+ JSONObject o = createAppointment()
+ .put("meetingMembers", new JSONArray()
+ .put(new
JSONObject().put("user", new JSONObject()
+
.put("firstname", "Jhon 1")
+
.put("lastname", "Doe")
+ .put("Address",
new JSONObject().put("email", "[email protected]"))
+ ))
+ .put(new
JSONObject().put("user", new JSONObject()
+
.put("firstname", "Jhon 2")
+
.put("lastname", "Doe")
+ .put("Address",
new JSONObject().put("email", "[email protected]"))
+ ))
+ );
+
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = createUser(u);
+ ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ assertEquals("DTO should have 2 attendees", 2,
dto.getMeetingMembers().size());
+
+ //try to change MM list
+ JSONObject o1 = AppointmentParamConverter.json(dto)
+ .put("meetingMembers", new JSONArray()
+ .put(new
JSONObject().put("user", new JSONObject()
+ .put("id",
1))));
+
+ resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o1.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ assertEquals("DTO should have 1 attendees", 1,
dto.getMeetingMembers().size());
+ }
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
Fri Jan 20 16:45:00 2017
@@ -18,8 +18,10 @@
*/
package org.apache.openmeetings.test.webservice;
+import static
org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.Response;
@@ -28,9 +30,22 @@ import org.apache.openmeetings.db.dto.ba
import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
import org.apache.openmeetings.db.dto.room.RoomOptionsDTO;
import org.apache.openmeetings.db.dto.user.ExternalUserDTO;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.string.StringValue;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.After;
import org.junit.Test;
public class TestUserService extends AbstractWebServiceTest {
+ protected WicketTester tester;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ tester = getWicketTester();
+ assertNotNull("Web session should not be null",
WebSession.get());
+ }
+
@Test
public void loginTest() {
ServiceResult r = login();
@@ -58,5 +73,17 @@ public class TestUserService extends Abs
assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
ServiceResult r1 = resp.readEntity(ServiceResult.class);
assertEquals("OM Call should be successful", r1.getType(),
Type.SUCCESS.name());
+
+ WebSession ws = WebSession.get();
+ ws.checkHashes(StringValue.valueOf(r1.getMessage()),
StringValue.valueOf(""));
+ assertTrue("Login via secure hash should be successful",
ws.isSignedIn());
+ }
+
+ @After
+ public void tearDown() {
+ if (tester != null) {
+ //can be null in case exception on initialization
+ tester.destroy();
+ }
}
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
Fri Jan 20 16:45:00 2017
@@ -294,7 +294,9 @@ public class CalendarWebService {
Sessiondata sd = sessionDao.check(sid);
log.debug("save userId:" + sd);
User u = userDao.get(sd.getUserId());
- if (!AuthLevelUtil.hasWebServiceLevel(u.getRights()) &&
appointment.getOwner() != null)
+ if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
+ && appointment.getOwner() != null
+ &&
!appointment.getOwner().getId().equals(u.getId()))
{
//TODO maybe additional checks are required
log.error("USER/Room modification as SOAP");
Modified:
openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
Fri Jan 20 16:45:00 2017
@@ -20,6 +20,8 @@ package org.apache.openmeetings.webservi
import static
org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
+import java.util.Date;
+
import javax.ws.rs.ext.ParamConverter;
import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
@@ -47,7 +49,8 @@ public class AppointmentParamConverter i
a.setInserted(DateParamConverter.get(o.optString("inserted")));
a.setUpdated(DateParamConverter.get(o.optString("updated")));
a.setDeleted(o.optBoolean("inserted"));
- a.setReminder(Reminder.valueOf(o.optString("reminder")));
+ String r = o.optString("reminder", null);
+ a.setReminder(r == null ? null : Reminder.valueOf(r));
a.setRoom(RoomDTO.get(o.optJSONObject("room")));
a.setIcalId(o.optString("icalId"));
JSONArray mm = o.optJSONArray("meetingMembers");
@@ -64,13 +67,20 @@ public class AppointmentParamConverter i
return a;
}
- @Override
- public String toString(AppointmentDTO val) {
- return new JSONObject(this)
+ public static JSONObject json(AppointmentDTO val) {
+ Date i = val.getInserted(), u = val.getUpdated();
+ return new JSONObject(val)
+ .put("owner", UserDTO.json(val.getOwner()))
+ .put("room", RoomDTO.json(val.getRoom()))
+ .put("reminder", val.getReminder() == null ?
null : val.getReminder().name())
.put("start",
ISO8601_FULL_FORMAT.format(val.getStart()))
.put("end",
ISO8601_FULL_FORMAT.format(val.getEnd()))
- .put("inserted",
ISO8601_FULL_FORMAT.format(val.getInserted()))
- .put("updated",
ISO8601_FULL_FORMAT.format(val.getUpdated()))
- .toString();
+ .put("inserted", i == null ? null :
ISO8601_FULL_FORMAT.format(i))
+ .put("updated", u == null ? null :
ISO8601_FULL_FORMAT.format(u));
+ }
+
+ @Override
+ public String toString(AppointmentDTO val) {
+ return json(val).toString();
}
}
Modified:
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
(original)
+++
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
Fri Jan 20 16:45:00 2017
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRoot
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.user.UserDTO;
import org.apache.openmeetings.db.entity.calendar.MeetingMember;
+import org.apache.openmeetings.db.entity.user.User;
import org.apache.wicket.ajax.json.JSONObject;
@XmlRootElement
@@ -46,7 +47,13 @@ public class MeetingMemberDTO implements
public MeetingMember get(UserDao userDao) {
MeetingMember mm = new MeetingMember();
mm.setId(id);
- mm.setUser(user.get(userDao));
+ if (user.getId() != null) {
+ mm.setUser(userDao.get(user.getId()));
+ } else {
+ mm.setUser(user.get(userDao));
+ mm.getUser().setType(User.Type.contact);
+ mm.getUser().getRights().clear();
+ }
return mm;
}
Modified:
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
(original)
+++
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
Fri Jan 20 16:45:00 2017
@@ -19,7 +19,6 @@
package org.apache.openmeetings.db.dto.room;
import static org.apache.openmeetings.db.dto.room.RoomOptionsDTO.optInt;
-import static org.apache.openmeetings.db.dto.room.RoomOptionsDTO.optLong;
import java.io.Serializable;
import java.util.ArrayList;
@@ -58,7 +57,7 @@ public class RoomDTO implements Serializ
private boolean allowRecording;
private boolean waitForRecording;
private boolean audioOnly;
- private Set<RoomElement> hiddenElements;
+ private Set<RoomElement> hiddenElements = new HashSet<>();
public RoomDTO() {}
@@ -318,6 +317,15 @@ public class RoomDTO implements Serializ
return r;
}
+ public static JSONObject json(RoomDTO r) {
+ JSONArray rr = new JSONArray();
+ for (RoomElement h : r.getHiddenElements()) {
+ rr.put(h.name());
+ }
+ return new JSONObject(r).put("hiddenElements", rr)
+ .put("type", r.getType().name());
+ }
+
@Override
public String toString() {
return new JSONObject(this).toString();
Modified:
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
(original)
+++
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
Fri Jan 20 16:45:00 2017
@@ -213,7 +213,18 @@ public class UserDTO implements Serializ
u.timeZoneId = o.optString("timeZoneId");
u.externalId = o.optString("externalId");
u.externalType = o.optString("externalType");
- u.type = Type.valueOf(o.optString("type"));
+ String t = o.optString("type", null);
+ u.type = t == null ? null : Type.valueOf(t);
return u;
}
+
+ public static JSONObject json(UserDTO u) {
+ JSONObject o = new JSONObject(u)
+ .put("type", u.getType().name());
+ JSONArray rr = new JSONArray();
+ for (Right r : u.getRights()) {
+ rr.put(r.name());
+ }
+ return o.put("rights", rr);
+ }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/AbstractWicketTester.java
Fri Jan 20 16:45:00 2017
@@ -28,9 +28,8 @@ import org.apache.wicket.util.tester.Wic
import org.junit.After;
public class AbstractWicketTester extends AbstractJUnitDefaults {
-
protected WicketTester tester;
-
+
@Override
public void setUp() throws Exception {
super.setUp();
@@ -46,11 +45,11 @@ public class AbstractWicketTester extend
}
assertTrue("Web session is not signed in for user: " + (login
!= null ? login : username), WebSession.get().isSignedIn());
}
-
+
@After
public void tearDown() {
if (tester != null) {
- //can be null in case exception on initialization
+ //can be null in case exception on initialization
tester.destroy();
}
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
Fri Jan 20 16:45:00 2017
@@ -18,11 +18,16 @@
*/
package org.apache.openmeetings.test.webservice;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Date;
import java.util.UUID;
+import javax.ws.rs.core.Form;
+import javax.ws.rs.core.Response;
+
import org.apache.openmeetings.db.dao.room.RoomDao;
import org.apache.openmeetings.db.dao.user.GroupDao;
import org.apache.openmeetings.db.dto.basic.ServiceResult;
@@ -31,6 +36,9 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.db.entity.user.GroupUser;
import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.webservice.util.AppointmentParamConverter;
+import org.apache.wicket.ajax.json.JSONArray;
+import org.apache.wicket.ajax.json.JSONObject;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -65,4 +73,152 @@ public class TestCalendarService extends
public void testGetByPublicRoom() throws Exception {
actualTest(roomDao.get(5L)); //default public restricted room
}
+
+ private static JSONObject createAppointment() {
+ return new JSONObject()
+ .put("title", "test")
+ .put("start", "2017-01-20T20:30:03+0300")
+ .put("end", "2017-01-20T21:30:03+0300")
+ .put("description", "Ð ÑÑÑкий ТеÑÑ")
+ .put("reminder", "none")
+ .put("room", new JSONObject()
+ .put("name", "test24")
+ .put("comment", "appointment test room")
+ .put("type", "conference")
+ .put("numberOfPartizipants", 15)
+ .put("appointment", true)
+ .put("isPublic", false)
+ .put("demo", false)
+ .put("closed", false)
+ .put("externalId", 10)
+ .put("externalType", "HuntingLabCMS")
+ .put("redirectUrl", "")
+ .put("moderated", true)
+ .put("allowUserQuestions", true)
+ .put("allowRecording", false)
+ .put("waitForRecording", false)
+ .put("audioOnly", true)
+ .put("topBarHidden", false)
+ .put("chatHidden", false)
+ .put("activitiesHidden", false)
+ .put("filesExplorerHidden", false)
+ .put("actionsMenuHidden", false)
+ .put("screenSharingHidden", false)
+ .put("whiteboardHidden", false))
+ .put("languageId", 9)
+ .put("passwordProtected", false)
+ .put("connectedEvent", false)
+ .put("reminderEmailSend", false);
+ }
+
+ @Test
+ public void testCreate() throws Exception {
+ JSONObject o = createAppointment();
+
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = createUser(u);
+ ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ }
+
+ @Test
+ public void testDelete() {
+ ServiceResult sr = login();
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/" + Long.MAX_VALUE) //non-existent ID
+ .query("sid", sr.getMessage())
+ .delete();
+
+ assertNotEquals("Call should NOT be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ }
+
+ @Test
+ public void testCreateWithOmMm() throws Exception {
+ JSONObject o = createAppointment()
+ .put("meetingMembers", new JSONArray()
+ .put(new
JSONObject().put("user", new JSONObject()
+ .put("id",
1))));
+
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = createUser(u);
+ ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ }
+
+ @Test
+ public void testCreateWithMm() throws Exception {
+ JSONObject o = createAppointment()
+ .put("meetingMembers", new JSONArray()
+ .put(new
JSONObject().put("user", new JSONObject()
+
.put("firstname", "Jhon 1")
+
.put("lastname", "Doe")
+ .put("Address",
new JSONObject().put("email", "[email protected]"))
+ ))
+ .put(new
JSONObject().put("user", new JSONObject()
+
.put("firstname", "Jhon 2")
+
.put("lastname", "Doe")
+ .put("Address",
new JSONObject().put("email", "[email protected]"))
+ ))
+ );
+
+ String uuid = UUID.randomUUID().toString();
+ User u = getUser(uuid);
+ u.getGroupUsers().add(new GroupUser(groupDao.get(1L), u));
+ u = createUser(u);
+ ServiceResult sr = login(u.getLogin(), getRandomPass(uuid));
+
+ Response resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ AppointmentDTO dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ assertEquals("DTO should have 2 attendees", 2,
dto.getMeetingMembers().size());
+
+ //try to change MM list
+ JSONObject o1 = AppointmentParamConverter.json(dto)
+ .put("meetingMembers", new JSONArray()
+ .put(new
JSONObject().put("user", new JSONObject()
+ .put("id",
1))));
+
+ resp = getClient(CALENDAR_SERVICE_URL)
+ .path("/")
+ .query("sid", sr.getMessage())
+ .form(new Form().param("appointment",
o1.toString()));
+
+ assertNotNull("Valid AppointmentDTO should be returned", resp);
+ assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
+ dto = resp.readEntity(AppointmentDTO.class);
+ assertNotNull("Valid DTO should be returned", dto);
+ assertNotNull("DTO id should be valid", dto.getId());
+ assertEquals("DTO should have 1 attendees", 1,
dto.getMeetingMembers().size());
+ }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestUserService.java
Fri Jan 20 16:45:00 2017
@@ -18,8 +18,10 @@
*/
package org.apache.openmeetings.test.webservice;
+import static
org.apache.openmeetings.db.util.ApplicationHelper.getWicketTester;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import javax.ws.rs.core.Form;
import javax.ws.rs.core.Response;
@@ -28,9 +30,22 @@ import org.apache.openmeetings.db.dto.ba
import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
import org.apache.openmeetings.db.dto.room.RoomOptionsDTO;
import org.apache.openmeetings.db.dto.user.ExternalUserDTO;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.util.string.StringValue;
+import org.apache.wicket.util.tester.WicketTester;
+import org.junit.After;
import org.junit.Test;
public class TestUserService extends AbstractWebServiceTest {
+ protected WicketTester tester;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ tester = getWicketTester();
+ assertNotNull("Web session should not be null",
WebSession.get());
+ }
+
@Test
public void loginTest() {
ServiceResult r = login();
@@ -58,5 +73,17 @@ public class TestUserService extends Abs
assertEquals("Call should be successful",
Response.Status.OK.getStatusCode(), resp.getStatus());
ServiceResult r1 = resp.readEntity(ServiceResult.class);
assertEquals("OM Call should be successful", r1.getType(),
Type.SUCCESS.name());
+
+ WebSession ws = WebSession.get();
+ ws.checkHashes(StringValue.valueOf(r1.getMessage()),
StringValue.valueOf(""));
+ assertTrue("Login via secure hash should be successful",
ws.isSignedIn());
+ }
+
+ @After
+ public void tearDown() {
+ if (tester != null) {
+ //can be null in case exception on initialization
+ tester.destroy();
+ }
}
}
Modified:
openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
(original)
+++
openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/CalendarWebService.java
Fri Jan 20 16:45:00 2017
@@ -294,7 +294,9 @@ public class CalendarWebService {
Sessiondata sd = sessionDao.check(sid);
log.debug("save userId:" + sd);
User u = userDao.get(sd.getUserId());
- if (!AuthLevelUtil.hasWebServiceLevel(u.getRights()) &&
appointment.getOwner() != null)
+ if (!AuthLevelUtil.hasWebServiceLevel(u.getRights())
+ && appointment.getOwner() != null
+ &&
!appointment.getOwner().getId().equals(u.getId()))
{
//TODO maybe additional checks are required
log.error("USER/Room modification as SOAP");
Modified:
openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java?rev=1779645&r1=1779644&r2=1779645&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
(original)
+++
openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
Fri Jan 20 16:45:00 2017
@@ -20,6 +20,8 @@ package org.apache.openmeetings.webservi
import static
org.apache.openmeetings.util.CalendarPatterns.ISO8601_FULL_FORMAT;
+import java.util.Date;
+
import javax.ws.rs.ext.ParamConverter;
import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
@@ -47,7 +49,8 @@ public class AppointmentParamConverter i
a.setInserted(DateParamConverter.get(o.optString("inserted")));
a.setUpdated(DateParamConverter.get(o.optString("updated")));
a.setDeleted(o.optBoolean("inserted"));
- a.setReminder(Reminder.valueOf(o.optString("reminder")));
+ String r = o.optString("reminder", null);
+ a.setReminder(r == null ? null : Reminder.valueOf(r));
a.setRoom(RoomDTO.get(o.optJSONObject("room")));
a.setIcalId(o.optString("icalId"));
JSONArray mm = o.optJSONArray("meetingMembers");
@@ -64,13 +67,20 @@ public class AppointmentParamConverter i
return a;
}
- @Override
- public String toString(AppointmentDTO val) {
- return new JSONObject(this)
+ public static JSONObject json(AppointmentDTO val) {
+ Date i = val.getInserted(), u = val.getUpdated();
+ return new JSONObject(val)
+ .put("owner", UserDTO.json(val.getOwner()))
+ .put("room", RoomDTO.json(val.getRoom()))
+ .put("reminder", val.getReminder() == null ?
null : val.getReminder().name())
.put("start",
ISO8601_FULL_FORMAT.format(val.getStart()))
.put("end",
ISO8601_FULL_FORMAT.format(val.getEnd()))
- .put("inserted",
ISO8601_FULL_FORMAT.format(val.getInserted()))
- .put("updated",
ISO8601_FULL_FORMAT.format(val.getUpdated()))
- .toString();
+ .put("inserted", i == null ? null :
ISO8601_FULL_FORMAT.format(i))
+ .put("updated", u == null ? null :
ISO8601_FULL_FORMAT.format(u));
+ }
+
+ @Override
+ public String toString(AppointmentDTO val) {
+ return json(val).toString();
}
}