Completed
Push — master ( 74c045...3a5649 )
by
unknown
01:24
created

SparkleViewTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 157
Duplicated Lines 28.66 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
dl 45
loc 157
rs 10
c 2
b 0
f 0
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A test_sparkle_with_dsa_signature() 20 23 1
A setUp() 2 3 1
A test_sparkle() 21 22 1
B test_sparkle_critical_on_other_channel() 0 42 1
A test_sparkle_critical() 0 60 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

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 django.test import TestCase
22
from django.test.client import Client
23
from django.core.urlresolvers import reverse
24
from django.core.files.uploadedfile import SimpleUploadedFile
25
26
from xmlunittest import XmlTestMixin
27
from freezegun import freeze_time
28
29
from omaha.tests.utils import temporary_media_root
30
from omaha.tests import OverloadTestStorageMixin
31
from omaha.factories import ApplicationFactory, ChannelFactory
32
33
from sparkle.models import SparkleVersion
34
from sparkle.tests import fixtures
35
from sparkle.factories import SparkleVersionFactory
36
37
38
class SparkleViewTest(OverloadTestStorageMixin, TestCase, XmlTestMixin):
39
    model = SparkleVersion
40
    def setUp(self):
41 View Code Duplication
        self.client = Client()
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
42
        super(SparkleViewTest, self).setUp()
43
44
    @freeze_time('2014-10-14 08:28:05')
45
    @temporary_media_root(MEDIA_URL='http://cache.pack.google.com/edgedl/chrome/install/782.112/')
46
    def test_sparkle(self):
47
        app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
48
        channel = ChannelFactory.create(name='stable')
49
        obj = SparkleVersionFactory.create(
50
            app=app,
51
            channel=channel,
52
            version='782.112',
53
            short_version='13.0.782.112',
54
            file=SimpleUploadedFile('./chrome.dmg', b'_' * 23963192),
55
            file_size=23963192)
56
        obj.save()
57
58
        response = self.client.get(reverse('sparkle_appcast', args=(app.name, channel.name)),
59
                                   HTTP_HOST='example.com')
60
61
        self.assertEqual(response.status_code, 200)
62
63
        self.assertXmlDocument(response.content)
64 View Code Duplication
        self.assertXmlEquivalentOutputs(response.content,
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
65
                                        fixtures.response_sparkle)
66
67
    @freeze_time('2014-10-14 08:28:05')
68
    @temporary_media_root(MEDIA_URL='http://cache.pack.google.com/edgedl/chrome/install/782.112/')
69
    def test_sparkle_with_dsa_signature(self):
70
        app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C9C}', name='chrome_dsa')
71
        channel = ChannelFactory.create(name='stable')
72
        obj = SparkleVersionFactory.create(
73
            app=app,
74
            channel=channel,
75
            version='782.112',
76
            short_version='13.0.782.112',
77
            dsa_signature='MCwCFCdoW13VBGJWIfIklKxQVyetgxE7AhQTVuY9uQT0KOV1UEk21epBsGZMPg==',
78
            file=SimpleUploadedFile('./chrome.dmg', b'_' * 23963192),
79
            file_size=23963192)
80
        obj.save()
81
82
        response = self.client.get(reverse('sparkle_appcast', args=(app.name, channel.name)),
83
                                   HTTP_HOST='example.com')
84
85
        self.assertEqual(response.status_code, 200)
86
87
        self.assertXmlDocument(response.content)
88
        self.assertXmlEquivalentOutputs(fixtures.response_sparkle_with_dsa,
89
                                        response.content)
90
91
    @freeze_time('2014-10-14 08:28:05')
92
    @temporary_media_root(MEDIA_URL='http://cache.pack.google.com/edgedl/chrome/install/782.112/')
93
    def test_sparkle_critical(self):
94
        app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
95
        channel = ChannelFactory.create(name='stable')
