Skip to content

Commit fb4c2cc

Browse files
committed
some more tests
1 parent 4c77bda commit fb4c2cc

File tree

6 files changed

+143
-12
lines changed

6 files changed

+143
-12
lines changed

composer.lock

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/WebSession/ClientSide/TestSession.php

Lines changed: 110 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,116 @@
88
class TestSession extends TestBase {
99

1010
function testCreateSession(){
11+
$jsonContent = '{"name":"raaghu","children":[{"name":"shri"},{"name":"di"}],"spouse":{"name":"div"}}';
12+
$setCookieeParams = $this->createSession($jsonContent);
13+
14+
$this->assertTrue(isset($setCookieeParams["PhpPlatformSession"]));
15+
$this->assertEquals("/", $setCookieeParams['path']);
16+
$this->assertTrue($setCookieeParams['httponly']);
17+
}
18+
19+
function testSessionValues(){
20+
21+
$jsonContent = '{"name":"raaghu","children":[{"name":"shri"},{"name":"di"}],"spouse":{"name":"div"}}';
22+
$setCookieeParams = $this->createSession($jsonContent);
23+
24+
// assert session values are stored properly
25+
$sessionCookie = array("name"=>"PhpPlatformSession","value"=>$setCookieeParams["PhpPlatformSession"]);
26+
$this->assertSessionContains($sessionCookie, "name", "raaghu");
27+
$this->assertSessionContains($sessionCookie, "children", '[{"name":"shri"},{"name":"di"}]');
28+
$this->assertSessionContains($sessionCookie, "spouse", '{"name":"div"}');
29+
30+
// assert session values are not accessible outside the session
31+
$sessionCookie["value"] = $sessionCookie["value"]."1";
32+
$this->assertSessionContains($sessionCookie, "name", "");
33+
$this->assertSessionContains($sessionCookie, "children", '');
34+
$this->assertSessionContains($sessionCookie, "spouse", '');
35+
36+
}
37+
38+
function testDeleteSessionValue(){
39+
$jsonContent = '{"name":"raaghu","children":[{"name":"shri"},{"name":"di"}],"spouse":{"name":"div"}}';
40+
$setCookieeParams = $this->createSession($jsonContent);
41+
42+
// assert session values are stored properly
43+
$sessionCookie = array("name"=>"PhpPlatformSession","value"=>$setCookieeParams["PhpPlatformSession"]);
44+
$this->assertSessionContains($sessionCookie, "name", "raaghu");
45+
$this->assertSessionContains($sessionCookie, "children", '[{"name":"shri"},{"name":"di"}]');
46+
$this->assertSessionContains($sessionCookie, "spouse", '{"name":"div"}');
47+
48+
// delete some session values
49+
$client = new Client();
50+
$request = $client->get(APP_DOMAIN.'/'.APP_PATH.'/tests/WebSession/Services/DeleteSessionValue.php?key=name');
51+
$request->addCookie($sessionCookie['name'], $sessionCookie['value']);
52+
$client->send($request);
53+
54+
// assert specified session values are are deleted
55+
$this->assertSessionContains($sessionCookie, "name", "");
56+
$this->assertSessionContains($sessionCookie, "children", '[{"name":"shri"},{"name":"di"}]');
57+
$this->assertSessionContains($sessionCookie, "spouse", '{"name":"div"}');
58+
59+
// delete again some session values
60+
$client = new Client();
61+
$request = $client->get(APP_DOMAIN.'/'.APP_PATH.'/tests/WebSession/Services/DeleteSessionValue.php?key=children');
62+
$request->addCookie($sessionCookie['name'], $sessionCookie['value']);
63+
$client->send($request);
64+
65+
// assert specified session values are are deleted
66+
$this->assertSessionContains($sessionCookie, "name", "");
67+
$this->assertSessionContains($sessionCookie, "children", '');
68+
$this->assertSessionContains($sessionCookie, "spouse", '{"name":"div"}');
69+
70+
// delete again again some session values
71+
$client = new Client();
72+
$request = $client->get(APP_DOMAIN.'/'.APP_PATH.'/tests/WebSession/Services/DeleteSessionValue.php?key=spouse');
73+
$request->addCookie($sessionCookie['name'], $sessionCookie['value']);
74+
$client->send($request);
75+
76+
// assert specified session values are are deleted
77+
$this->assertSessionContains($sessionCookie, "name", "");
78+
$this->assertSessionContains($sessionCookie, "children", '');
79+
$this->assertSessionContains($sessionCookie, "spouse", '');
80+
81+
}
82+
83+
function testClearSession(){
84+
$jsonContent = '{"name":"raaghu","children":[{"name":"shri"},{"name":"di"}],"spouse":{"name":"div"}}';
85+
$setCookieeParams = $this->createSession($jsonContent);
86+
87+
// assert session values are stored properly
88+
$sessionCookie = array("name"=>"PhpPlatformSession","value"=>$setCookieeParams["PhpPlatformSession"]);
89+
$this->assertSessionContains($sessionCookie, "name", "raaghu");
90+
$this->assertSessionContains($sessionCookie, "children", '[{"name":"shri"},{"name":"di"}]');
91+
$this->assertSessionContains($sessionCookie, "spouse", '{"name":"div"}');
92+
93+
// clear session
94+
$client = new Client();
95+
$request = $client->get(APP_DOMAIN.'/'.APP_PATH.'/tests/WebSession/Services/ClearSession.php');
96+
$request->addCookie($sessionCookie['name'], $sessionCookie['value']);
97+
$response = $client->send($request);
98+
99+
// assert session cookie value is not changed after clear
100+
$setCookieeParams = $this->parseSetCookieParams($response->getSetCookie());
101+
$this->assertEquals($sessionCookie['value'], $setCookieeParams[$sessionCookie['name']]);
102+
103+
// assert all session values are are deleted
104+
$this->assertSessionContains($sessionCookie, "name", "");
105+
$this->assertSessionContains($sessionCookie, "children", '');
106+
$this->assertSessionContains($sessionCookie, "spouse", '');
107+
108+
}
109+
110+
private function createSession($jsonContent){
11111
$client = new Client();
12-
$jsonContent = '{"name":"raaghu","children":[{"name":"shri"},{"name":"di"}]}';
13112
$request = $client->post(APP_DOMAIN.'/'.APP_PATH.'/tests/WebSession/Services/CreateSession.php',array("Content-Type"=>"application/json","Content-Length"=>strlen($jsonContent)),$jsonContent);
14113
$response = $client->send($request);
15114

16115
$this->assertEquals(200, $response->getStatusCode());
116+
17117
$setCookie = $response->getSetCookie();
18118
$setCookieeParams = $this->parseSetCookieParams($setCookie);
19119

20-
$this->assertTrue(isset($setCookieeParams["PhpPlatformSession"]));
21-
$this->assertEquals("/", $setCookieeParams['path']);
22-
$this->assertTrue($setCookieeParams['httponly']);
23-
120+
return $setCookieeParams;
24121
}
25122

26123
private function parseSetCookieParams($setCookie){
@@ -36,4 +133,12 @@ private function parseSetCookieParams($setCookie){
36133
return $paramsArray;
37134
}
38135

136+
private function assertSessionContains($sessionCookie,$key,$value){
137+
$client = new Client();
138+
$request = $client->get(APP_DOMAIN.'/'.APP_PATH.'/tests/WebSession/Services/ReadSession.php?key='.$key);
139+
$request->addCookie($sessionCookie['name'], $sessionCookie['value']);
140+
$response = $client->send($request);
141+
$this->assertEquals($value, $response->getBody(true));
142+
}
143+
39144
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
use PhpPlatform\Session\Factory;
4+
5+
include_once dirname(__FILE__).'/../../../index.php';
6+
7+
$session = Factory::getSession();
8+
9+
$session->clear();

tests/WebSession/Services/CreateSession.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
$session = Factory::getSession();
88

99
$input = file_get_contents('php://input');
10-
$input = json_decode($input);
10+
$input = json_decode($input,true);
1111

1212
foreach ($input as $key=>$value){
1313
$session->set($key, $value);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
use PhpPlatform\Session\Factory;
4+
5+
include_once dirname(__FILE__).'/../../../index.php';
6+
7+
$session = Factory::getSession();
8+
9+
$session->set($_REQUEST['key'], null);

tests/WebSession/Services/ReadSession.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,12 @@
55
include_once dirname(__FILE__).'/../../../index.php';
66

77
$session = Factory::getSession();
8-
echo $session->get($_REQUEST['key']);
8+
9+
$sessionValue = $session->get($_REQUEST['key']);
10+
11+
if(is_array($sessionValue)){
12+
echo json_encode($sessionValue);
13+
}
14+
if(is_string($sessionValue)){
15+
echo $sessionValue;
16+
}

0 commit comments

Comments
 (0)