Skip to content

Commit 6c501cc

Browse files
committed
Fixes to ensure testing works again
Added LDIF Import testing
1 parent 2ce0ed8 commit 6c501cc

File tree

6 files changed

+167
-50
lines changed

6 files changed

+167
-50
lines changed

.env.testing

Lines changed: 5 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,17 @@
11
APP_NAME=Laravel
2-
APP_ENV=dev
3-
APP_KEY=base64:KvIecx8zoy6RjcbJM8s98ZKs9IDGUHFVqBRn3Awfmso=
2+
APP_ENV=local
3+
APP_KEY=
44
APP_DEBUG=true
55
APP_URL=http://localhost
66

7-
LOG_CHANNEL=stack
7+
LOG_CHANNEL=stderr
88

9-
DB_CONNECTION=mysql
10-
DB_HOST=127.0.0.1
11-
DB_PORT=3306
12-
DB_DATABASE=homestead
13-
DB_USERNAME=homestead
14-
DB_PASSWORD=secret
15-
16-
BROADCAST_DRIVER=log
17-
CACHE_DRIVER=file
9+
CACHE_DRIVER=array
1810
QUEUE_CONNECTION=sync
1911
SESSION_DRIVER=file
2012
SESSION_LIFETIME=120
2113

22-
REDIS_HOST=127.0.0.1
23-
REDIS_PASSWORD=null
24-
REDIS_PORT=6379
25-
26-
MAIL_DRIVER=smtp
27-
MAIL_HOST=smtp.mailtrap.io
28-
MAIL_PORT=2525
29-
MAIL_USERNAME=null
30-
MAIL_PASSWORD=null
31-
MAIL_ENCRYPTION=null
32-
33-
AWS_ACCESS_KEY_ID=
34-
AWS_SECRET_ACCESS_KEY=
35-
AWS_DEFAULT_REGION=us-east-1
36-
AWS_BUCKET=
37-
38-
PUSHER_APP_ID=
39-
PUSHER_APP_KEY=
40-
PUSHER_APP_SECRET=
41-
PUSHER_APP_CLUSTER=mt1
42-
43-
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
44-
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
45-
46-
LDAP_HOST=test_ldap
47-
LDAP_PORT=389
14+
LDAP_HOST=openldap
4815
LDAP_BASE_DN="dc=Test"
4916
LDAP_USERNAME="cn=admin,dc=Test"
5017
LDAP_PASSWORD="test"

tests/Feature/GetBaseDNTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,6 @@ public function testBaseDnExists()
2020

2121
$this->assertIsObject($o);
2222
$this->assertCount(6,$o->toArray());
23-
$this->assertEquals('dc=Test',$o->first()->getDn());
23+
$this->assertEquals('c=AU',$o->first()->getDn());
2424
}
25-
}
25+
}

tests/Feature/ImportTest.php

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
namespace Tests\Feature;
4+
5+
use Illuminate\Http\UploadedFile;
6+
use Illuminate\Support\Facades\Auth;
7+
use Illuminate\Support\Facades\Crypt;
8+
use Tests\TestCase;
9+
10+
class ImportTest extends TestCase
11+
{
12+
public function testLDIF_Import()
13+
{
14+
$dn = 'cn=Bart Simpson,ou=People,o=Simpsons';
15+
$import_file = __DIR__.'/data/ldif-import.ldif';
16+
17+
$this->assertTrue($this->login());
18+
$this->assertTrue(Auth::check());
19+
$this->actingAs(Auth::user());
20+
$this->assertFalse(config('ldap.cache.enabled'));
21+
22+
// Check that it exists
23+
$this->assertEquals($dn,$x=config('server')->fetch($dn));
24+
$this->assertTrue($x->exists);
25+
26+
// Delete the entry
27+
$x->delete();
28+
$this->assertEquals(NULL,config('server')->fetch($dn));
29+
30+
$file = new UploadedFile($import_file,'ldif-import.ldif',null,null,true);
31+
32+
$response = $this
33+
->actingAs(Auth::user())
34+
->from('/import')
35+
->post('/import/process/ldif',[
36+
'_token' => csrf_token(),
37+
'key'=>Crypt::encryptString('*import|_NOP'),
38+
'file' => $file,
39+
]);
40+
41+
//$response->dump();
42+
$response->assertSuccessful();
43+
44+
// Check that it hsa been created
45+
$this->assertEquals($dn,$x=config('server')->fetch($dn));
46+
$this->assertTrue($x->exists);
47+
}
48+
}

