Browse Source

Updated unit test for ASP.Net

master
Artyom Beilis 6 years ago
parent
commit
3b0d82c800
9 changed files with 151 additions and 33 deletions
  1. +2
    -2
      contrib/integration/session/asp.net/API.cs
  2. +0
    -0
      contrib/integration/session/asp.net/test/bin/.gitignore
  3. +0
    -7
      contrib/integration/session/asp.net/test/example.aspx
  4. +0
    -23
      contrib/integration/session/asp.net/test/example.aspx.cs
  5. +1
    -0
      contrib/integration/session/asp.net/test/html
  6. +1
    -1
      contrib/integration/session/asp.net/test/run.sh
  7. +2
    -0
      contrib/integration/session/asp.net/test/test.aspx
  8. +144
    -0
      contrib/integration/session/asp.net/test/test.aspx.cs
  9. +1
    -0
      contrib/integration/session/wwwtest/index.html

+ 2
- 2
contrib/integration/session/asp.net/API.cs View File

@@ -15,7 +15,7 @@ internal class API {
public const int ERROR_LOGIC=5;
public const int ERROR_ALLOC=6;

public const string library = "cppcms";
public const string library = "cppcms";

[DllImport(library,EntryPoint="cppcms_capi_error")]
public static extern int error(IntPtr obj);
@@ -125,7 +125,7 @@ internal class API {
[DllImport(library,EntryPoint="cppcms_capi_session_set_session_cookie")]
public static extern IntPtr session_set_session_cookie(IntPtr session,byte[] val);
[DllImport(library,EntryPoint="cppcms_capi_session_add_cookie_name")]
[DllImport(library,EntryPoint="cppcms_capi_session_add_cookie_name")]
public static extern IntPtr session_add_cookie_name(IntPtr session,byte[] val);

[DllImport(library,EntryPoint="cppcms_capi_session_load")]


+ 0
- 0
contrib/integration/session/asp.net/test/bin/.gitignore View File


+ 0
- 7
contrib/integration/session/asp.net/test/example.aspx View File

@@ -1,7 +0,0 @@
<%@ Page Language="C#" Inherits="Example" CodeFile="example.aspx.cs" %>

<html>
<body>
<p>Session Counter = <%=counter%></p>
</body>
</html>

+ 0
- 23
contrib/integration/session/asp.net/test/example.aspx.cs View File

@@ -1,23 +0,0 @@
using System;
using System.Web.UI;
using CppCMS.Session;
public partial class Example : Page {
static SessionPool pool;
static Example() {
pool = SessionPool.FromConfig("../../reference/config.js");
}
protected string counter = null;
protected void Page_Load(object sender,EventArgs e)
{
using(Session s = pool.Session()) {
s.Load(Request);
string v="0";
if(s.IsSet("x"))
v=s["x"];
v = (int.Parse(v) + 1).ToString();
s["x"]=v;
s.Save(Response);
counter = v;
}
}
}

+ 1
- 0
contrib/integration/session/asp.net/test/html View File

@@ -0,0 +1 @@
../../wwwtest/

+ 1
- 1
contrib/integration/session/asp.net/test/run.sh View File

@@ -1,4 +1,4 @@
#!/bin/bash
rm -f bin/cppcms.dll
cp ../cppcms.dll bin/
xsp --root=./
xsp --port 8000 --root ./

+ 2
- 0
contrib/integration/session/asp.net/test/test.aspx View File

@@ -0,0 +1,2 @@
<%@ Page Language="C#" Inherits="UnitTest" CodeFile="test.aspx.cs" %>
<%=message %>

+ 144
- 0
contrib/integration/session/asp.net/test/test.aspx.cs View File

@@ -0,0 +1,144 @@
using System;
using System.Text;
using System.Web.UI;
using CppCMS.Session;

public partial class UnitTest : Page {
static SessionPool pool;
static UnitTest() {
pool = SessionPool.FromConfig("../../reference/config.js");
}
protected string message = null;

public static string toHex(byte[] data)
{
string parts="0123456789abcdef";
StringBuilder bld = new StringBuilder();
for(int i=0;i<data.Length;i++) {
int v=data[i] & 0xFF;
bld.Append(parts[v >> 4]);
bld.Append(parts[v & 0xF]);
}
return bld.ToString();
}
static int c2v(char c)
{
if('0' <=c && c<='9')
return (int)c-'0';
if('a' <=c && c<='f')
return (int)(c)-(int)('a')+10;
if('A' <=c && c<='F')
return (int)(c)-(int)('A')+10;
return 0;
}
public static byte[] fromHex(string val)
{
byte[] values = new byte[val.Length / 2];
for(int i=0;i<values.Length;i++) {
int v = c2v(val[2*i]) * 16 + c2v(val[2*i+1]);
values[i] = (byte)(v & 0xFF);
}
return values;
}

static string int2str(int v)
{
return v.ToString();
}


protected void Page_Load(object sender,EventArgs e)
{
using(Session session = pool.Session()) {
session.Load(Request);
StringBuilder final_result = new StringBuilder();
for(int i=1;;i++) {
string id = "_" + int2str(i);
string op = Request.QueryString["op" + id];
if(op == null)
break;
string key = Request.QueryString["key" + id];
string val = Request.QueryString["value" + id];
string result = "ok";

switch(op) {
case "is_set":
result = session.IsSet(key) ? "yes" : "no";
break;
case "erase":
session.Erase(key);
break;
case "clear":
session.Clear();
break;
case "is_exposed":
result = session.GetExposed(key) ? "yes" : "no";
break;
case "expose":
session.SetExposed(key,Int32.Parse(val)!=0);
break;
case "get":
result = session[key];
break;
case "set":
session[key]=val;
break;
case "get_binary":
result = toHex(session.GetBinary(key));
break;
case "set_binary":
session.SetBinary(key,fromHex(val));
break;
case "get_age":
result = int2str(session.Age);
break;
case "set_age":
session.Age = Int32.Parse(val);
break;
case "default_age":
session.SetDefaultAge();
break;
case "get_expiration":
result = int2str(session.Expiration);
break;
case "set_expiration":
session.Expiration = Int32.Parse(val);
break;
case "default_expiration":
session.SetDefaultExpiration();
break;
case "get_on_server":
result = session.OnServer ? "yes" : "no";
break;
case "set_on_server":
session.OnServer = Int32.Parse(val) != 0;
break;
case "reset_session":
session.ResetSession();
break;
case "csrf_token":
result = "t=" + session.CSRFToken;
break;
case "keys":
result = "";
string[] keys = session.Keys;
for(int j=0;j<keys.Length;j++) {
if(result != "")
result += ",";
result += "[" + keys[j] + "]";
}
break;
default:
result = "invalid op=" + op;
break;
}
final_result.Append(int2str(i) + ":" + result + ";");
}

session.Save(Response);
message = final_result.ToString();
}
}
}

+ 1
- 0
contrib/integration/session/wwwtest/index.html View File

@@ -14,6 +14,7 @@ function get_url()
<option value="/test" selected="selected">CppCMS Reference</option>
<option value="/unit_test.php">PHP</option>
<option value="/jct/test" >Java</option>
<option value="/test.aspx" >ASP.Net</option>
</select>
<button onclick="tester(get_url())">Run Test</button><span id="wait" style="color:green"></span>
<table border='1' width='80%'>


Loading…
Cancel
Save