BuilderTest.test_get_version()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 15
rs 9.4285
c 0
b 0
f 0
1
# coding: utf8
2
3
"""
4
This software is licensed under the Apache 2 license, quoted below.
5
6
Copyright 2014 Crystalnix Limited
7
8
Licensed under the Apache License, Version 2.0 (the "License"); you may not
9
use this file except in compliance with the License. You may obtain a copy of
10
the License at
11
12
    http://www.apache.org/licenses/LICENSE-2.0
13
14
Unless required by applicable law or agreed to in writing, software
15
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
17
License for the specific language governing permissions and limitations under
18
the License.
19
"""
20
21
from datetime import datetime
22
from uuid import UUID
23
from bitmapist import mark_event
24
25
from django.test import TestCase
26
from django.core.files.uploadedfile import SimpleUploadedFile
27
28
from omaha.tests.utils import temporary_media_root
29
30
from omaha.factories import VersionFactory
31
from omaha.builder import get_version
32
from omaha.models import PartialUpdate, Version, Channel, ACTIVE_USERS_DICT_CHOICES
33
from omaha.utils import redis, get_id
34
35
36
@temporary_media_root()
37
class BuilderTest(TestCase):
38
    def setUp(self):
39
        redis.flushdb()
40
41
    def tearDown(self):
42
        redis.flushdb()
43
44
    def test_get_version(self):
45
        userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}'
46
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))
47
48
        self.assertEqual(version, get_version(version.app.pk,
49
                                              version.platform.name,
50
                                              version.channel.name,
51
                                              '36.0.2062.124',
52
                                              userid))
53
54
        self.assertEqual(version, get_version(version.app.pk,
55
                                              version.platform.name,
56
                                              version.channel.name,
57
                                              '',
58
                                              userid))
59
60 View Code Duplication
    def test_get_version_partial_update(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
61
        userid = "{%s}" % UUID(int=1)
62
        userid_beta = "{%s}" % UUID(int=40)
63
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))
64
        version_beta = Version.objects.create(
65
            file=SimpleUploadedFile('./chrome_installer.exe', b''),
66
            app=version.app,
67
            platform=version.platform,
68
            channel=version.channel,
69
            version='39.0.0.0',
70
        )
71
72
        PartialUpdate.objects.create(version=version_beta,
73
                                     percent=5,
74
                                     start_date=datetime.now(),
75
                                     end_date=datetime.now(),
76
                                     active_users=ACTIVE_USERS_DICT_CHOICES['all'])
77
78
        self.assertEqual(version, get_version(version.app.pk,
79
                                              version.platform.name,
80
                                              version.channel.name,
81
                                              '36.0.2062.124',
82
                                              userid))
83
84
        self.assertEqual(version_beta, get_version(version.app.pk,
85
                                                   version.platform.name,
86
                                                   version.channel.name,
87
                                                   '36.0.2062.124',
88
                                                   userid_beta))
89
90
    def test_get_app_version_channel(self):
91
        userid = '{D0BBD725-742D-44ae-8D46-0231E881D58E}'
92
        channel_beta = Channel.objects.create(name="beta")
93
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))
94
        version_beta = Version.objects.create(
95
            file=SimpleUploadedFile('./chrome_installer.exe', b''),
96
            app=version.app,
97
            platform=version.platform,
98
            channel=channel_beta,
99
            version='39.0.0.0',
100
        )
101
102
        self.assertEqual(version_beta, get_version(version.app.pk,
103
                                              version.platform.name,
104
                                              channel_beta.name,
105
                                              '',
106
                                              userid))
107
108 View Code Duplication
    def test_get_app_version_exlude_new_users(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
109
        userid = "{%s}" % UUID(int=1)
110
        userid_beta = "{%s}" % UUID(int=40)
111
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))
112
        version_beta = Version.objects.create(
113
            file=SimpleUploadedFile('./chrome_installer.exe', b''),
114
            app=version.app,
115
            platform=version.platform,
116
            channel=version.channel,
117
            version='39.0.0.0',
118
        )
119
120
        PartialUpdate.objects.create(version=version_beta,
121
                                     percent=5,
122
                                     start_date=datetime.now(),
123
                                     end_date=datetime.now(),
124
                                     active_users=ACTIVE_USERS_DICT_CHOICES['all'])
125
126
        self.assertEqual(version, get_version(version.app.pk,
127
                                              version.platform.name,
128
                                              version.channel.name,
129
                                              '36.0.2062.124',
130
                                              userid))
131
132
        self.assertEqual(version_beta, get_version(version.app.pk,
133
                                                   version.platform.name,
134
                                                   version.channel.name,
135
                                                   '36.0.2062.124',
136
                                                   userid_beta))
137
138
        self.assertEqual(version, get_version(version.app.pk,
139
                                              version.platform.name,
140
                                              version.channel.name,
141
                                              '',
142
                                              userid_beta))
143
144
    def test_get_app_version_active_users(self):
145
        userid = "{%s}" % UUID(int=1)
146
        userid_beta = "{%s}" % UUID(int=40)
147
        userid_beta_not_active = "{%s}" % UUID(int=60)
148
        version = VersionFactory.create(file=SimpleUploadedFile('./chrome_installer.exe', b''))
149
        version_beta = Version.objects.create(
150
            file=SimpleUploadedFile('./chrome_installer.exe', b''),
151
            app=version.app,
152
            platform=version.platform,
153
            channel=version.channel,
154
            version='39.0.0.0',
155
        )
156
157
158
        id = get_id(userid_beta)
159
        mark_event('request', id)
160
161
        PartialUpdate.objects.create(version=version_beta,
162
                                     percent=5,
163
                                     start_date=datetime.now(),
164
                                     end_date=datetime.now())
165
166
        self.assertEqual(version, get_version(version.app.pk,
167
                                              version.platform.name,
168
                                              version.channel.name,
169
                                              '36.0.2062.124',
170
                                              userid))
171
172
        self.assertEqual(version_beta, get_version(version.app.pk,
173
                                                   version.platform.name,
174
                                                   version.channel.name,
175
                                                   '36.0.2062.124',
176
                                                   userid_beta))
177
178
        self.assertEqual(version, get_version(version.app.pk,
179
                                              version.platform.name,
180
                                              version.channel.name,
181
                                              '36.0.2062.124',
182
                                              userid_beta_not_active))
183