Skip to content

Commit a73ce52

Browse files
committed
updates adding tests in and updating readme/composer file
1 parent b219d4c commit a73ce52

7 files changed

Lines changed: 1216 additions & 21 deletions

File tree

.github/workflows/tests.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Tests
2+
3+
on:
4+
push:
5+
branches: [ master, main ]
6+
pull_request:
7+
branches: [ master, main ]
8+
9+
jobs:
10+
tests:
11+
runs-on: ubuntu-latest
12+
13+
strategy:
14+
matrix:
15+
php-version: ['8.0', '8.1', '8.2', '8.3']
16+
17+
name: PHP ${{ matrix.php-version }}
18+
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@v4
22+
23+
- name: Setup PHP
24+
uses: shivammathur/setup-php@v2
25+
with:
26+
php-version: ${{ matrix.php-version }}
27+
extensions: curl, mbstring
28+
coverage: xdebug
29+
30+
- name: Install dependencies
31+
run: composer install --prefer-dist --no-progress --no-interaction
32+
33+
- name: Run tests
34+
run: vendor/bin/phpunit --testdox
35+
36+
- name: Run tests with coverage
37+
if: matrix.php-version == '8.2'
38+
run: vendor/bin/phpunit --coverage-clover build/logs/clover.xml
39+
40+
- name: Upload coverage to Codecov
41+
if: matrix.php-version == '8.2'
42+
uses: codecov/codecov-action@v4
43+
with:
44+
file: build/logs/clover.xml
45+
fail_ci_if_error: false

README.md

Lines changed: 56 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,70 @@
1-
# Directadmin Licensing Class
1+
# DirectAdmin Licensing Plugin for MyAdmin
22

