Compare commits
3 Commits
d23311f5b0
...
082ab9a7ea
Author | SHA1 | Date |
---|---|---|
aardouin | 082ab9a7ea | |
aardouin | 8ce504a593 | |
Valentin Carroy | bc3a0886b0 |
|
@ -83,7 +83,7 @@ func (s *Server) submitHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if !verified {
|
if !verified && !s.config.DisableValidation {
|
||||||
slog.Debug("Invalid solution")
|
slog.Debug("Invalid solution")
|
||||||
http.Error(w, "Invalid solution", http.StatusBadRequest)
|
http.Error(w, "Invalid solution", http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
BaseUrl string `env:"ALTCHA_BASE_URL" envDefault:""`
|
BaseUrl string `env:"ALTCHA_BASE_URL" envDefault:""`
|
||||||
Port string `env:"ALTCHA_PORT" envDefault:"3333"`
|
Port string `env:"ALTCHA_PORT" envDefault:"3333"`
|
||||||
HmacKey string `env:"ALTCHA_HMAC_KEY"`
|
HmacKey string `env:"ALTCHA_HMAC_KEY"`
|
||||||
MaxNumber int64 `env:"ALTCHA_MAX_NUMBER" envDefault:"1000000"`
|
MaxNumber int64 `env:"ALTCHA_MAX_NUMBER" envDefault:"1000000"`
|
||||||
Algorithm string `env:"ALTCHA_ALGORITHM" envDefault:"SHA-256"`
|
Algorithm string `env:"ALTCHA_ALGORITHM" envDefault:"SHA-256"`
|
||||||
Salt string `env:"ALTCHA_SALT"`
|
Salt string `env:"ALTCHA_SALT"`
|
||||||
Expire string `env:"ALTCHA_EXPIRE" envDefault:"600"`
|
Expire string `env:"ALTCHA_EXPIRE" envDefault:"600"`
|
||||||
CheckExpire bool `env:"ALTCHA_CHECK_EXPIRE" envDefault:"1"`
|
CheckExpire bool `env:"ALTCHA_CHECK_EXPIRE" envDefault:"1"`
|
||||||
Debug bool `env:"ALTCHA_DEBUG" envDefault:"false"`
|
Debug bool `env:"ALTCHA_DEBUG" envDefault:"false"`
|
||||||
|
DisableValidation bool `env:"ATLCHA_DISABLE_VALIDATION" envDefault:"false"`
|
||||||
}
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
# K6 - Load Test
|
||||||
|
|
||||||
|
Very basic load testing script for [k6](https://k6.io/).
|
||||||
|
|
||||||
|
## How to run
|
||||||
|
|
||||||
|
```shell
|
||||||
|
k6 run -e LOAD_TEST_URL={altcha-api-url} TestChallenge.js
|
||||||
|
```
|
|
@ -0,0 +1,50 @@
|
||||||
|
import { check, group } from 'k6';
|
||||||
|
import http from 'k6/http'
|
||||||
|
|
||||||
|
export const options = {
|
||||||
|
scenarios: {
|
||||||
|
load: {
|
||||||
|
vus: 10,
|
||||||
|
iterations: 10,
|
||||||
|
executor: 'per-vu-iterations',
|
||||||
|
options: {
|
||||||
|
browser: {
|
||||||
|
type: 'chromium',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
http.setResponseCallback(
|
||||||
|
http.expectedStatuses(200)
|
||||||
|
);
|
||||||
|
|
||||||
|
export default function () {
|
||||||
|
|
||||||
|
let response;
|
||||||
|
|
||||||
|
group('Request challenge', function () {
|
||||||
|
|
||||||
|
response = http.get(`${__ENV.LOAD_TEST_URL}request`);
|
||||||
|
check(response, {
|
||||||
|
'is status 200': (r) => r.status === 200,
|
||||||
|
'Contenu souhaité': r => r.body.includes('algorithm') && r.body.includes('challenge') && r.body.includes('maxNumber') && r.body.includes('salt') && r.body.includes('signature'),
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
group('Verify challenge', function () {
|
||||||
|
|
||||||
|
const data = {"challenge":"d5656d52c5eadce5117024fbcafc706aad397c7befa17804d73c992d966012a8","salt":"8ec1b7ed694331baeb7416d9?expires=1727963398","signature":"781014d0a7ace7e7ae9d12e2d5c0204b60a8dbf42daa352ab40ab582b03a9dc6","number":219718,};
|
||||||
|
response = http.post(`${__ENV.LOAD_TEST_URL}verify`, JSON.stringify(data),
|
||||||
|
{
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
});
|
||||||
|
check(response, {
|
||||||
|
'is status 200': (r) => r.status === 200,
|
||||||
|
'Challenge verified': (r) => r.body.includes('true'),
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in New Issue