smartrics.rest.fitnesse.fixture.RestFixtureConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of smartrics-RestFixture Show documentation
Show all versions of smartrics-RestFixture Show documentation
The RestFixture is a FitNesse (http://fitnesse.org) fixture that allows
developers and/or product owners to write test fixtures for REST services
with simplicity in mind. The idea is to write tests that are self
documenting and easy to write and read, without the need to write Java code.
The fixture allows test writers to express tests as actions (any of the
allowed HTTP methods) to operate on resource URIs and express expectations on
the content of the return code, headers and body. All without writing one
single line of Java code.
And it also works as a living/executable documentation of the API.
/* Copyright 2008 Fabrizio Cannizzo
*
* This file is part of RestFixture.
*
* RestFixture (http://code.google.com/p/rest-fixture/) is free software:
* you can redistribute it and/or modify it under the terms of the
* GNU Lesser General Public License as published by the Free Software Foundation,
* either version 3 of the License, or (at your option) any later version.
*
* RestFixture 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with RestFixture. If not, see .
*
* If you want to contact the author please leave a comment here
* http://smartrics.blogspot.com/2008/08/get-fitnesse-with-some-rest.html
*/
package smartrics.rest.fitnesse.fixture;
import fit.Fixture;
import fit.Parse;
import smartrics.rest.fitnesse.fixture.support.Config;
import smartrics.rest.fitnesse.fixture.support.Tools;
import java.util.List;
/**
* A simple fixture to store configuration data for the rest fixture.
*
* A configuration is a named map that stores key/value pairs. The name of the
* map is passed as an optional parameter to the fixture. If not passed it's
* assumed that a default name is used. The default value of the map name is
* {@link Config#DEFAULT_CONFIG_NAME}.
*
* The structure of the table of this fixture simply a table that reports
* key/values. The name of the config is optionally passed to the fixture.
*
* Example:
*
* Uses the default config name:
*
*
* smartrics.rest.fitnesse.fixture.RestFixtureConfig
*
*
* key1
* value1
*
*
* key2
* value2
*
*
* ...
* ...
*
*
*
* Uses the config name confname:
*
*
* smartrics.rest.fitnesse.fixture.RestFixtureConfig
* confname
*
*
* key1
* value1
*
*
* key2
* value2
*
*
* ...
* ...
*
*
*
* {@link RestFixture} accesses the config passed by name as second parameter to
* the fixture or the default if no name is passed:
*
*
* smartrics.rest.fitnesse.fixture.RestFixture
* http://localhost:7070
*
*
* ...
*
*
*
* or
*
*
*
* smartrics.rest.fitnesse.fixture.RestFixture
* http://localhost:7070
* confname
*
*
* ...
*
*
*/
public class RestFixtureConfig extends Fixture {
private Config config;
/**
* Default constructor.
*
* For fixtures with no args.
*
*/
public RestFixtureConfig() {
}
/**
* Constructor with args. Arguments are extracted from the first row of the
* fixture.
*
* @param args
*/
public RestFixtureConfig(String... args) {
super.args = args;
}
/**
* Support for Slim runner.
*
* @param rows
* @return the content as a list (of rows) of lists of strings (the cells).
*/
public List> doTable(List> rows) {
Config c = getConfig();
for (List row : rows) {
String k = row.get(0);
if (row.size() == 2) {
k = row.get(0);
String v = row.get(1);
c.add(k, v);
row.set(0, "");
row.set(1, "pass:" + Tools.toHtml(v));
} else {
row.set(0,
"error:"
+ k
+ Tools.toHtml("\n\nthis line doesn't conform to NVP format "
+ "(col 0 for name, col 1 for value) - content skipped"));
}
}
return rows;
}
/**
* Processes each row in the config fixture table and loads the key/value
* pairs. The fixture optional first argument is the config name. If not
* supplied the value is defaulted. See {@link Config#DEFAULT_CONFIG_NAME}.
*/
@Override
public void doRow(Parse p) {
Parse cells = p.parts;
try {
String key = cells.text();
String value = cells.more.text();
Config c = getConfig();
c.add(key, value);
String fValue = Tools.toHtml(value);
Parse valueParse = cells.more;
valueParse.body = fValue;
right(valueParse);
} catch (Exception e) {
exception(p, e);
}
}
private Config getConfig() {
if (config != null) {
return config;
}
if (super.args != null && super.args.length > 0) {
config = Config.getConfig(super.args[0]);
} else {
config = Config.getConfig();
}
return config;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy