diff --git a/easy-session/easy-session-tests.ts b/easy-session/easy-session-tests.ts
new file mode 100644
index 0000000000..2053b634c3
--- /dev/null
+++ b/easy-session/easy-session-tests.ts
@@ -0,0 +1,63 @@
+///
+///
+///
+
+import express = require('express');
+import session = require('express-session');
+import cookieParser = require('cookie-parser');
+import easySession = require('easy-session'); // Require the module : line 1
+
+var app = express();
+
+app.use(cookieParser('secreet'));
+app.use(session({
+ secret: 'keyboard cat',
+ resave: false,
+ saveUninitialized: true
+}));
+app.use(easySession.main(session));
+
+app.get('/login', function (req, res, next) {
+ req.session.login('user', {email: 'email'}, function (err) {
+ if(err) {
+ res.send(500);
+ return;
+ }
+ res.send(200);
+ });
+});
+
+app.post('/logout', function (req, res, next) {
+ req.session.logout(function (err) {
+ if(err) {
+ res.send(500);
+ return;
+ }
+ res.send(200);
+ });
+});
+
+app.get('/isloggedin', function (req, res, next) {
+ res.send(req.session.isLoggedIn('user'));
+});
+
+app.get('/isfresh', function (req, res, next) {
+ res.send(req.session.isFresh());
+});
+
+app.get('/hasrole', function (req, res, next) {
+ res.send(req.session.hasRole('user'));
+});
+
+app.post('/setrole', function (req, res, next) {
+ req.session.setRole(req.query.role);
+ res.send(200);
+});
+
+app.get('/getrole', function (req, res, next) {
+ res.send(req.session.getRole());
+});
+
+app.use(easySession.isLoggedIn());
+app.use(easySession.isFresh());
+app.use(easySession.checkRole('user'));
\ No newline at end of file
diff --git a/easy-session/easy-session.d.ts b/easy-session/easy-session.d.ts
new file mode 100644
index 0000000000..3be11d2eaf
--- /dev/null
+++ b/easy-session/easy-session.d.ts
@@ -0,0 +1,41 @@
+// Type definitions for easy-session
+// Project: https://github.com/DeadAlready/node-easy-session
+// Definitions by: Karl Düüna
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module Express {
+ interface ErrorCallback {
+ (err?: any): void;
+ }
+ export interface Session {
+ login(callback: Function);
+ login(extend: Object, callback: ErrorCallback);
+ login(role: string, callback: ErrorCallback);
+ login(role: string, extend: Object, callback: ErrorCallback);
+ logout(callback: ErrorCallback): void;
+ isLoggedIn(role?: string): boolean;
+ isGuest(): boolean;
+ isFresh(): boolean;
+ setRole(role: string): Session;
+ getRole(): string;
+ hasRole(role: string): boolean;
+ }
+}
+
+declare module "easy-session" {
+ import express = require('express');
+
+ interface SessionOptions {
+ ipCheck?: boolean;
+ uaCheck?: boolean;
+ freshTimeout?: number;
+ maxFreshTimeout?: number;
+ }
+
+ export function main(session: any, options?: SessionOptions): express.RequestHandler;
+ export function isLoggedIn(errorCallback?: Function): express.RequestHandler;
+ export function isFresh(errorCallback?: Function): express.RequestHandler;
+ export function checkRole(role: string, errorCallback?: Function): express.RequestHandler;
+}
\ No newline at end of file