Projet Afflux

Aller au contenu | Aller au menu | Aller à la recherche

vendredi, mars 20 2009

Sortie des services additionnels en version 0.1

J'avais déjà parlé des services additionnels jabber pour changer son mot de passe jabber.

Le service de changement de mot de passe est pleinement fonctionnel, et la documentation de déploiment est désormais terminé. La version 0.1 peut donc sortir ! ;)

L'ensemble des méthodes sont documentés sur la page de l'API.

L'interface utilisateur qui exploite l'API est dans la version de développement du client web jabber.

En voici un aperçu : UI for password recovery

Vous pouvez vous rendre sur la documentation d'installation.

N'hésitez pas à signaler tout manque dans la documentation.

lundi, mars 2 2009

A la recherche d'un graphiste

Le projet Afflux recherche un graphiste (web designer) pour réaliser l'identité graphique du client web et du site Internet.
Si vous êtes intéressé, n'hésitez pas à nous contacter (contact@afflux-project.org) !

mercredi, janvier 21 2009

Retrieve your Jabber Password

When you lost your jabber's account password, what can you do ?

  1. You send one email to your server administrator and you prove your identity via email's field in your vcard. The administrator send your password to this email.
  2. You create a new jabber account ...

A new feature coming in Afflux's web client is the capability to retrieve your password. The server side is already available in the project Additional services client written in Python.

Jabber password recovery

More news soon ..

Retrouver son mot de passe Jabber

Si vous oubliez votre mot de passe jabber, vous faites comment vous ?

  1. Vous envoyez un email a l'administrateur de votre serveur. Vous devez lui prouvez votre identité. Si vous avez rempli un email dans votre vcard il vous envoie votre mot de passe sur cette adresse.
  2. Vous vous créer un nouveau compte ...

Une nouvelle fonctionnalité a venir dans le client web Afflux et donc la possibilité de retrouver son mot de passe. La partie serveur est déjà disponible dans le projet Additional services client écrite en Python.

Jabber password recovery

Plus d'informations bientôt ..

lundi, octobre 13 2008

Changement de framework de tests unitaires

Lorsque je cherchais un framework de tests unitaires en Javascript, j'avais découvert JsUnit et m'était empressé d'en parler.

Je ne le trouvais pas très pratique mais au moins le code était testé. La lassitude aidant et grâce à l'envie d'utiliser un clone de MozUnit, que j'utilise tous les jours, adapté au web, j'ai trouvé le framework de tests de Scriptaculous.

Lire la suite...

vendredi, août 22 2008

Tests unitaires avec JSMock

Désormais fervent utilisateur de JSUnit et de JSCoverage, il est désormais temps d'apprendre à utiliser JSMock.

JSMock crée automatiquement des mocks a partir d'un objet. Il est ainsi possible de tester l'ordre dans lesquelles les fonctions sont appellé, les arguments passé, renvoyé des valeurs ou encore exécuter des actions.

Regardons ce code:

xmpp.Client = function() {
};
xmpp.Client.prototype = {
    connect: function(jid, pass) {
    }
};
afflux.Connexion = function(client) {
    client.connect(new xmpp.protocol.Jid(), "");
}

Pour tester que la fonction afflux.Connexion passe bien les bon arguments a la méthode connect, on peut utiliser JSMock.

var mockControl = new MockControl();
var mockClient = mockControl.createMock(xmpp.Client);
mockClient.expects().connect(TypeOf.isA(xmpp.protocol.Jid), "");
afflux.Connexion(mockClient);
mockControl.verify();

Si la méthode client.connect est appelé avec de mauvais arguments, JSMock renverra une exception.

Le code précédent encapsulé dans un test JSUnit permetra de bien tester votre code.

JSMock avec JQuery

Si vous désirez tester la manipulation du DOM dans vos tests, vous devriez probablement utiliser JQuery. JQuery est très agréable a utiliser grace à une API élégante.

Pour cacher l'élément avec l'ID afflux

function cache() {
    $("#afflux").hide();
}

Pour tester le code précédent, il est nécessaire de faire un peu de tuyauterie.

