package com.homesnap.webserver; /* * #%L * HomeSnapWebServer * %% * Copyright (C) 2011 - 2016 A. de Giuli * %% * This file is part of HomeSnap done by A. de Giuli (arnaud.degiuli(at)free.fr). * * MyDomo is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * MyDomo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with MyDomo. If not, see <http://www.gnu.org/licenses/>. * #L% */ import java.io.File; import java.io.IOException; import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; import org.json.JSONObject; import org.junit.Assert; import org.junit.Before; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; import com.homesnap.engine.controller.who.Who; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class LabelRestAPITest extends AbstractRestApi { private static final String urn_labels = "/house/labels"; @Before public void init() { try { copyFileUsingFileChannels(new File("Backup of house.xml"), new File("house.xml")); } catch (IOException e) { Assert.fail("Impossible to initialize file"); } } @Test public void test1DeleteLabelList() { // Test impossible to create label list JSONObject result = deleteRequestJSONObject(urn_labels, HttpServletResponse.SC_NO_CONTENT); Assert.assertNull(result); } @Test public void test2CreateLabelList() { // Test impossible to create label list postRequestJSONObject(urn_labels,"{}", HttpServletResponse.SC_NOT_IMPLEMENTED); } @Test public void test3CreateLabel() { // Test new label creation JSONObject label = postRequestJSONObject(urn_labels + "/ch6", createJsonLabelCh6(), HttpServletResponse.SC_CREATED); testLabelCh6(label); label = postRequestJSONObject(urn_labels + "/label?id=ch7", createJsonLabelCh7(), HttpServletResponse.SC_CREATED); testLabelCh7(label); } @Test public void test4GetLabelList() { // Test to get labels list JSONArray labels = getRequestJSONArray(urn_labels); // Test labels testLabelCh6(labels.getJSONObject(0)); testLabelCh7(labels.getJSONObject(1)); } @Test public void test5ModifyLabelList() { // Test impossible to modify label list putRequestJSONObject(urn_labels,"{}", HttpServletResponse.SC_NOT_IMPLEMENTED); } @Test public void test6GetLabel() { // Test to get a specific label JSONObject label = getRequestJSONObject(urn_labels + "/ch6"); // Test label Ch1 testLabelCh6(label); label = getRequestJSONObject(urn_labels + "/label?id=ch7"); // Test label Ch1 testLabelCh7(label); } @Test public void test7UpdateLabel() { // Test new label creation JSONObject label = putRequestJSONObject(urn_labels + "/ch6", createJsonLabelCh6Bis(), HttpServletResponse.SC_OK); testLabelCh6Bis(label); label = putRequestJSONObject(urn_labels + "/label?id=ch7", createJsonLabelCh7Bis(), HttpServletResponse.SC_OK); testLabelCh7Bis(label); } @Test public void test8OnStatus() { // Test to get a specific label JSONObject label = getRequestJSONObject("/house/labels/ch6?param=param"); // Test label Ch1 testLabelCh6Bis(label); label = getRequestJSONObject("/house/labels/label?id=ch7¶m=param"); // Test label Ch1 testLabelCh7Bis(label); putRequestJSONObject("/house/labels/ch1?param=param", createJsonController17(), HttpServletResponse.SC_NOT_ACCEPTABLE); // Ch1 not existing! putRequestJSONObject("/house/labels/label?id=ch1¶m=param", createJsonController17(), HttpServletResponse.SC_NOT_ACCEPTABLE); postRequestJSONObject("/house/labels/ch7?param=param", createJsonLabelCh7(), HttpServletResponse.SC_NOT_ACCEPTABLE); postRequestJSONObject("/house/labels/label?id=ch7¶m=param", createJsonLabelCh7(), HttpServletResponse.SC_NOT_ACCEPTABLE); deleteRequestJSONObject("/house/labels/ch7?param=param", HttpServletResponse.SC_OK); deleteRequestJSONObject("/house/labels/label?id=ch7¶m=param", HttpServletResponse.SC_NOT_ACCEPTABLE); } @Test public void test9DeleteLabel() { // Test new label creation JSONObject label = deleteRequestJSONObject(urn_labels + "/ch6", HttpServletResponse.SC_OK); testLabelCh6Bis(label); label = deleteRequestJSONObject(urn_labels + "/label?id=ch7", HttpServletResponse.SC_NOT_ACCEPTABLE); Assert.assertNull(label); } private String createJsonLabelCh6() { return createJsonLabel("Chambre 6", "ch6"); } private void testLabelCh6(JSONObject label) { testLabel(label, "ch6", "Chambre 6", 0); } private String createJsonLabelCh6Bis() { return createJsonLabel("Chambre 6 Bis", "ch6"); } private void testLabelCh6Bis(JSONObject label) { testLabel(label, "ch6", "Chambre 6 Bis", 0); } private String createJsonLabelCh7() { return createJsonLabel("Chambre 7", "ch7"); } private void testLabelCh7(JSONObject label) { testLabel(label, "ch7", "Chambre 7", 0); } private String createJsonLabelCh7Bis() { return createJsonLabel("Chambre 7 Bis", "ch7"); } private void testLabelCh7Bis(JSONObject label) { testLabel(label, "ch7", "Chambre 7 Bis", 0); } private String createJsonController17() { return createJsonController("Test", "17", Who.LIGHT.name()); } }