SOAP Web Services
Transkrypt
SOAP Web Services
Integracja aplikacji Ćwiczenie 3 SOAP Web Services W ramach ćwiczenia zapoznamy się z usługami sieciowymi zgodnymi ze standardem SOAP. Przetestujemy dwie usługi: prostą usługę Kalkulator – usługa udostępnia podstawowe operacje arytmetyczne; usługę wbudowaną w system Magento – profesjonalne oprogramowanie do obsługi sklepu internetowego (http://magento.com). Do testowania usług wykorzystamy narzędzie soapUI (http://www.soapui.org). Przykładowa usługa sieciowa – Kalkulator Usługa Kalkulator dostępna jest pod adresem http://82.145.73.232:1234/kalkulator Aby pobrać dokument WSDL opisujący usługę, wejdź na adres http://82.145.73.232:1234/kalkulator?wsdl Przeanalizujmy zawartość dokumentu WSDL: o w elemencie portType znajdziesz listę operacji udostępnianych przez usługę; o przyjrzyj się definicji operacji o nazwie dodaj: <operation name="dodaj"> <input wsam:Action="http://kalkulator.ia/Kalkulator/dodajRequest" message="tns:dodaj"/> <output wsam:Action="http://kalkulator.ia/Kalkulator/dodajResponse" message="tns:dodajResponse"/> </operation> o w powyższej definicji podano nazwy komunikatów, które stanowią odpowiednio żądanie i odpowiedź tej operacji: dodaj i dodajResponse; przyjrzyjmy się definicji komunikatu wejściowego – komunikat dodaj znajdziemy wyżej w dokumencie: <message name="dodaj"> <part name="parameters" element="tns:dodaj"/> </message> o jak widać definicja komunikatu odsyła nas do elementu XML o nazwie dodaj; Strona 1 Integracja aplikacji Ćwiczenie 3 o definicje wszelkich typów XML używanych w usłudze znajdziemy w sekcji types dokumentu WSDL – w naszym przypadku element types zawiera odnośnik do zewnętrznego dokumentu XML Schema: <types> <xsd:schema> <xsd:import namespace="http://kalkulator.ia/" schemaLocation="http://kalkulator:1234/kalkulator?xsd=1"/> </xsd:schema> </types> o w dokumencie XML Schema znajdziemy szczegółową definicję elementu dodaj – czyli w praktyce szczegółowy format komunikatu, który należy wysłać do metody dodaj: <xs:complexType name="dodaj"> <xs:sequence> <xs:element name="x" type="xs:int" minOccurs="0"/> <xs:element name="y" type="xs:int" minOccurs="0"/> </xs:sequence> </xs:complexType> o jak widać żądanie powinno składać się z sekwencji elementów o nazwach x i y, oba typu int. Testowanie usługi Kalkulator narzędziem soapUI Obejrzyj screencast dołączony do ćwiczenia – ilustruje on tworzenie projektu w soapUI oraz testowanie usługi. Zadanie 1 Stwórz w soapUI projekt do testowania usługi Kalkulator i wykonaj następujące ćwiczenia: o wyślij żądania do metod: dodaj, pomnoz, podziel; przyjrzyj się parametrom i formatowi odpowiedzi; o sprawdź zachowanie usługi po podaniu błędnych parametrów (np. zamiast liczby podaj tekst albo usuń z żądania jeden z parametrów). Strona 2 Integracja aplikacji Ćwiczenie 3 Zadanie 2 Przygotuj zestaw testów (Test suite), który przetestuje obliczenie wyrażenia: (2 + 3) * 7 o pierwsze żądanie powinno obliczyć wyrażenie 2+3, wywołując metodę dodaj z odpowiednimi parametrami; o drugie żądanie powinno użyć zwróconego wyniku jako parametru wywołania metody pomnoz. Do poszczególnych żądań dodaj asercje sprawdzające: o czy odpowiedź nie zawiera komunikatu o błędzie (asercja Not SOAP Fault); o czy odpowiedź jest zgodna ze schematem zdefiniowanym w usłudze (asercja Schema Compliance); o czy wynik jest poprawny (asercja XPath Match). Zadanie 3 Do zestawu testów dodaj nowy przypadek testowy (Test case) – w przypadku tym przetestuj błędne żądania: o żądanie z błędnymi parametrami (np. metoda dodaj i tekst zamiast liczby); o żądanie z dzieleniem przez zero. Dodaj do żądań asercje sprawdzające: o czy odpowiedź zawiera komunikat o błędzie (asercja SOAP Fault); o czy komunikat o błędzie zawiera odpowiedni tekst (asercja XPath Match lub asercja Contains). Strona 3 Integracja aplikacji Ćwiczenie 3 Zadanie dodatkowe Zadanie dodatkowe polega na przetestowaniu usług udostępnianych przez system Magento. Należy przygotować odpowiedni projekt w soapUI, a w nim zestaw testów. Pod adresem http://82.145.73.232/magento znajduje się instalacja sklepu Magento (serwer dostępny w sieci wydziałowej) Dokument WSDL wbudowanej usługi SOAP znajdziesz pod adresem http://82.145.73.232/magento/index.php/api/v2_soap?wsdl=1 Dokumentację udostępnionego API znajdziesz pod adresem: http://www.magentocommerce.com/api/soap/introduction.html Korzystamy z API w wersji 2 (SOAP API Version v2) z włączonym trybem WS-I Compliance. Korzystanie z API wymaga zalogowania: o wysłanie żądania login spowoduje zalogowanie użytkownika i zwrócenie identyfikatora sesji; o wszystkie kolejne żądania wymagają podania identyfikatora sesji jako jednego z parametrów; o po zakończeniu pracy wysyłamy żądanie endSession, aby zakończyć sesję. o do zalogowania możesz użyć następujących danych: username: ws_user_1 apiKey: pandatrzy Wypróbuj wywołanie kilku metod, na przykład: o catalogCategoryTree – znajdź kategorie podrzędne dla kategorii o id=4; o catalogCategoryAssignedProducts – znajdź produkty przypisane do kategorii o id=11; o catalogProductInfo – znajdź informacje o produkcie o id=297. Przygotuj zestaw testów, który przeprowadzi kolejno operacje: o zaloguj; o pobierz listę produktów w kategorii catalogCategoryAssignedProducts); o id=28 (metoda Strona 4 Integracja aplikacji Ćwiczenie 3 o pobierz nazwę i opis produktu zwróconego w poprzednim kroku – parametr product_id pobierz z wyniku poprzedniego żądania (metoda catalogProductInfo); o zakończ sesję. Dodaj asercje sprawdzające: o brak błędu wywołania (Not SOAP Fault); o zgodność odpowiedzi ze schematem; o zawartość odpowiedzi: login: czy odpowiedź zawiera identyfikator sesji o długości 32 znaków? catalogCategoryAssignedProducts: czy odpowiedź zawiera dokładnie jeden produkt? catalogProductInfo: czy product_id w odpowiedzi zgadza się z parametrem żądania? catalogProductInfo: czy w odpowiedzi znajdują się pola name i description? endSession: czy odpowiedź zawiera potwierdzenie zakończenia (result=true)? Strona 5