2016-04-26 15 views
1

Ich möchte wissen, wie Metadaten mit XMLpath mit RESTassured testen. Ich versuche, einen OData-Service zu testen und jedes Detail in Metadaten zu lesen. Ich kann JSON Antwort lesen. Kann aber keine klare Methode zum Lesen von Metadaten finden. Ich möchte auch wissen, was als Knoten in Metadaten identifiziert wird.So testen Sie Metadaten mit XMLpath in RESTasured

+0

Es würde helfen ein Beispiel für die XML zu schreiben, die Sie analysieren möchten. – MikeJRamsey56

Antwort

1

Hier sind Gurkenruhe-gesicherte Schritte zum Parsen eines einfachen OData-XML-Dokuments.

package steps; 

import java.util.List; 

import com.jayway.restassured.path.xml.XmlPath; 
import com.jayway.restassured.path.xml.element.Node; 

import cucumber.api.java.en.Given; 
import cucumber.api.java.en.When; 

import static com.jayway.restassured.path.xml.XmlPath.*; 

import static org.hamcrest.Matchers.*; 
import static org.junit.Assert.assertThat; 

public class ODataSteps { 
    String sampleXml = ""; 

    @Given("^I have a simple service document$") 
    public void i_have_a_simple_service_document() { 
     sampleXml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" + 
      "<service xml:base=\"http://services.odata.org/OData/OData.svc/\"" + 
      "   xmlns:atom=\"http://www.w3.org/2005/Atom\"" + 
      "   xmlns:app=\"http://www.w3.org/2007/app\"" + 
      "   xmlns=\"http://www.w3.org/2007/app\">" + 
      " <workspace>" + 
      " <atom:title>Default</atom:title>" + 
      " <collection href=\"Products\">" + 
      "  <atom:title>Products</atom:title>" + 
      " </collection>" + 
      " <collection href=\"Categories\">" + 
      "  <atom:title>Categories</atom:title>" + 
      " </collection>" + 
      " <collection href=\"Suppliers\">" + 
      "  <atom:title>Suppliers</atom:title>" + 
      " </collection>" + 
      " </workspace>" + 
      "</service>"; 
    } 

    @When("^I search for available collections I find \"(\\d+)\"$") 
    public void i_search_for_available_collections_i_find(int expectedNumCategories) { 
     XmlPath xmlPath = new XmlPath(sampleXml); 
     final List<Node> collections = xmlPath.getList("service.workspace.collection", Node.class); 
     assertThat(collections.size(), equalTo(expectedNumCategories)); 

     final List<String> collectionsStr = given(sampleXml).getList("service.workspace.collection.findAll {it.title.text()}", String.class); 
     assertThat(collectionsStr, hasItems("Products", "Categories", "Suppliers")); 
    } 

} 

Die Gurke-jvm Feature-Datei, die die oben sieht wie folgt aufruft:

@odata 
Feature: Demonstrate ability to test OData Service Documents 
    The Open Data Protocol (OData) enables the creation of HTTP-based data 
    services, which allow resources identified using Uniform Resource 
    Identifiers (URIs) and defined in an abstract data model, to be published 
    and edited by Web clients using simple HTTP messages. 

@api 
Scenario: Parse a canned OData Service document 
    Given I have a simple service document 
    When I search for available collections I find "3" 
+0

Thak Sie für Ihre Hilfe – user3724599