<?xml version="1.0" encoding="UTF-8"?>
<con:soapui-project activeEnvironment="Default" name="Sample YouTube Project" resourceRoot="" soapui-version="4.5.2"
                    xmlns:con="http://eviware.com/soapui/config">
    <con:settings/>
    <con:interface xsi:type="con:RestService" wadlVersion="http://wadl.dev.java.net/2009/02" name="YouTube" type="rest"
                   basePath="/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <con:settings/>
        <con:definitionCache type="TEXT" rootPart=""/>
        <con:endpoints>
            <con:endpoint>http://gdata.youtube.com</con:endpoint>
        </con:endpoints>
        <con:resource name="feeds" path="feeds">
            <con:settings/>
            <con:parameters>
                <con:parameter>
                    <con:name>alt</con:name>
                    <con:value>atom</con:value>
                    <con:style>QUERY</con:style>
                    <con:default>atom</con:default>
                    <con:option>atom</con:option>
                    <con:option>json</con:option>
                    <con:option>rss</con:option>
                    <con:option>json-in-script</con:option>
                    <con:option>jsonc</con:option>
                </con:parameter>
                <con:parameter>
                    <con:name>v</con:name>
                    <con:value>2</con:value>
                    <con:style>QUERY</con:style>
                    <con:default>2</con:default>
                    <con:option>1</con:option>
                    <con:option>2</con:option>
                    <con:option>2.1</con:option>
                </con:parameter>
            </con:parameters>
            <con:resource name="videos" path="/api/videos">
                <con:settings/>
                <con:parameters>
                    <con:parameter>
                        <con:name>q</con:name>
                        <con:value/>
                        <con:style>QUERY</con:style>
                        <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
                        <con:default/>
                        <con:path xsi:nil="true"/>
                        <con:description xsi:nil="true"/>
                    </con:parameter>
                    <con:parameter>
                        <con:name>start-index</con:name>
                        <con:value/>
                        <con:style>QUERY</con:style>
                        <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
                        <con:default/>
                        <con:path xsi:nil="true"/>
                        <con:description xsi:nil="true"/>
                    </con:parameter>
                    <con:parameter>
                        <con:name>max-results</con:name>
                        <con:value/>
                        <con:style>QUERY</con:style>
                        <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
                        <con:default/>
                        <con:path xsi:nil="true"/>
                        <con:description xsi:nil="true"/>
                    </con:parameter>
                </con:parameters>
                <con:method name="GET" method="GET">
                    <con:settings/>
                    <con:parameters/>
                    <con:representation type="RESPONSE">
                        <con:mediaType>application/atom+xml; charset=UTF-8</con:mediaType>
                        <con:status>200</con:status>
                        <con:params/>
                        <con:element xmlns:atom="http://www.w3.org/2005/Atom">atom:feed</con:element>
                    </con:representation>
                    <con:representation type="RESPONSE">
                        <con:mediaType>application/json; charset=UTF-8</con:mediaType>
                        <con:status>200</con:status>
                        <con:params/>
                        <con:element xmlns:vid="http://gdata.youtube.com/feeds/api/videos">vid:Response</con:element>
                    </con:representation>
                    <con:representation type="RESPONSE">
                        <con:mediaType>application/rss+xml; charset=UTF-8</con:mediaType>
                        <con:status>200</con:status>
                        <con:params/>
                        <con:element>rss</con:element>
                    </con:representation>
                    <con:representation type="RESPONSE">
                        <con:mediaType>text/javascript; charset=UTF-8</con:mediaType>
                        <con:status>200</con:status>
                        <con:params/>
                    </con:representation>
                    <con:representation type="FAULT">
                        <con:mediaType>application/json; charset=UTF-8</con:mediaType>
                        <con:status>400</con:status>
                        <con:params/>
                        <con:element xmlns:vid="http://gdata.youtube.com/feeds/api/videos">vid:Fault</con:element>
                    </con:representation>
                    <con:representation type="RESPONSE">
                        <con:mediaType>application/json;charset=UTF-8</con:mediaType>
                        <con:status>200</con:status>
                        <con:params/>
                        <con:element xmlns:vid="http://gdata.youtube.com/feeds/api/videos">vid:Response</con:element>
                    </con:representation>
                    <con:request name="Request 1" mediaType="application/xml">
                        <con:settings>
                            <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting>
                        </con:settings>
                        <con:endpoint>http://gdata.youtube.com</con:endpoint>
                        <con:request/>
                        <con:credentials>
                            <con:authType>Global HTTP Settings</con:authType>
                        </con:credentials>
                        <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                        <con:jmsPropertyConfig/>
                        <con:parameters>
                            <con:entry key="alt" value="json-in-script"/>
                            <con:entry key="q" value="soapui"/>
                        </con:parameters>
                    </con:request>
                </con:method>
            </con:resource>
            <con:resource name="channels" path="/api/channels">
                <con:settings/>
                <con:parameters>
                    <con:parameter>
                        <con:name>q</con:name>
                        <con:value/>
                        <con:style>QUERY</con:style>
                        <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
                        <con:default/>
                        <con:path xsi:nil="true"/>
                        <con:description xsi:nil="true"/>
                    </con:parameter>
                    <con:parameter>
                        <con:name>start-index</con:name>
                        <con:value/>
                        <con:style>QUERY</con:style>
                        <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
                        <con:default/>
                        <con:path xsi:nil="true"/>
                        <con:description xsi:nil="true"/>
                    </con:parameter>
                    <con:parameter>
                        <con:name>max-results</con:name>
                        <con:value/>
                        <con:style>QUERY</con:style>
                        <con:type xmlns:xs="http://www.w3.org/2001/XMLSchema">xs:string</con:type>
                        <con:default/>
                        <con:path xsi:nil="true"/>
                        <con:description xsi:nil="true"/>
                    </con:parameter>
                </con:parameters>
                <con:method name="GET" method="GET">
                    <con:settings/>
                    <con:parameters/>
                    <con:representation type="RESPONSE">
                        <con:mediaType>application/atom+xml; charset=UTF-8; type=feed</con:mediaType>
                        <con:status>200</con:status>
                        <con:params/>
                        <con:element xmlns:atom="http://www.w3.org/2005/Atom">atom:feed</con:element>
                    </con:representation>
                    <con:representation type="RESPONSE">
                        <con:mediaType>application/json; charset=UTF-8</con:mediaType>
                        <con:status>200</con:status>
                        <con:params/>
                        <con:element xmlns:chan="http://gdata.youtube.com/feeds/api/channels">chan:Response
                        </con:element>
                    </con:representation>
                    <con:request name="Request 1" mediaType="application/xml">
                        <con:settings>
                            <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting>
                        </con:settings>
                        <con:endpoint>http://gdata.youtube.com</con:endpoint>
                        <con:request/>
                        <con:credentials>
                            <con:authType>Global HTTP Settings</con:authType>
                        </con:credentials>
                        <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                        <con:jmsPropertyConfig/>
                        <con:parameters>
                            <entry key="q" value="smartbear" xmlns="http://eviware.com/soapui/config"/>
                        </con:parameters>
                    </con:request>
                </con:method>
            </con:resource>
            <con:resource name="standard" path="api/standardfeeds">
                <con:settings/>
                <con:parameters/>
                <con:resource name="top_rated" path="top_rated">
                    <con:settings/>
                    <con:parameters/>
                    <con:method name="Method 1" method="GET">
                        <con:settings/>
                        <con:parameters/>
                        <con:representation type="FAULT">
                            <con:mediaType>application/vnd.google.gdata.error+xml</con:mediaType>
                            <con:status>404 400</con:status>
                            <con:params/>
                            <con:element xmlns:ns="http://schemas.google.com/g/2005">ns:errors</con:element>
                        </con:representation>
                        <con:representation type="RESPONSE">
                            <con:mediaType>application/atom+xml; charset=UTF-8; type=feed</con:mediaType>
                            <con:status>200</con:status>
                            <con:params/>
                            <con:element xmlns:atom="http://www.w3.org/2005/Atom">atom:feed</con:element>
                        </con:representation>
                        <con:representation type="RESPONSE">
                            <con:mediaType>application/rss+xml; charset=UTF-8</con:mediaType>
                            <con:status>200</con:status>
                            <con:params/>
                            <con:element>rss</con:element>
                        </con:representation>
                        <con:request name="Request 1" mediaType="application/xml">
                            <con:settings>
                                <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting>
                            </con:settings>
                            <con:endpoint>http://gdata.youtube.com</con:endpoint>
                            <con:request/>
                            <con:credentials>
                                <con:authType>Global HTTP Settings</con:authType>
                            </con:credentials>
                            <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                            <con:jmsPropertyConfig/>
                            <con:parameters>
                                <entry key="alt" value="rss" xmlns="http://eviware.com/soapui/config"/>
                            </con:parameters>
                        </con:request>
                    </con:method>
                </con:resource>
                <con:resource name="most_popular" path="most_popular">
                    <con:settings/>
                    <con:parameters/>
                    <con:method name="Method 1" method="GET">
                        <con:settings/>
                        <con:parameters/>
                        <con:representation type="RESPONSE">
                            <con:mediaType>application/json; charset=UTF-8</con:mediaType>
                            <con:status>200</con:status>
                            <con:params/>
                            <con:element xmlns:most="http://gdata.youtube.com/feeds/api/standardfeeds/most_popular">
                                most:Response
                            </con:element>
                        </con:representation>
                        <con:request name="Request 1" mediaType="application/xml">
                            <con:settings/>
                            <con:endpoint>http://gdata.youtube.com</con:endpoint>
                            <con:request/>
                            <con:credentials>
                                <con:authType>Global HTTP Settings</con:authType>
                            </con:credentials>
                            <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                            <con:jmsPropertyConfig/>
                            <con:parameters/>
                        </con:request>
                    </con:method>
                </con:resource>
                <con:resource name="most_viewed" path="most_viewed">
                    <con:settings/>
                    <con:parameters/>
                    <con:method name="Method 1" method="GET">
                        <con:settings/>
                        <con:parameters/>
                        <con:representation type="RESPONSE">
                            <con:mediaType>application/atom+xml; charset=UTF-8; type=feed</con:mediaType>
                            <con:status>200</con:status>
                            <con:params/>
                            <con:element xmlns:atom="http://www.w3.org/2005/Atom">atom:feed</con:element>
                        </con:representation>
                        <con:representation type="RESPONSE">
                            <con:mediaType>text/javascript; charset=UTF-8</con:mediaType>
                            <con:status>200</con:status>
                            <con:params/>
                        </con:representation>
                        <con:representation type="RESPONSE">
                            <con:mediaType>text/javascript;charset=UTF-8</con:mediaType>
                            <con:status>200</con:status>
                            <con:params/>
                        </con:representation>
                        <con:request name="Request 1" mediaType="application/xml">
                            <con:settings>
                                <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting>
                            </con:settings>
                            <con:endpoint>http://gdata.youtube.com</con:endpoint>
                            <con:request/>
                            <con:credentials>
                                <con:authType>Global HTTP Settings</con:authType>
                            </con:credentials>
                            <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                            <con:jmsPropertyConfig/>
                            <con:parameters/>
                        </con:request>
                    </con:method>
                </con:resource>
            </con:resource>
        </con:resource>
    </con:interface>
    <con:testSuite name="TestSuite">
        <con:settings/>
        <con:runType>SEQUENTIAL</con:runType>
        <con:testCase failOnError="true" failTestCaseOnErrors="true" keepSession="false" maxResults="0" name="TestCase"
                      searchProperties="true" id="ebc9d39a-3df0-417f-b80b-c08f213b582d">
            <con:description>Basic requests with the YouTube API:
                - Channel Search ; searches for channels named "smartbear" - JSON Response - validates that there is at
                least one hit
                - Video Search : searches for videos named "unprepared geeks" - ATOM XML Response - validates that there
                is at least one hit
                - Top Rated : validates that the top-rated RSS listing contains the correct youtube image
                - Most Popular : validates that the Most Popular response in JSONC format contains the expected
                access-control permissions
                - Most Viewed : validates that the Most Viewed response in JSON-in-Script format starts with the
                expected script call

                see https://developers.google.com/youtube/2.0/developers_guide_protocol_audience
            </con:description>
            <con:settings/>
            <con:testStep type="restrequest" name="Channel Search - JSON">
                <con:settings/>
                <con:config service="YouTube" resourcePath="/feeds/api/channels" methodName="GET"
                            xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                    <con:restRequest name="Channel Search - JSON" mediaType="application/xml" accept="">
                        <con:settings>
                            <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting>
                        </con:settings>
                        <con:endpoint>http://gdata.youtube.com</con:endpoint>
                        <con:request/>
                        <con:assertion type="XPath Match" name="Check count of [e]">
                            <con:configuration>
                                <path>declare namespace ns1='http://gdata.youtube.com/feeds/api/channels';
                                    count( //ns1:Response/ns1:feed/ns1:entry/ns1:e) > 0
                                </path>
                                <content>true</content>
                                <allowWildcards>false</allowWildcards>
                                <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences>
                                <ignoreComments>false</ignoreComments>
                            </con:configuration>
                        </con:assertion>
                        <con:credentials>
                            <con:authType>Global HTTP Settings</con:authType>
                        </con:credentials>
                        <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                        <con:jmsPropertyConfig/>
                        <con:parameters>
                            <con:entry key="alt" value="json"/>
                            <con:entry key="q" value="smartbear"/>
                        </con:parameters>
                    </con:restRequest>
                </con:config>
            </con:testStep>
            <con:testStep type="restrequest" name="Video Search - ATOM">
                <con:settings/>
                <con:config service="YouTube" resourcePath="/feeds/api/videos" methodName="GET"
                            xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                    <con:restRequest name="Video Search - ATOM" mediaType="application/xml" accept="">
                        <con:settings>
                            <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting>
                        </con:settings>
                        <con:endpoint>http://gdata.youtube.com</con:endpoint>
                        <con:request/>
                        <con:assertion type="XPath Match" name="Check for existance of [entry]">
                            <con:configuration>
                                <path>declare namespace ns1='http://www.w3.org/2005/Atom';
                                    exists( //ns1:feed/ns1:entry)
                                </path>
                                <content>true</content>
                                <allowWildcards>false</allowWildcards>
                                <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences>
                                <ignoreComments>false</ignoreComments>
                            </con:configuration>
                        </con:assertion>
                        <con:credentials>
                            <con:authType>Global HTTP Settings</con:authType>
                        </con:credentials>
                        <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                        <con:jmsPropertyConfig/>
                        <con:parameters>
                            <con:entry key="v" value="1"/>
                            <con:entry key="q" value="&quot;unprepared geeks&quot;"/>
                        </con:parameters>
                    </con:restRequest>
                </con:config>
            </con:testStep>
            <con:testStep type="restrequest" name="Top Rated - RSS">
                <con:settings/>
                <con:config service="YouTube" resourcePath="/feeds/api/standardfeeds/top_rated" methodName="Method 1"
                            xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                    <con:restRequest name="Top Rated - RSS" mediaType="application/xml">
                        <con:settings>
                            <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting>
                        </con:settings>
                        <con:endpoint>http://gdata.youtube.com</con:endpoint>
                        <con:request/>
                        <con:assertion type="XPath Match" name="Match content of [image]">
                            <con:configuration>
                                <path>//rss[1]/channel[1]/image[1]</path>
                                <content><![CDATA[<image xmlns:app="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:yt="http://gdata.youtube.com/schemas/2007">
  <url>http://www.youtube.com/img/pic_youtubelogo_123x63.gif</url>
  <title>Top Rated</title>
  <link>http://www.youtube.com/channel/HCWKQJPHqP4J0</link>
</image>]]></content>
                                <allowWildcards>false</allowWildcards>
                                <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences>
                                <ignoreComments>false</ignoreComments>
                            </con:configuration>
                        </con:assertion>
                        <con:credentials>
                            <con:authType>Global HTTP Settings</con:authType>
                        </con:credentials>
                        <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                        <con:jmsPropertyConfig/>
                        <con:parameters>
                            <entry key="alt" value="rss" xmlns="http://eviware.com/soapui/config"/>
                        </con:parameters>
                    </con:restRequest>
                </con:config>
            </con:testStep>
            <con:testStep type="restrequest" name="Most Popular - JSONC">
                <con:settings/>
                <con:config service="YouTube" resourcePath="/feeds/api/standardfeeds/most_popular" methodName="Method 1"
                            xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                    <con:restRequest name="Most Popular - JSONC" mediaType="application/xml" accept="">
                        <con:settings>
                            <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting>
                        </con:settings>
                        <con:endpoint>http://gdata.youtube.com</con:endpoint>
                        <con:request/>
                        <con:assertion type="XPath Match" name="Match content of [accessControl]">
                            <con:configuration>
                                <path>declare namespace
                                    ns1='http://gdata.youtube.com/feeds/api/standardfeeds/most_popular';
                                    //ns1:Response[1]/ns1:data[1]/ns1:items[1]/ns1:e[1]/ns1:accessControl[1]
                                </path>
                                <content><![CDATA[<accessControl xmlns="http://gdata.youtube.com/feeds/api/standardfeeds/most_popular">
  <autoPlay>allowed</autoPlay>
  <comment>allowed</comment>
  <commentVote>allowed</commentVote>
  <embed>allowed</embed>
  <list>allowed</list>
  <rate>allowed</rate>
  <syndicate>allowed</syndicate>
  <videoRespond>moderated</videoRespond>
</accessControl>]]></content>
                                <allowWildcards>false</allowWildcards>
                                <ignoreNamspaceDifferences>false</ignoreNamspaceDifferences>
                                <ignoreComments>false</ignoreComments>
                            </con:configuration>
                        </con:assertion>
                        <con:credentials>
                            <con:authType>Global HTTP Settings</con:authType>
                        </con:credentials>
                        <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                        <con:jmsPropertyConfig/>
                        <con:parameters>
                            <entry key="alt" value="jsonc" xmlns="http://eviware.com/soapui/config"/>
                        </con:parameters>
                    </con:restRequest>
                </con:config>
            </con:testStep>
            <con:testStep type="restrequest" name="Most Viewed - JSON in Script">
                <con:settings/>
                <con:config service="YouTube" resourcePath="/feeds/api/standardfeeds/most_viewed" methodName="Method 1"
                            xsi:type="con:RestRequestStep" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                    <con:restRequest name="Most Viewed - JSON in Script" mediaType="application/xml" accept="">
                        <con:settings>
                            <con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting>
                        </con:settings>
                        <con:endpoint>http://gdata.youtube.com</con:endpoint>
                        <con:request/>
                        <con:assertion type="Simple Contains" name="Contains">
                            <con:configuration>
                                <token>gdata\.io\.handleScriptLoaded(.*);</token>
                                <ignoreCase>false</ignoreCase>
                                <useRegEx>true</useRegEx>
                            </con:configuration>
                        </con:assertion>
                        <con:credentials>
                            <con:authType>Global HTTP Settings</con:authType>
                        </con:credentials>
                        <con:jmsConfig JMSDeliveryMode="PERSISTENT"/>
                        <con:jmsPropertyConfig/>
                        <con:parameters>
                            <entry key="alt" value="json-in-script" xmlns="http://eviware.com/soapui/config"/>
                        </con:parameters>
                    </con:restRequest>
                </con:config>
            </con:testStep>
            <con:properties/>
            <con:reportParameters/>
        </con:testCase>
        <con:properties/>
        <con:reportParameters/>
    </con:testSuite>
    <con:requirements/>
    <con:properties/>
    <con:wssContainer/>
    <con:databaseConnectionContainer/>
    <con:reporting>
        <con:xmlTemplates/>
        <con:parameters/>
    </con:reporting>
    <con:sensitiveInformation/>
</con:soapui-project>