webidor/src/test/java/cz/xelfi/quoridor/webidor/FinishedGameTest.java
changeset 238 a4f6aca595e8
parent 178 4b78d4f028b3
child 258 935118a5831a
     1.1 --- a/webidor/src/test/java/cz/xelfi/quoridor/webidor/FinishedGameTest.java	Thu Jan 07 22:34:17 2010 +0100
     1.2 +++ b/webidor/src/test/java/cz/xelfi/quoridor/webidor/FinishedGameTest.java	Sun Apr 25 21:20:09 2010 +0200
     1.3 @@ -26,6 +26,7 @@
     1.4  
     1.5  package cz.xelfi.quoridor.webidor;
     1.6  
     1.7 +import java.util.Properties;
     1.8  import com.sun.jersey.api.client.GenericType;
     1.9  import com.sun.jersey.api.client.UniformInterfaceException;
    1.10  import com.sun.jersey.test.framework.JerseyTest;
    1.11 @@ -59,7 +60,7 @@
    1.12          dir.mkdirs();
    1.13          File passwd = new File(dir, "passwd");
    1.14          FileOutputStream os = new FileOutputStream(passwd);
    1.15 -        os.write("Jarda=heslo\nJirka=pesko\n".getBytes("UTF-8"));
    1.16 +        os.write("Jarda=heslo\nJirka=pesko\nMaster=mr\n".getBytes("UTF-8"));
    1.17          os.close();
    1.18          super.setUp();
    1.19      }
    1.20 @@ -225,4 +226,47 @@
    1.21          assertFalse("is finished", end.getId().getStatus().isInProgress());
    1.22      }
    1.23  
    1.24 +    @Test public void testResignForeignGame() throws Exception {
    1.25 +        String logJarda = webResource.path("login").
    1.26 +            queryParam("name", "Jarda").
    1.27 +            queryParam("password", "heslo").
    1.28 +            accept(MediaType.TEXT_PLAIN).
    1.29 +            put(String.class);
    1.30 +        GameId s = webResource.path("games").queryParam("white", "Jarda")
    1.31 +                .queryParam("loginID", logJarda)
    1.32 +                .queryParam("black", "Jirka").post(GameId.class);
    1.33 +        File usersDir = new File(dir, "users");
    1.34 +        usersDir.mkdirs();
    1.35 +        File Master = new File(usersDir, "Master");
    1.36 +        {
    1.37 +            Properties p = new Properties();
    1.38 +            p.setProperty("email", "mas@ter.cz");
    1.39 +            p.setProperty("permission.resign", "true");
    1.40 +            p.store(new FileOutputStream(Master), "");
    1.41 +        }
    1.42 +
    1.43 +        assertTrue("In progress", s.getStatus().isInProgress());
    1.44 +        String logMaster = webResource.path("login").
    1.45 +                queryParam("name", "Master").
    1.46 +                queryParam("password", "mr").
    1.47 +                accept(MediaType.TEXT_PLAIN).
    1.48 +                put(String.class);
    1.49 +
    1.50 +        webResource.path("games/" + s.getId()).
    1.51 +            queryParam("loginID", logMaster).
    1.52 +            queryParam("player", "Jarda").
    1.53 +            queryParam("move", "RESIGN").put(GameId.class);
    1.54 +        try {
    1.55 +            Game end = webResource.path("games/" + s.getId()).accept(MediaType.TEXT_XML).get(Game.class);
    1.56 +            fail("Should not be able to get game when finished");
    1.57 +        } catch (UniformInterfaceException ex) {
    1.58 +            // OK
    1.59 +        }
    1.60 +        Game end = webResource.path("games/" + s.getId()).queryParam("loginID", logJarda).accept(MediaType.TEXT_XML).get(Game.class);
    1.61 +        assertEquals("BlackWins", GameStatus.blackWon, end.getId().getStatus());
    1.62 +        assertEquals("Jirka wins", "Jirka", end.getCurrentPlayer());
    1.63 +
    1.64 +        assertFalse("is finished", end.getId().getStatus().isInProgress());
    1.65 +    }
    1.66 +
    1.67  }