3-
Directadmin Licensing Class
3+
[![Tests](https://github.com/detain/myadmin-directadmin-licensing/actions/workflows/tests.yml/badge.svg)](https://github.com/detain/myadmin-directadmin-licensing/actions/workflows/tests.yml)
4+
[![Codecov](https://codecov.io/gh/detain/myadmin-directadmin-licensing/branch/master/graph/badge.svg)](https://codecov.io/gh/detain/myadmin-directadmin-licensing)
5+
[![Latest Stable Version](https://poser.pugx.org/detain/myadmin-directadmin-licensing/version)](https://packagist.org/packages/detain/myadmin-directadmin-licensing)
6+
[![Total Downloads](https://poser.pugx.org/detain/myadmin-directadmin-licensing/downloads)](https://packagist.org/packages/detain/myadmin-directadmin-licensing)
7+
[![License](https://poser.pugx.org/detain/myadmin-directadmin-licensing/license)](https://packagist.org/packages/detain/myadmin-directadmin-licensing)
48

5-
## Build Status and Code Analysis
9+
A MyAdmin plugin that integrates DirectAdmin license management into the billing and provisioning system. It supports selling, activating, deactivating, and managing both paid and free-tier DirectAdmin server and VPS licenses via the DirectAdmin API.
610

7-
Site | Status
8-
--------------|---------------------------
9-
![Travis-CI](http://i.is.cc/storage/GYd75qN.png "Travis-CI") | [![Build Status](https://travis-ci.org/detain/myadmin-directadmin-licensing.svg?branch=master)](https://travis-ci.org/detain/myadmin-directadmin-licensing)
10-
![CodeClimate](http://i.is.cc/storage/GYlageh.png "CodeClimate") | [![Code Climate](https://codeclimate.com/github/detain/myadmin-directadmin-licensing/badges/gpa.svg)](https://codeclimate.com/github/detain/myadmin-directadmin-licensing) [![Test Coverage](https://codeclimate.com/github/detain/myadmin-directadmin-licensing/badges/coverage.svg)](https://codeclimate.com/github/detain/myadmin-directadmin-licensing/coverage) [![Issue Count](https://codeclimate.com/github/detain/myadmin-directadmin-licensing/badges/issue_count.svg)](https://codeclimate.com/github/detain/myadmin-directadmin-licensing)
11-
![Scrutinizer](http://i.is.cc/storage/GYeUnux.png "Scrutinizer") | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/myadmin-plugins/directadmin-licensing/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/myadmin-plugins/directadmin-licensing/?branch=master) [![Code Coverage](https://scrutinizer-ci.com/g/myadmin-plugins/directadmin-licensing/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/myadmin-plugins/directadmin-licensing/?branch=master) [![Build Status](https://scrutinizer-ci.com/g/myadmin-plugins/directadmin-licensing/badges/build.png?b=master)](https://scrutinizer-ci.com/g/myadmin-plugins/directadmin-licensing/build-status/master)
12-
![Codacy](http://i.is.cc/storage/GYi66Cx.png "Codacy") | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/226251fc068f4fd5b4b4ef9a40011d06)](https://www.codacy.com/app/detain/myadmin-directadmin-licensing) [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/25fa74eb74c947bf969602fcfe87e349)](https://www.codacy.com/app/detain/myadmin-directadmin-licensing?utm_source=github.com&utm_medium=referral&utm_content=detain/myadmin-directadmin-licensing&utm_campaign=Badge_Coverage)
13-
![Coveralls](http://i.is.cc/storage/GYjNSim.png "Coveralls") | [![Coverage Status](https://coveralls.io/repos/github/detain/db_abstraction/badge.svg?branch=master)](https://coveralls.io/github/detain/myadmin-directadmin-licensing?branch=master)
14-
![Packagist](http://i.is.cc/storage/GYacBEX.png "Packagist") | [![Latest Stable Version](https://poser.pugx.org/detain/myadmin-directadmin-licensing/version)](https://packagist.org/packages/detain/myadmin-directadmin-licensing) [![Total Downloads](https://poser.pugx.org/detain/myadmin-directadmin-licensing/downloads)](https://packagist.org/packages/detain/myadmin-directadmin-licensing) [![Latest Unstable Version](https://poser.pugx.org/detain/myadmin-directadmin-licensing/v/unstable)](//packagist.org/packages/detain/myadmin-directadmin-licensing) [![Monthly Downloads](https://poser.pugx.org/detain/myadmin-directadmin-licensing/d/monthly)](https://packagist.org/packages/detain/myadmin-directadmin-licensing) [![Daily Downloads](https://poser.pugx.org/detain/myadmin-directadmin-licensing/d/daily)](https://packagist.org/packages/detain/myadmin-directadmin-licensing) [![License](https://poser.pugx.org/detain/myadmin-directadmin-licensing/license)](https://packagist.org/packages/detain/myadmin-directadmin-licensing)
11+
## Features
1512

13+
- Automated license provisioning when customers purchase DirectAdmin licenses
14+
- License activation and deactivation through the DirectAdmin API
15+
- IP address change support for migrating licenses between servers
16+
- Free-tier license management for qualifying VPS packages
17+
- OS type detection and mapping for license compatibility
18+
- Admin panel integration with license management menus and settings
19+
- Payment processing for newly created licenses
1620

1721
## Installation
1822

19-
Install with composer like
23+
Install with Composer:
2024

2125
```sh
2226
composer require detain/myadmin-directadmin-licensing
2327
```
2428

25-
## License
29+
## Usage
30+
31+
This package is designed to run within the MyAdmin hosting management platform. The `Plugin` class registers event hooks that the MyAdmin framework dispatches during license lifecycle operations.
32+
33+
### Plugin Registration
34+
35+
The plugin is auto-discovered by MyAdmin through Composer's plugin installer. It registers handlers for:
36+
37+
- `licenses.settings` -- Admin configuration fields (API credentials, stock settings)
38+
- `licenses.activate` / `licenses.reactivate` -- License provisioning on purchase
39+
- `licenses.deactivate` / `licenses.deactivate_ip` -- License cancellation
40+
- `function.requirements` -- Lazy-loading of procedural API functions
41+
42+
### Available Functions
43+
44+
| Function | Description |
45+
|---|---|
46+
| `get_directadmin_license_types()` | Returns supported OS type mappings |
47+
| `activate_directadmin()` | Creates and activates a paid license |
48+
| `deactivate_directadmin()` | Cancels an active license |
49+
| `get_directadmin_licenses()` | Lists all licenses on the account |
50+
| `get_directadmin_license_by_ip()` | Finds a license by IP address |
51+
| `directadmin_modify_os()` | Changes the OS type of a license |
52+
| `activate_free_license()` | Provisions a free-tier license |
53+
| `delete_free_license()` | Removes a free-tier license |
54+
55+
## Running Tests
2656

27-
The Directadmin Licensing Class class is licensed under the LGPL-v2.1 license.
57+
```sh
58+
composer install
59+
vendor/bin/phpunit
60+
```
61+
62+
To generate a coverage report:
63+
64+
```sh
65+
vendor/bin/phpunit --coverage-html build/coverage
66+
```
67+
68+
## License
2869

70+
This package is licensed under the [LGPL-2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) license.

composer.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "detain/myadmin-directadmin-licensing",
33
"type": "myadmin-plugin",
4-
"description": "Directadmin Licensing Class",
4+
"description": "DirectAdmin Licensing plugin for the MyAdmin ecosystem. Provides activation, deactivation, IP management, and OS modification for DirectAdmin server and VPS licenses.",
55
"keywords": [
66
"directadmin",
77
"administration",
@@ -25,16 +25,16 @@
2525
"detain/myadmin-plugin-installer": "dev-master"
2626
},
2727
"require-dev": {
28-
"phpunit/phpunit": "*",
29-
"phpunit/phpunit-mock-objects": "*",
30-
"vlucas/phpdotenv": "*",
31-
"codeclimate/php-test-reporter": "dev-master",
32-
"satooshi/php-coveralls": "*",
33-
"codacy/coverage": "dev-master"
28+
"phpunit/phpunit": "^9.6"
3429
},
3530
"autoload": {
3631
"psr-4": {
3732
"Detain\\MyAdminDirectadmin\\": "src/"
3833
}
34+
},
35+
"autoload-dev": {
36+
"psr-4": {
37+
"Detain\\MyAdminDirectadmin\\Tests\\": "tests/"
38+
}
3939
}
4040
}

phpunit.xml.dist

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.6/phpunit.xsd"
4+
bootstrap="vendor/autoload.php"
5+
colors="true"
6+
verbose="true"
7+
failOnRisky="true"
8+
failOnWarning="true"
9+
cacheResultFile=".phpunit.cache/test-results"
10+
>
11+
<testsuites>
12+
<testsuite name="default">
13+
<directory suffix="Test.php">tests</directory>
14+
</testsuite>
15+
</testsuites>
16+
17+
<coverage>
18+
<include>
19+
<directory suffix=".php">src</directory>
20+
</include>
21+
<report>
22+
<clover outputFile="build/logs/clover.xml"/>
23+
<html outputDirectory="build/coverage"/>
24+
<text outputFile="php://stdout"/>
25+
</report>
26+
</coverage>
27+
</phpunit>

0 commit comments

Comments
 (0)