Transformons d'abord le code précédent pour le rendre plus testable.

function cache(manipulator) {
    manipulator("#afflux").hide();
}

Ensuite dans votre cas de test:

var mockControl = null;
var mockJquery = null;
function setUp() {
    mockControl = new MockControl();
    mockJquery = mockControl.createMock(jQuery.fn);
}
function testCache() {
    var manipulator = function(selector) {
        assertEquals("#afflux", selector);
        return mockJquery;
    }
    mockJquery.expects().hide();
    cache(manipulator);
    mockControl.verify();
}

En simulant le selecteur de Jquery et en le passant à la classe que l'on désirer tester, on peut vérifier la simulation du DOM.

Si vous vous demandez comment tester JQuery, c'est un autre problème.

samedi, août 9 2008

Migration vers Redmine terminée

La migration vers Redmine s'est bien déroulée. Les projets ont créés.

Vous pouvez désormais admirez le nouveau afflux-project.org.

Si vous désirez participez au projet, nous serons heureux de vous accueillir, L'infrastructure est prête !

lundi, août 4 2008

Migration vers Redmine

La sympathique page d'accueil du projet Afflux voit ses derniers internautes, de même que d.a-p.o. Tout ceci va migrer vers Redmine.

Le choix a été vite fait. Sa prise en charge des sous-projet, sa page d'accueil personnalisable, son support de nombreux SCM et toutes les joyeuseté de Trac on tué toute concurrence.

La migration est prévue pour cette semaine, restez a l'écoute !

Tests unitaires en Javascript avec JSUnit

Si vous êtes fan de TDD (Développement guidé par les tests) et accessoirement développeur Javascript, il vous ait probablement arrivé de vous demander comment exécuter des tests unitaires en Javascript.

Il faut reconnaitre qu'en javascript, le paysage d'exécuteur de tests unitaire est pauvre.

Au hasard de vos pérégrinations, vous vous pencherez probablement sur JSUnit.

Lire la suite...

samedi, juillet 26 2008

Namespaces en Javascript

Lors du développement d'une application Web, le Javascript prend beaucoup de place, et le contexte global se retrouve rapidement saturé.

La solution pour cela est de créer des namespaces. Des faux évidemment, ce concept n'existe pas dans Javascript 1.x.

Les namespaces peuvent êtres simulé avec des fonctions.

/**
 * @namespace Namespace xmpp
 */
function xmpp(){}
/**
 * @constructor
 */
xmpp.Client = function() {
};
xmpp.Client.prototype = function() {
    connect: function() {
    }
}

Pour instancier un objet de type Client

var client = new xmpp.Client();
client.connect();

Il devient plus facile de structurer votre code par namespaces. Il devient également plus lisible.

Cependant si vous créer souvant des instances de xmpp.Client vous trouverez rébarbatif de le répéter à chaque fois. La solution peut-être d'utiliser une référence.

var Client = xmpp.Client;
var c = new Client();
c.connect();

Le fait de créer des namespaces permet de créer plus facilement des librairies. Vous aurez tendance à bien vouloir séparer votre code lorsque vous devrez appeler une fonction ou un objet.

Le système a toutefois ses limites. Vous devez obligatoirement préfixer les fonctions et les class par l'espace de nom.

xmpp.Client = function() {
};
xmpp.ClientParams = function() {
}
new xmpp.Client();

Le résultat peut être très verbeux.

Javascript 2 qui introduit un véritable système d'espace de nom résout en partie le problème.

namespace xmpp
 
xmpp class Client {
}
xmpp class ClientParams{
}
 
use namespace xmpp;
new Client();

Lors de l'instanciation de la class Client vous n'avez plus besoin de préfixre l'appel par xmpp si vous utilisez use namespace. Le mécanisme avec le mot clef import paraît relativement similaire.

Mais en attendant Javascript 2, et à moins d'utiliser ce traducteur javascript 2 -> Javascript 1.2, le système de namespace à base de fonctions et de bouts de ficelles est utile !

- page 1 de 2