tests/Feature/LoginTest.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
namespace Tests\Feature;
44

5-
use LdapRecord\Container;
6-
use LdapRecord\Testing\DirectoryFake;
5+
use Illuminate\Support\Facades\Auth;
6+
use Illuminate\Support\Facades\Session;
77
use Tests\TestCase;
88

99
class LoginTest extends TestCase
@@ -18,12 +18,10 @@ public function test_user_can_view_a_login_form()
1818

1919
public function test_admin_dn_login()
2020
{
21-
$username = 'cn=Admin,dc=Test';
22-
$password = 'test';
21+
$this->assertTrue($this->login());
22+
$this->assertTrue(Auth::check());
2323

24-
//DirectoryFake::setup();
25-
26-
$connection = Container::getDefaultConnection();
27-
$this->assertTrue($connection->auth()->attempt($username,$password));
24+
$this->assertTrue(Session::has('username_encrypt'));
25+
$this->assertTrue(Session::has('password_encrypt'));
2826
}
29-
}
27+
}
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# LDIF Export for cn=Bart Simpson,ou=People,o=Simpsons
2+
# Server: LDAP Server (ldap://ldap:389)
3+
# Total Entries: 1
4+
#
5+
# Generated by PLA (http://localhost) on January 12, 2024 12:39 pm
6+
# Exported by Anonymous
7+
# Version: v2.0.0-dev-00000000
8+
9+
version: 1
10+
# Entry 1: cn=Bart Simpson,ou=People,o=Simpsons
11+
dn: cn=Bart Simpson,ou=People,o=Simpsons
12+
audio: test
13+
cn: Bart Simpson
14+
gidNumber: 1000
15+
givenName: Bart
16+
homeDirectory: /home/users/simpsons/bart
17+
jpegPhoto:: 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
71+
l: Springfield
72+
73+
o: The Simpsons
74+
objectClass: inetOrgPerson
75+
objectClass: posixAccount
76+
objectClass: top
77+
objectClass: shadowAccount
78+
sn: Simpson
79+
st: 742 Evergreen Terrace
80+
telephoneNumber: +1 939 555 3126
81+
uid: bart
82+
uidNumber: 1000
83+
userPassword: eatmyshorts

tests/TestCase.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,20 @@
33
namespace Tests;
44

55
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
6+
use Illuminate\Support\Facades\Auth;
7+
use Illuminate\Support\Facades\Config;
8+
9+
use App\Classes\LDAP\Server;
610

711
abstract class TestCase extends BaseTestCase
812
{
9-
use CreatesApplication;
13+
use CreatesApplication;
14+
15+
protected function setUp(): void
16+
{
17+
parent::setUp();
18+
Config::set('server',new Server());
19+
}
1020

1121
/**
1222
* Hack to get testing working
@@ -19,4 +29,15 @@ protected function tearDown(): void
1929
app()->instance('config', $config);
2030
app()->instance('events', $events);
2131
}
32+
33+
protected function login(): bool
34+
{
35+
//$username = 'cn=AdminUser,dc=Test';
36+
$username = 'admin';
37+
$password = 'password';
38+
39+
$this->post('/login',['uid'=>$username,'password'=>$password]);
40+
41+
return Auth::check() && (Auth::user()->getDN() === 'cn=AdminUser,dc=Test');
42+
}
2243
}

0 commit comments

Comments
 (0)