summary refs log tree commit diff
path: root/syweb/webclient/test/unit/register-controller.spec.js
blob: b5c7842358c20120fb5bc691b97230dc602ccf09 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
describe("RegisterController ", function() {
    var rootScope, scope, ctrl, $q, $timeout;
    var userId = "@foo:bar";
    var displayName = "Foo";
    var avatarUrl = "avatar.url";
    
    window.webClientConfig = {
        useCapatcha: false
    };
    
    // test vars
    var testRegisterData, testFailRegisterData;
    
    
    // mock services
    var matrixService = {
        config: function() {
            return {
                user_id: userId
            }
        },
        setConfig: function(){},
        register: function(mxid, password, threepidCreds, useCaptcha) {
            var d = $q.defer();
            if (testFailRegisterData) {
                d.reject({
                    data: testFailRegisterData
                });
            }
            else {
                d.resolve({
                    data: testRegisterData
                });
            }
            return d.promise;
        }
    };
    
    var eventStreamService = {};
    
    beforeEach(function() {
        module('matrixWebClient');
        
        // reset test vars
        testRegisterData = undefined;
        testFailRegisterData = undefined;
    });

    beforeEach(inject(function($rootScope, $injector, $location, $controller, _$q_, _$timeout_) {
            $q = _$q_;
            $timeout = _$timeout_;
            scope = $rootScope.$new();
            rootScope = $rootScope;
            routeParams = {
                user_matrix_id: userId
            };
            ctrl = $controller('RegisterController', {
                '$scope': scope,
                '$rootScope': $rootScope, 
                '$location': $location,
                'matrixService': matrixService,
                'eventStreamService': eventStreamService
            });
        })
    );

    // SYWEB-109
    it('should display an error if the HS rejects the username on registration', function() {
        var prevFeedback = angular.copy(scope.feedback);
    
        testFailRegisterData = {
            errcode: "M_UNKNOWN",
            error: "I am rejecting you."
        };
    
        scope.account.pwd1 = "password";
        scope.account.pwd2 = "password";
        scope.account.desired_user_id = "bob";
        scope.register(); // this depends on the result of a deferred
        rootScope.$digest(); // which is delivered after the digest
        
        expect(scope.feedback).not.toEqual(prevFeedback);
    });
});