TShock/UnitTests/RestApiTests.webtest
2012-02-21 15:56:34 +00:00

1542 lines
No EOL
138 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<WebTest Name="RestApiTests" Id="6d0c3c52-fb1c-424e-84d8-df5df430464c" Owner="" Priority="2147483647" Enabled="True" CssProjectStructure="" CssIteration="" Timeout="0" WorkItemIds="" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" Description="" CredentialUserName="" CredentialPassword="" PreAuthenticate="True" Proxy="" StopOnError="False" RecordedResultFile="WebTest1.e80f90a7-eb6d-4ccf-ab26-979d98e4bca2.rec.webtestresult">
<Items>
<Condition UniqueStringId="dab1e0f9-6b8b-4f86-a1c3-3b178a4d834e">
<ConditionalRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.StringComparisonRule, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="String Comparison" Description="The condition is met when the provided string matches the content of the provided context parameter.">
<RuleParameters>
<RuleParameter Name="ContextParameterName" Value="servertests" />
<RuleParameter Name="ComparisonOperator" Value="Equals" />
<RuleParameter Name="Value" Value="true" />
<RuleParameter Name="IgnoreCase" Value="True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ConditionalRule>
<Then>
<Items>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/status" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="name,playercount,port,players" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/server/status" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="name,playercount,port,maxplayers,world" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/server/status" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="name,playercount,port,maxplayers,world,players" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="players" Value="true" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/server/status" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="name,playercount,port,maxplayers,world,players,rules" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="players" Value="true" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="rules" Value="true" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/server/broadcast" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateStatus, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Status" Description="Checks to see the that the JSON response has the specified status response" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/server/broadcast" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateStatus, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Status" Description="Checks to see the that the JSON response has the specified status response" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="msg" Value="test broadcast" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/server/rawcmd" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateStatus, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Status" Description="Checks to see the that the JSON response has the specified status response" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/server/rawcmd" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateStatus, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Status" Description="Checks to see the that the JSON response has the specified status response" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="cmd" Value="/help" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/tokentest" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateStatus, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Status" Description="Checks to see the that the JSON response has the specified status response" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="401" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/tokentest" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateProperty, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Property" Description="Checks to see the that the JSON response contains the specified property and is set to the specified value" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Token is valid and was passed through correctly" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/server/off" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateStatus, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Status" Description="Checks to see the that the JSON response has the specified status response" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/server/off" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateRegexpProperty, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Regexp Property" Description="Checks to see the that the JSON response contains the specified property and is matches the specified regexp" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="The server is shutting down" />
<RuleParameter Name="JSonStatus" Value="200" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="confirm" Value="{{confirmstop}}" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
</Items>
</Then>
<Else />
</Condition>
<Condition UniqueStringId="354c70fc-5606-47c7-b611-ecef47f0770c">
<ConditionalRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.StringComparisonRule, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="String Comparison" Description="The condition is met when the provided string matches the content of the provided context parameter.">
<RuleParameters>
<RuleParameter Name="ContextParameterName" Value="usertests" />
<RuleParameter Name="ComparisonOperator" Value="Equals" />
<RuleParameter Name="Value" Value="true" />
<RuleParameter Name="IgnoreCase" Value="True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ConditionalRule>
<Then>
<Items>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/activelist" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="activeusers" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/list" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="users" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="user" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="group" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="password" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="guest" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateStatus, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Status" Description="Checks to see the that the JSON response has the specified status response" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="guest" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="password" Value="pwdtest" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="User 'wibble' already exists" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="guest" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="password" Value="pwdtest" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="user" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="User name 'notauser' doesn't exist" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="notauser" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateProperty, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Property" Description="Checks to see the that the JSON response contains the specified property and is set to the specified value" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="group" />
<RuleParameter Name="PropertyValue" Value="guest" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="id" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/update" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="user" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/update" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="User name 'notauser' doesn't exist" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="notauser" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/update" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="No group or password were passed" />
<RuleParameter Name="UseRegularExpression" Value="True" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/update" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="password-response" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="password" Value="newpass" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/update" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="password-response,group-response" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="password" Value="newpass" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="admin" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="user" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="User name 'notauser' doesn't exist" />
<RuleParameter Name="UseRegularExpression" Value="True" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="notauser" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/users/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="User deleted successfully" />
<RuleParameter Name="UseRegularExpression" Value="True" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
</Items>
</Then>
<Else />
</Condition>
<Condition UniqueStringId="12a1bb49-885b-402d-9adc-270e7c148507">
<ConditionalRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.StringComparisonRule, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="String Comparison" Description="The condition is met when the provided string matches the content of the provided context parameter.">
<RuleParameters>
<RuleParameter Name="ContextParameterName" Value="bantests" />
<RuleParameter Name="ComparisonOperator" Value="Equals" />
<RuleParameter Name="Value" Value="true" />
<RuleParameter Name="IgnoreCase" Value="True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ConditionalRule>
<Then>
<Items>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/list" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="bans" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="user" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/bans/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="ip, name" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/bans/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Ban created successfully" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="name" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="reason" Value="test name ban" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/bans/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Ban created successfully" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="ip" Value="10.10.1.1" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="reason" Value="test ip ban" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="ban" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="type" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="ban" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="ip,name,reason" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateProperty, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Property" Description="Checks to see the that the JSON response contains the specified property and is set to the specified value" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="name" />
<RuleParameter Name="PropertyValue" Value="wibble" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="ban" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="type" Value="name" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="ip,name,reason" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateProperty, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Property" Description="Checks to see the that the JSON response contains the specified property and is set to the specified value" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="ip" />
<RuleParameter Name="PropertyValue" Value="10.10.1.1" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="ban" Value="10.10.1.1" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="type" Value="ip" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="ban" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="type" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="ban" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Ban deleted successfully" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="ban" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="type" Value="name" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Ban name 'wibble' doesn't exist" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="ban" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="type" Value="name" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Ban deleted successfully" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="ban" Value="10.10.1.1" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="type" Value="ip" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/bans/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Ban ip '10.10.1.1' doesn't exist" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="ban" Value="10.10.1.1" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="type" Value="ip" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
</Items>
</Then>
<Else />
</Condition>
<Condition UniqueStringId="e9b0f7a7-e516-4625-99d9-e969b71aac48">
<ConditionalRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.StringComparisonRule, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="String Comparison" Description="The condition is met when the provided string matches the content of the provided context parameter.">
<RuleParameters>
<RuleParameter Name="ContextParameterName" Value="worldtests" />
<RuleParameter Name="ComparisonOperator" Value="Equals" />
<RuleParameter Name="Value" Value="true" />
<RuleParameter Name="IgnoreCase" Value="True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ConditionalRule>
<Then>
<Items>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/world/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="name,size,time,daytime,bloodmoon,invasionsize" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/world/meteor" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Meteor has been spawned" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/world/bloodmoon/invalid" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateInvalidParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Invalid Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="bloodmoon" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/world/bloodmoon/true" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Blood Moon has been set to True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/world/bloodmoon/false" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Blood Moon has been set to False" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/world/save" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="World saved" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/world/autosave/state/invalid" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateInvalidParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Invalid Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="state" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/world/autosave/state/false" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="AutoSave has been set to False" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/world/autosave/state/true" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="AutoSave has been set to True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/world/butcher" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateInvalidParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Invalid Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="killfriendly" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/world/butcher" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateInvalidParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Invalid Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="killfriendly" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="killfriendly" Value="invalid" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/world/butcher" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="\d+ NPCs have been killed" />
<RuleParameter Name="UseRegularExpression" Value="True" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="killfriendly" Value="false" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/world/butcher" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="\d+ NPCs have been killed" />
<RuleParameter Name="UseRegularExpression" Value="True" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="killfriendly" Value="true" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
</Items>
</Then>
<Else />
</Condition>
<Condition UniqueStringId="bb989fb4-3da1-4821-a6ee-3d3482212055">
<ConditionalRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.StringComparisonRule, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="String Comparison" Description="The condition is met when the provided string matches the content of the provided context parameter.">
<RuleParameters>
<RuleParameter Name="ContextParameterName" Value="playertests" />
<RuleParameter Name="ComparisonOperator" Value="Equals" />
<RuleParameter Name="Value" Value="true" />
<RuleParameter Name="IgnoreCase" Value="True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ConditionalRule>
<Then>
<Items>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/lists/players" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="players" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/list" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="players" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="player" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Player notaplayer was not found" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="notaplayer" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="nickname,username,ip,group,position,inventory,buffs" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/mute" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="player" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/mute" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Player notaplayer was not found" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="notaplayer" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/mute" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Player wibble was muted" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/unmute" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="player" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/unmute" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Player notaplayer was not found" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="notaplayer" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/unmute" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Player wibble was unmuted" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/kill" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="player" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/kill" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Player notaplayer was not found" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="notaplayer" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/kill" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Player wibble was killed" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/kick" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="player" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/kick" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Player notaplayer was not found" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="notaplayer" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Condition UniqueStringId="c361e2b1-a227-42c1-89ac-cb5bf7ab0f7e">
<ConditionalRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.StringComparisonRule, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="String Comparison" Description="The condition is met when the provided string matches the content of the provided context parameter.">
<RuleParameters>
<RuleParameter Name="ContextParameterName" Value="playerkicktest" />
<RuleParameter Name="ComparisonOperator" Value="Equals" />
<RuleParameter Name="Value" Value="true" />
<RuleParameter Name="IgnoreCase" Value="True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ConditionalRule>
<Then>
<Items>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/kick" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Player wibble was kicked" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="reason" Value="Kick testing" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
</Items>
</Then>
<Else />
</Condition>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/ban" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="player" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/ban" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Player notaplayer was not found" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="notaplayer" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Condition UniqueStringId="0b27150b-0e3e-4675-abc8-b60a2e378e4b">
<ConditionalRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.StringComparisonRule, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="String Comparison" Description="The condition is met when the provided string matches the content of the provided context parameter.">
<RuleParameters>
<RuleParameter Name="ContextParameterName" Value="playerbantest" />
<RuleParameter Name="ComparisonOperator" Value="Equals" />
<RuleParameter Name="Value" Value="true" />
<RuleParameter Name="IgnoreCase" Value="True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ConditionalRule>
<Then>
<Items>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/players/ban" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Player wibble was banned" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="player" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="reason" Value="Ban testing" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
</Items>
</Then>
<Else />
</Condition>
</Items>
</Then>
<Else />
</Condition>
<Condition UniqueStringId="28654363-08cc-4c10-989d-bf06e9c4a12e">
<ConditionalRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.StringComparisonRule, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="String Comparison" Description="The condition is met when the provided string matches the content of the provided context parameter.">
<RuleParameters>
<RuleParameter Name="ContextParameterName" Value="grouptests" />
<RuleParameter Name="ComparisonOperator" Value="Equals" />
<RuleParameter Name="Value" Value="true" />
<RuleParameter Name="IgnoreCase" Value="True" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ConditionalRule>
<Then>
<Items>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/list" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="groups" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="group" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Group 'notagroup' doesn't exist" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="notagroup" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/read" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonHasProperties, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Has Properties" Description="Checks to see the that the JSON response contains the specified properties (comma seperated)" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyNames" Value="name,parent,chatcolor,permissions,negatedpermissions" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="admin" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="group" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Invalid parent notagroup for group wibble" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="parent" Value="notagroup" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/create" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Group 'wibble' created successfully" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="chatcolor" Value="c0c0c0" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="parent" Value="guest" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="permissions" Value="kick,!ban" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/update" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="group" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/update" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Invalid parent notagroup for group wibble" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="parent" Value="notagroup" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/update" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Group 'wibble' updated successfully" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="chatcolor" Value="a0a0a0" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="parent" Value="guest" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="permissions" Value="kick,!ban,!unban" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateMissingParameter, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Missing Parameter" Description="Checks to see the that the JSON response indicates a missing or invalid parameter" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyValue" Value="group" />
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateError, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Error" Description="Checks to see the that the JSON response contains the specified error" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="JSonStatus" Value="400" />
<RuleParameter Name="PropertyName" Value="error" />
<RuleParameter Name="PropertyValue" Value="Group 'notagroup' doesn't exist" />
<RuleParameter Name="UseRegularExpression" Value="False" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="notagroup" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
<Request Method="GET" Version="1.1" Url="http://{{host}}:{{port}}/v2/groups/destroy" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="200" ExpectedResponseUrl="" ReportingName="">
<ValidationRules>
<ValidationRule Classname="TshockRestTestPlugin.JsonValidateResponse, TshockRestTestPlugin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="JSON Response" Description="Checks to see the that the JSON response contains the specified message" Level="High" ExectuionOrder="BeforeDependents">
<RuleParameters>
<RuleParameter Name="PropertyName" Value="response" />
<RuleParameter Name="PropertyValue" Value="Group 'wibble' deleted successfully" />
<RuleParameter Name="UseRegularExpression" Value="False" />
<RuleParameter Name="JSonStatus" Value="200" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
<QueryStringParameters>
<QueryStringParameter Name="token" Value="{{token}}" RecordedValue="" CorrelationBinding="" UrlEncode="False" UseToGroupResults="False" />
<QueryStringParameter Name="group" Value="wibble" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="chatcolor" Value="c0c0c0" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="parent" Value="guest" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
<QueryStringParameter Name="permissions" Value="kick,!ban" RecordedValue="" CorrelationBinding="" UrlEncode="True" UseToGroupResults="False" />
</QueryStringParameters>
</Request>
</Items>
</Then>
<Else />
</Condition>
</Items>
<ContextParameters>
<ContextParameter Name="token" Value="LKcFDKEIv3" />
<ContextParameter Name="host" Value="85.236.101.111" />
<ContextParameter Name="port" Value="7997" />
<ContextParameter Name="confirmstop" Value="false" />
<ContextParameter Name="servertests" Value="false" />
<ContextParameter Name="usertests" Value="false" />
<ContextParameter Name="bantests" Value="false" />
<ContextParameter Name="worldtests" Value="false" />
<ContextParameter Name="playertests" Value="false" />
<ContextParameter Name="playerkicktest" Value="false" />
<ContextParameter Name="playerbantest" Value="false" />
<ContextParameter Name="grouptests" Value="false" />
</ContextParameters>
<ValidationRules>
<ValidationRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.ValidateResponseUrl, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="Response URL" Description="Validates that the response URL after redirects are followed is the same as the recorded response URL. QueryString parameters are ignored." Level="Low" ExectuionOrder="BeforeDependents" />
<ValidationRule Classname="Microsoft.VisualStudio.TestTools.WebTesting.Rules.ValidationRuleResponseTimeGoal, Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" DisplayName="Response Time Goal" Description="Validates that the response time for the request is less than or equal to the response time goal as specified on the request. Response time goals of zero will be ignored." Level="Low" ExectuionOrder="AfterDependents">
<RuleParameters>
<RuleParameter Name="Tolerance" Value="0" />
</RuleParameters>
</ValidationRule>
</ValidationRules>
</WebTest>