96
        first_version = SparkleVersionFactory.create(
97
            app=app,
98
            channel=channel,
99
            version='782.110',
100
            short_version='13.0.782.110',
101
            file=SimpleUploadedFile('./chrome1.dmg', b'_' * 23963192),
102
            file_size=23963192)
103
        first_version.save()
104
105
        first_crit_version = SparkleVersionFactory.create(
106
            app=app,
107
            channel=channel,
108
            version='782.111',
109
            short_version='13.0.782.111',
110
            is_critical=True,
111
            file=SimpleUploadedFile('./chrome2.dmg', b'_' * 23963192),
112
            file_size=23963192)
113
        first_crit_version.save()
114
115
        last_version = SparkleVersionFactory.create(
116
            app=app,
117
            channel=channel,
118
            version='782.112',
119
            short_version='13.0.782.112',
120
            file=SimpleUploadedFile('./chrome3.dmg', b'_' * 23963192),
121
            file_size=23963192)
122
        last_version.save()
123
124
        second_crit_version = SparkleVersionFactory.create(
125
            app=app,
126
            channel=channel,
127
            version='782.113',
128
            short_version='13.0.782.113',
129
            is_critical=True,
130
            file=SimpleUploadedFile('./chrome4.dmg', b'_' * 23963192),
131
            file_size=23963192)
132
        second_crit_version.save()
133
134
        response = self.client.get("%s?appVersionShort=13.0.782.110" % reverse('sparkle_appcast', args=(app.name, channel.name)),
135
                                   HTTP_HOST='example.com')
136
137
        self.assertEqual(response.status_code, 200)
138
139
        self.assertXmlDocument(response.content)
140
        self.assertXmlEquivalentOutputs(response.content,
141
                                        fixtures.first_crit_response_sparkle)
142
143
        response = self.client.get("%s?appVersionShort=13.0.782.111" % reverse('sparkle_appcast', args=(app.name, channel.name)),
144
                                   HTTP_HOST='example.com')
145
146
        self.assertEqual(response.status_code, 200)
147
148
        self.assertXmlDocument(response.content)
149
        self.assertXmlEquivalentOutputs(response.content,
150
                                        fixtures.second_crit_response_sparkle)
151
152
153
    @freeze_time('2014-10-14 08:28:05')
154
    @temporary_media_root(MEDIA_URL='http://cache.pack.google.com/edgedl/chrome/install/782.112/')
155
    def test_sparkle_critical_on_other_channel(self):
156
        app = ApplicationFactory.create(id='{D0AB2EBC-931B-4013-9FEB-C9C4C2225C8C}', name='chrome')
157
        channel = ChannelFactory.create(name='stable')
158
        channel2 = ChannelFactory.create(name='beta')
159
        first_version = SparkleVersionFactory.create(
160
            app=app,
161
            channel=channel,
162
            version='782.110',
163
            short_version='13.0.782.110',
164
            file=SimpleUploadedFile('./chrome0.dmg', b'_' * 23963192),
165
            file_size=23963192)
166
        first_version.save()
167
168
        first_crit_version = SparkleVersionFactory.create(
169
            app=app,
170
            channel=channel2,
171
            version='782.111',
172
            short_version='13.0.782.111',
173
            is_critical=True,
174
            file=SimpleUploadedFile('./chrome2.dmg', b'_' * 23963192),
175
            file_size=23963192)
176
        first_crit_version.save()
177
178
        last_version = SparkleVersionFactory.create(
179
            app=app,
180
            channel=channel,
181
            version='782.112',
182
            short_version='13.0.782.112',
183
            file=SimpleUploadedFile('./chrome.dmg', b'_' * 23963192),
184
            file_size=23963192)
185
        last_version.save()
186
187
        response = self.client.get("%s?appVersionShort=13.0.782.111" % reverse('sparkle_appcast', args=(app.name, channel.name)),
188
                                   HTTP_HOST='example.com')
189
190
        self.assertEqual(response.status_code, 200)
191
192
        self.assertXmlDocument(response.content)
193
        self.assertXmlEquivalentOutputs(response.content,
194
                                        fixtures.response_sparkle)
195